PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : NAT von eth1 nach eth0 mit iptables - kriege es nicht hin



wirthensohn
13.08.06, 09:32
Hallo zusammen,

nun habe ich mit zum Thema NAT/iptables versucht, fleißig einzulesen (auch hier im Forum), kriege aber leider doch keine Lösung für mein Problem zustande und hoffe, dass mir irgendjemand von Euch ganz spontan behilflich sein kann:

Mein Server hat eine Netzwerkkarte eth0 (192.168.77.1), mit der er mit meinem lokalen Netz verbunden ist. Er kann über eine AVM Fritzbox (192.168.77.2), welche logischerweise als Gateway eingetragen ist, in die weite Welt. Soweit, so klar.

Nun kommt noch eine zweite Netzwerkkarte eth1 (192.168.1.1) ins Spiel, an die ich das lokale Netzwerk eines Nachbarn anschließen möchte. Dieser Nachbar soll darüber und damit natürlich über die an eth0 angeschlossene Fritzbox ins Internet kommen, nicht aber auf mein lokales Netzwerk (192.168.77.x) zugreifen können. Den Server als 192.168.1.1 soll er aber verwenden dürfen.

Wenn ich das richtig verstanden habe, brauche ich eigentlich nur NAT von eth1 nach eth0. Nur wie geht das? Ich krieg's nicht gebacken :(

Hat zufällig jemand so einen "Zweizeiler" für mich zur Hand, mit dem ich das bewerkstellig kriege?

Gruß,
Christian

tschloss
13.08.06, 14:13
Brauchst du NAT dafür?
Ins Unreine: Die Verbindung müßte auch mit ungenattetem Routing klappen, wenn der Nachbar deinen Server als Gateway einträgt, dieser IP_FORWARDING macht und du auf der Fritzbox eine Route zum 192.168.1.0-Netz einträgst.
Dann mußt du aber zusätzlich auf deinem Server eine FW-Regel ergänzen, um den Zugriff auf 192.168.77.0 / außer .1 zu verhindern.

Grüße
Thomas

wirthensohn
13.08.06, 14:23
So, nachdem ich mich nun tagelang durch teilweise präzise Anleitungen und monströse iptables-Regelwerke versucht habe durchzuschlagen, habe ich es doch ganz spontan noch hingebogen gekriegt. Sogar gleich noch diverse "Nettigkeiten" obendrauf, wie z.B. den http-Traffic zum Squid als transparenten Proxy umzubiegen.

Jetzt habe ich, was ich wollte: mein Nachbar an eth1 kann nicht in mein Netz, sehr wohl aber ins Internet und ich an eth0 kann nicht in Nachbar's Netz. Ganz beiläufig kriegt mein Nachbar auch ganz sicher nur die für ihn relevanten Ports meines Servers präsentiert:


modprobe ip_tables

iptables -A POSTROUTING -o eth0 -t nat -j MASQUERADE

# Alle Pakete verwerfen, die vom 77er ins 1er Netz wollen
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.77.0/24 -j DROP
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.77.0/24 -j DROP
iptables -A FORWARD -s 192.168.1.0/24 -d 192.168.77.0/24 -j DROP

# Alle Pakete verwerfen, die vom 1er ins 77er Netz wollen
iptables -A INPUT -s 192.168.77.0/24 -d 192.168.1.0/24 -j DROP
iptables -A OUTPUT -s 192.168.77.0/24 -d 192.168.1.0/24 -j DROP
iptables -A FORWARD -s 192.168.77.0/24 -d 192.168.1.0/24 -j DROP

# Alle unnötigen Ports des Servers aus dem 1er Netz verwerfen
iptables -I INPUT -p tcp -d 192.168.1.1 --dport 1:21 -j DROP
iptables -I INPUT -p tcp -d 192.168.1.1 --dport 23:36 -j DROP
iptables -I INPUT -p tcp -d 192.168.1.1 --dport 38:52 -j DROP
iptables -I INPUT -p tcp -d 192.168.1.1 --dport 54:3127 -j DROP
iptables -I INPUT -p tcp -d 192.168.1.1 --dport 3129:65535 -j DROP
iptables -I INPUT -p udp -d 192.168.1.1 --dport 1:21 -j DROP
iptables -I INPUT -p udp -d 192.168.1.1 --dport 23:36 -j DROP
iptables -I INPUT -p udp -d 192.168.1.1 --dport 38:52 -j DROP
iptables -I INPUT -p udp -d 192.168.1.1 --dport 54:3127 -j DROP
iptables -I INPUT -p udp -d 192.168.1.1 --dport 3129:65535 -j DROP

# Forwarding/Routing
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

# Transparenter Proxy
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128


Jipiiiieee, dat klappt - manchmal muss man eben dumme Fragen stellen, um selbst auf die Lösung zu kommen :)

Gruß,
Christian