conrado
Goto Top

2 PPTP-Server hinter iptables Router?

Hallo Forum,


ich habe da ein Problem. Ich will zwei PPTP-VPN-Server hinter einem Router anbinden.

internes LAN: 192.168.10.0/24 <---> Standleitung mit mehreren öffentl. IPs

Der erste Server war kein Problem.

iptables -t NAT -A PREROUTING -i eth0 -p tcp --dport 1723 -j DNAT --to-destination 192.168.10.90:1723

iptables -t NAT -A PREROUTING -i eth0 -p gre -j DNAT --to-destination 192.168.10.90


Da man ja weder Port noch Protokoll bei den Clients ändern kann, brauchte ich also eine Lösung mit einer 2. IP-Adresse. Also habe ich über yast2 einfach eine "zusätliche IP-Adresse" auf eth0 aufgesetzt. Und die erste Regel so geändert:

iptables -t NAT -A PREROUTING -d 211.213.239. 222 -i eth0 -p tcp --dport 1723 -j DNAT --to-destination 192.168.10.90:1723

iptables -t NAT -A PREROUTING -d 211.213.239.222 -i eth0 -p gre -j DNAT --to-destination 192.168.10.90

Nun habe ich für den zweiten Server die folgende Regel eingefügt:

iptables -t NAT -A PREROUTING -d 211.213.239. 218 -i eth0 -p tcp --dport 1723 -j DNAT --to-destination 192.168.10.94:1723

iptables -t NAT -A PREROUTING -d 211.213.239.218 -i eth0 -p gre -j DNAT --to-destination 192.168.10.94

Leider funktioniert beides parallel nicht so wirklich, mal kann man zu einem connecten, dann wieder nicht und dann mal das andere.

Gibt es eine Lösung für eine 2. IP auf einer Netzwerkkarte mit einem virtuellen Netzwerkdevice? VLAN funktioniert nicht, denn iptables kann keine Devices mit Namen wie eth0:vlan1 ansprechen. Es müsste z.B. eth5 heissen, also eine richtige virtuelle Karte und nicht nur ein Subdevice.

Oder muss ich einfach nur per Source-NAT die Absenderadressen der jeweiligen Pakete ändern.

Ich vermute nämlich, dass ein Paket, dass auf eth0 mit der destination 211.213.239.218 eingegangen ist (Server 2) mit der Absenderadresse 211.213.239.222 zum Client zurückgeschickt wird.

Hat jemand eine Idee?


Vielen Dank im Voraus,

Conrad

Content-Key: 64513

Url: https://administrator.de/contentid/64513

Printed on: April 19, 2024 at 20:04 o'clock

Member: aqui
aqui Jul 24, 2007 at 13:21:48 (UTC)
Goto Top
Generell ist das so nicht lösbar. Die NAT Firewall wird ja mit der ersten (funktionierenden) Regel alles was TCP 1723 ist und was GRE (Protokoll 47) ist und an die öffentliche IP gerichtet ist an die interne Adresse forwarden.
Als einziges Workaroud würde funktionieren, wenn du eine Loopback oder eine secondary Adresse mit einer zweiten öffentlichen Adresse einrichten würdes und alles was TCP 1723 und GRE an diese Adresse geht dann auf eine separate interne Adresse forwarden. Das sollte funktionieren.
Member: conrado
conrado Jul 25, 2007 at 10:06:06 (UTC)
Goto Top
Das habe ich ja so gemacht (siehe Regeln oben).

Alle Pakete mit der destination 211.213.239.222 gehen an Server 1, die mit 218 als destination an Server 2
Leider funktioniert diese Lösung nicht wirklich, da ich den 2. Server nur ab und zu mal richtig erreichen kann. Bei Server 2 kriege ich dann einen Fehler 628 und bei Server 1 einen Timeout beim Passwort-Handshaking. Lasse ich die Regeln jeweils alleine laufen, funktioniert der jeweilige Server.
Meine Frage ist, ob ich etwas übersehen habe, da ja alles über das Device läuft. D.h. eventuell gehen die Antwortpakete alle von der 222 aus o.ä.
Oder ob es eine Lösung gibt ein virtuelles Netzwerkdevice (z.B. eth3) aufzusetzen, denn momentan habe ich die 2. IP einfach als zusätzliche Adresse angegeben.

Conrad
Member: conrado
conrado Jul 25, 2007 at 17:01:12 (UTC)
Goto Top
Meine Idee war richtig, habe den Fehler endlich gefunden. Hatte neben dem obligatorischen:

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

auch ein iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

drin. Wie auch immer es da rein gekommen ist. Jedenfalls hat das POSTROUTING das source-nat verhindert. Nun läuft es optimal. Weitere Server kann ich dann einfach mit den anderen 4 IP-Adressen aufsetzen.