Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
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 " } |
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 |
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
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 |
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
Benutzerinformationen überspringen
Prof. Dr. Schlaumeier
Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)
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 |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »linuxerr« (15.07.2010, 13:12)