Sie sind nicht angemeldet.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich
  • »linuxerr« ist der Autor dieses Themas

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

1

14.07.2010, 16:41

[gelöst] transparente firewall + proxy ????

hallo,

ich habe momentan folgendes problem:
ausgangssituation:
in einem netz befinden sich mehrere arbeitsplatzrechner im netz 192.168.0.0/24.
es ist ein dsl-router vom anbieter installiert worden (192.168.0.1) über den die arbeitsplätze internetkontakt erhalten.
die interne ip-adresse des routers kann nur der anbieter wechseln und das scheint nicht so einfach zu sein, denn wenn man mal was ändern will (vertrag, wohnungswechsel etc) dann kann man fix mal eine woche ohne internetkontakt dasitzen.
die ips der arbeitsplätze können auch nicht geändert werden, da eine anwendersoftware installiert ist, die sich bei der installation auf eine feste ip eingerichtet hat.

ich möchte nun eine transparente firewall einfüben, die das netz absichert. dazu habe ich mir erst einmal eine bridge gebaut und testweise ein paar firewallregeln definiert.
es ist damit möglich, vom internen netz auf das inet (erst einmal auf port 80 beschränkt) zuzugreifen, soweit so gut.
hier das script:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash

# Hilfsprogramme
IFCONFIG=/sbin/ifconfig
BRCTL=/usr/sbin/brctl
IPTABLES=/usr/sbin/iptables

function forward_on {
 echo 1 > /proc/sys/net/ipv4/ip_forward
}

function forward_off {
 echo 0 > /proc/sys/net/ipv4/ip_forward
}

function create_bridge {
 ${IFCONFIG} eth0 down
 ${IFCONFIG} eth1 down
 # setze eth0 in den promiscuous-mode
 ${IFCONFIG} eth0 0.0.0.0 up -arp
 # setze eth1 in den promiscuous-mode
 ${IFCONFIG} eth1 0.0.0.0 up -arp
 # definiere die bridge
 ${BRCTL} addbr br0
 # binde die netzwerkkarten an die bridge
 ${BRCTL} addif br0 eth0
 ${BRCTL} addif br0 eth1

 ${IFCONFIG} br0 0.0.0.0 up -arp
 # loeschen der Filterregeln
 ${IPTABLES} -F
 ${IPTABLES} -t nat -F
 # setzen der default-Regeln
 ${IPTABLES} -P FORWARD DROP
 ${IPTABLES} -P INPUT DROP
 ${IPTABLES} -P OUTPUT DROP
 # ping zulassen
 ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "ICMP "
 ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in eth1 -j ACCEPT
 # nameserveranfragen zulassen
 ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 53 -m physdev --physdev-in eth1 -j ACCEPT
 ${IPTABLES} -A FORWARD -p udp -d 192.168.0.1 --dport 53 -m physdev --physdev-in eth1 -j ACCEPT
 # freier WEB-Zugriff
 ${IPTABLES} -A FORWARD -p tcp --dport 80 -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "HTTP "
 ${IPTABLES} -A FORWARD -p tcp --dport 80 -m physdev --physdev-in eth1 -j ACCEPT
 # proxyanfragen zulassen
# ${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "PROXY "
# ${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j DNAT --to-destination 127.0.0.1:80
# ${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j REDIRECT --to-ports 80
# # nur antwortpakete von aussen durchlassen
 ${IPTABLES} -A FORWARD -m state --state ESTABLISHED,RELATED -m physdev --physdev-in eth0 -j ACCEPT
 ${IPTABLES} -A FORWARD -j LOG --log-level debug --log-prefix "FWDROP "
 ${IPTABLES} -A FORWARD -j DROP
# ${IPTABLES} -t nat -A PREROUTING -j LOG --log-level debug --log-prefix "PR "
}


1. problem
nun möchte ich den http-verkehr durch einen transparenten proxy auf der maschine leiten. dazu habe ich die entsprechenden forwardingregeln für dport 80 entfernt und durch

Quellcode

1
2
 ${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "PROXY "
${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j REDIRECT --to-ports 8888

ersetzt. in der logdatei tauchen auch die entsprechenden einträge bei einer http-anfrage auf, aber beim proxy (transparent, horcht auf 127.0.0.1:8888) kommt nichts an.
leider habe ich keine ahnung wieso. normalerweise werden die pakete durch ein redirect ja auf ein locales port umgeleitet, geht das aus einer bridge heraus so nicht?
problematisch ist ja ebenfalls, das wenn die anfrage beim proxyprozess ankommt, dieser ja die webseite wieder mit der ursprünglichen source-ip kontaktieren müsste, der proxy also nur wie ein filter in der netzwerkverbindung durch die bridge hindurch funktionieren soll.

2. problem
zu wartungszwecken möchte ich remotezugang auf die firewall über ssh. brauche ich dazu ein weiteres eth-device, das ich mit einer internen adresse versehe oder geht das direkt aus der transparenten firewall heraus???

dazwischen soll nun eine firewall eingefügt werden
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich
  • »linuxerr« ist der Autor dieses Themas

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

2

14.07.2010, 19:59

RE: transparente firewall + proxy ????

so, problem 2 ist gelöst, der proxy verhält sich transparent und ist gleichzeitig als host im netz sichtbar, das gibt mir die möglichkeit ihn für den service zu kontaktieren. problem 1 hab ich noch nicht gelöst, mal schauen.
wen es interessiert, hier der arbeitsstand bisher

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/bash

# Hilfsprogramme
IFCONFIG=/sbin/ifconfig
BRCTL=/usr/sbin/brctl
IPTABLES=/usr/sbin/iptables

function forward_on {
 echo 1 > /proc/sys/net/ipv4/ip_forward
}

function forward_off {
 echo 0 > /proc/sys/net/ipv4/ip_forward
}

function create_bridge {
 ${IFCONFIG} eth0 down
 ${IFCONFIG} eth1 down
 # setze eth0 in den promiscuous-mode
 ${IFCONFIG} eth0 0.0.0.0 up -arp
 # setze eth1 in den promiscuous-mode
 ${IFCONFIG} eth1 0.0.0.0 up -arp
 # definiere die bridge
 ${BRCTL} addbr br0
 # binde die netzwerkkarten an die bridge
 ${BRCTL} addif br0 eth0
 ${BRCTL} addif br0 eth1

 ${IFCONFIG} br0 192.168.0.223 netmask 255.255.255.0 up
 # loeschen der Filterregeln
 ${IPTABLES} -F
 ${IPTABLES} -t nat -F
 # setzen der default-Regeln
 ${IPTABLES} -P FORWARD DROP
 ${IPTABLES} -P INPUT DROP
 ${IPTABLES} -P OUTPUT ACCEPT
# # input eth0 
# ${IPTABLES} -A INPUT -i eth0 -j LOG --log-level debug --log-prefix "IN_eth0 " 
# ${IPTABLES} -A INPUT -i eth0 -j ACCEPT 
# # output eth0
# ${IPTABLES} -A OUTPUT -o eth0 -j LOG --log-level debug --log-prefix "OUT_eth0 "
# ${IPTABLES} -A OUTPUT -o eth0 -j ACCEPT

 # Kontakt des localen host nach aussen
 # input br0 
 ${IPTABLES} -A INPUT -i br0 -j LOG --log-level debug --log-prefix "IN_br0 "
 ${IPTABLES} -A INPUT -i br0 -j ACCEPT
 # output br0
 ${IPTABLES} -A OUTPUT -o br0 -j LOG --log-level debug --log-prefix "OUT_br0 "
 ${IPTABLES} -A OUTPUT -o br0 -j ACCEPT

 # ping forwarding von eth1->eth0 zulassen
 ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in eth1 -m physdev --physdev-out eth0 -j LOG --log-level debug --log-prefix "FWD_ICMP0 "
 ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in eth1 -m physdev --physdev-out eth0 -j ACCEPT

 # ping forwarding von eth0->eth1 zulassen
# ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in eth0 -m physdev --physdev-out eth1 -j LOG --log-level debug --log-prefix "FWD_ICMP1 "
# ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in eth0 -m physdev --physdev-out eth1 -j ACCEPT

 # nameserveranfragen an eth1 fuer master-bind cgi1 nach eth0 forwarden
 ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 53 -m physdev --physdev-in eth1 -j ACCEPT
 ${IPTABLES} -A FORWARD -p udp -d 192.168.0.1 --dport 53 -m physdev --physdev-in eth1 -j ACCEPT

# # httpanfragen an eth1 fuer asterix nach eth0 forwarden
# # Zugriff auf ASTERIX WEB
# ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.7 --dport 80 -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "WWWASTERIX "
# ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.7 --dport 80 -m physdev --physdev-in eth1 -j ACCEPT

 # httpanfragen an eth1 fuer cgi1 nach eth0 forwarden
 # zugriff auf CGI1 WEB
# ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 80 -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "WWWCGI1 "
# ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 80 -m physdev --physdev-in eth1 -j ACCEPT
 # httpproxyanfragen an eth1 fuer cgi1 nach eth0 forwarden
 # zugriff auf CGI1 SQUID
 ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 3128 -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "SQUIDCGI1 "
 ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 3128 -m physdev --physdev-in eth1 -j ACCEPT
 # httpanfragen an eth1 nach eth0 forwarden
 # freier WEB-Zugriff
 ${IPTABLES} -A FORWARD -p tcp --dport 80 -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "HTTP "
 ${IPTABLES} -A FORWARD -p tcp --dport 80 -m physdev --physdev-in eth1 -j ACCEPT
 # proxyanfragen zulassen
# ${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "PROXY "
# ${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j DNAT --to-destination 127.0.0.1:80
# ${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j REDIRECT --to-ports 80
# ${IPTABLES} -t nat -A POSTROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j LOG --log-level debug --log-prefix "PROXY "
# ${IPTABLES} -t nat -A POSTROUTING -p tcp --dport 80 -m physdev --physdev-in eth1 -j DNAT --to-destination 127.0.0.1:8888
# ${IPTABLES} -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# # nur antwortpakete von aussen durchlassen
 ${IPTABLES} -A FORWARD -m state --state ESTABLISHED,RELATED -m physdev --physdev-in eth0 -j ACCEPT
 ${IPTABLES} -A FORWARD -j LOG --log-level debug --log-prefix "FWDROP "
 ${IPTABLES} -A FORWARD -j DROP
# ${IPTABLES} -t nat -A PREROUTING -j LOG --log-level debug --log-prefix "PR "
}

function del_bridge {
 ${IPTABLES} -F
 ${IPTABLES} -t nat -F
 ${IFCONFIG} br0 0.0.0.0 down
 ${BRCTL} delif br0 eth0
 ${BRCTL} delif br0 eth1
 ${BRCTL} delbr br0
 ${IFCONFIG} eth1 down arp
 ${IFCONFIG} eth0 down arp
 ${IPTABLES} -P FORWARD ACCEPT
 ${IPTABLES} -P INPUT ACCEPT
 ${IPTABLES} -P OUTPUT ACCEPT

}

case "$1" in
 'start')
  forward_on
  create_bridge
 ;;
 'stop'|'stopp')
  del_bridge
  forward_off
 ;;
 'restart')
   del_bridge
   create_bridge
 ;;
 'status')
   ${BRCTL} show br0
 ;;
 *)
  echo "Unbekannte Option $1!"
  echo "Bitte benutzen Sie /etc/rc.d/rc.bridge start|stop|stopp|restart|status"
 ;;
esac
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich
  • »linuxerr« ist der Autor dieses Themas

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

3

14.07.2010, 20:15

RE: transparente firewall + proxy ????

so, der proxy funktioniert auch bestens, man soll eben nicht zu schnell irgendwo posten.
mein hauptproblem war eigentlich, das ich in meinem hauptrechner (gateway, nameserver, proxy etc) einen mac-filter betreibe und die transparente firewall meldet sich ja nun mit der mac der bridge und die kannte der noch nicht ............... nun ja, schweigen wir lieber :crazy:
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich
  • »linuxerr« ist der Autor dieses Themas

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

4

14.07.2010, 23:42

RE: transparente firewall + proxy ????

so, die vorläufige endversion ist fertig, war im nachhinein gar nicht so schwierig.
es funktioniert alles perfekt, das teil arbeitet transparent ist trotzdem über eine ip aus beiden netzwerkteilen erreichbar und läuft stabil.
im anhang habe ich ein abzug des scriptes, denn das hineincopieren in diese winzige editorfenster macht keinen spass.

so, ich habe mich doch noch dazu entschlossen, den code hier direkt reinzustellen, da gäste weder bilder noch uploads sehen können.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/bin/bash
# Erstellt von Frank Schlaefendorf
# Erstellt am 13.07.2010
# letzte Aenderung am 15.07.2010
# Das Script erzeugt auf einem Host mit zwei Netzwerkkarten eine
# transparente Firewall-Bridge,
# Diese trennt das Clientennetz transparent vom Internetgateway.
#

# Variablen zur Konfiguration
BRIDGE_IP=192.168.0.223
BRIDGE_NETZMASKE=255.255.255.0
# eth-Device zu den Clients
BRIDGE_DEV_GREEN=eth1
# eth-Device zum Router
BRIDGE_DEV_RED=eth0
BRIDGE_NAME=br0
# route zum internetgateway
BRIDGE_DEFAULTGW=192.168.0.1
# Logging yes/no
LOGGING="no"

# Hilfsprogramme
IFCONFIG=/sbin/ifconfig
BRCTL=/usr/sbin/brctl
IPTABLES=/usr/sbin/iptables
ROUTE=/sbin/route

function log {
 if [ "${LOGGING}" == "yes" ]; then
  return 0
 else
  return 1
 fi
}  
   
function forward_on {
 echo 1 > /proc/sys/net/ipv4/ip_forward
}
 
function forward_off {
 echo 0 > /proc/sys/net/ipv4/ip_forward
}
 
function proxy_arp {
 echo 1 > /proc/sys/net/ipv4/conf/$1/proxy_arp
}
 
function create_bridge {
 ${IFCONFIG} ${BRIDGE_DEV_GREEN} down
 ${IFCONFIG} ${BRIDGE_DEV_RED} down  
 # setze BRIGDE_DEV_RED in den -arp-mode
 ${IFCONFIG} ${BRIDGE_DEV_RED} 0.0.0.0 up -arp
 # setze BRIDGE_DEV_GREEN in den -arp-mode
 ${IFCONFIG} ${BRIDGE_DEV_GREEN} 0.0.0.0 up -arp
 # definiere die bridge
 ${BRCTL} addbr ${BRIDGE_NAME}
 # binde die netzwerkkarten an die bridge
 ${BRCTL} addif ${BRIDGE_NAME} ${BRIDGE_DEV_RED}
 ${BRCTL} addif ${BRIDGE_NAME} ${BRIDGE_DEV_GREEN}

 ${IFCONFIG} br0 ${BRIDGE_IP} netmask ${BRIDGE_NETZMASKE} up
 #
 #
 #  Firewallregeln
 #
 #
 # loeschen der Filterregeln
 ${IPTABLES} -F
 ${IPTABLES} -t nat -F
 # setzen der default-Regeln
 ${IPTABLES} -P FORWARD DROP
 ${IPTABLES} -P INPUT DROP  
 ${IPTABLES} -P OUTPUT ACCEPT
 # Kontakt des localen host nach aussen
 # input br0 
 if log; then ${IPTABLES} -A INPUT -i ${BRIDGE_NAME} -j LOG --log-level debug --log-prefix "IN_${BRIDGE_NAME} "; fi
              ${IPTABLES} -A INPUT -i ${BRIDGE_NAME} -j ACCEPT 
 # output br0
 if log; then ${IPTABLES} -A OUTPUT -o ${BRIDGE_NAME} -j LOG --log-level debug --log-prefix "OUT_${BRIDGE_NAME} "; fi
              ${IPTABLES} -A OUTPUT -o ${BRIDGE_NAME} -j ACCEPT

 # ping forwarding von BRIDGE_DEV_GREEN->BRIDGE_DEV_RED zulassen
 if log; then ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -m physdev --physdev-out ${BRIDGE_DEV_RED} -j LOG --log-level debug --log-prefix "FWD_ICMP0 "; fi
              ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -m physdev --physdev-out ${BRIDGE_DEV_RED} -j ACCEPT

 # ping forwarding von BRIDGE_DEV_RED->BRIDGE_DEV_GREEN zulassen
# if log; then ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in ${BRIDGE_DEV_RED} -m physdev --physdev-out ${BRIDGE_DEV_GREEN} -j LOG --log-level debug --log-prefix "FWD_ICMP1 "; fi 
#              ${IPTABLES} -A FORWARD -p icmp -m physdev --physdev-in ${BRIDGE_DEV_RED} -m physdev --physdev-out ${BRIDGE_DEV_GREEN} -j ACCEPT
 
 # nameserveranfragen an BRIDGE_DEV_GREEN fuer master-bind cgi1 nach BRIDGE_DEV_RED forwarden
 ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 53 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j ACCEPT
 ${IPTABLES} -A FORWARD -p udp -d 192.168.0.1 --dport 53 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j ACCEPT
# # httpanfragen an BRIDGE_DEV_GREEN fuer asterix nach BRIDGE_DEV_RED forwarden
# # Zugriff auf ASTERIX WEB
# if log; then ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.7 --dport 80 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j LOG --log-level debug --log-prefix "WWWASTERIX "; fi
#              ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.7 --dport 80 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j ACCEPT

 # httpanfragen an BRIDGE_DEV_GREEN fuer cgi1 nach BRIDGE_DEV_RED forwarden
 # zugriff auf CGI1 WEB
# if log; then ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 80 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j LOG --log-level debug --log-prefix "WWWCGI1 "; fi
#              ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 80 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j ACCEPT
 # httpproxyanfragen an BRIDGE_DEV_GREEN fuer cgi1 nach BRIDGE_DEV_RED forwarden
 # zugriff auf CGI1 SQUID
 if log; then ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 3128 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j LOG --log-level debug --log-prefix "SQUIDCGI1 "; fi
              ${IPTABLES} -A FORWARD -p tcp -d 192.168.0.1 --dport 3128 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j ACCEPT
 # httpanfragen an BRIDGE_DEV_GREEN nach BRIDGE_DEV_RED forwarden
 # freier WEB-Zugriff
 if log; then ${IPTABLES} -A FORWARD -p tcp --dport 80 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j LOG --log-level debug --log-prefix "HTTP "; fi
              ${IPTABLES} -A FORWARD -p tcp --dport 80 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j ACCEPT
 # proxyanfragen zulassen
 if log; then ${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j LOG --log-level debug --log-prefix "PROXY "; fi
              ${IPTABLES} -t nat -A PREROUTING -p tcp --dport 80 -m physdev --physdev-in ${BRIDGE_DEV_GREEN} -j REDIRECT --to-ports 3128
# # nur antwortpakete von aussen durchlassen
 ${IPTABLES} -A FORWARD -m state --state ESTABLISHED,RELATED -m physdev --physdev-in ${BRIDGE_DEV_RED} -j ACCEPT
 if log; then ${IPTABLES} -A FORWARD -j LOG --log-level debug --log-prefix "FWDROP "; fi
 ${IPTABLES} -A FORWARD -j DROP
# ${IPTABLES} -t nat -A PREROUTING -j LOG --log-level debug --log-prefix "PR "
 ${ROUTE} add default gw ${BRIDGE_DEFAULTGW}
}
 
function del_bridge {
 ${IPTABLES} -F
 ${IPTABLES} -t nat -F
 ${IFCONFIG} ${BRIDGE_NAME} down
 ${BRCTL} delif ${BRIDGE_NAME} ${BRIDGE_DEV_RED}
 ${BRCTL} delif ${BRIDGE_NAME} ${BRIDGE_DEV_GREEN}
 ${BRCTL} delbr ${BRIDGE_NAME}
 ${IFCONFIG} ${BRIDGE_DEV_GREEN} down arp
 ${IFCONFIG} ${BRIDGE_DEV_RED} down arp  
 ${IPTABLES} -P FORWARD ACCEPT
 ${IPTABLES} -P INPUT ACCEPT  
 ${IPTABLES} -P OUTPUT ACCEPT 

}

case "$1" in
 'start')   
  forward_on
  create_bridge
 ;;
 'stop'|'stopp')
  del_bridge    
  forward_off   
 ;;
 'restart')
   del_bridge
   create_bridge
 ;;
 'status')
   ${BRCTL} show ${BRIDGE_NAME}
 ;;
 *)
  echo "Unbekannte Option $1!"
  echo "Bitte benutzen Sie /etc/rc.d/rc.bridge start|stop|stopp|restart|status"
 ;;
esac
»linuxerr« hat folgende Datei angehängt:
  • bridge. (5,78 kB - 3 mal heruntergeladen - zuletzt: 03.02.2011, 14:27)
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »linuxerr« (15.07.2010, 13:12)


Thema bewerten