
Ich möchte alle Ports von meinem Client (Windows) an einen Server (Windows) weiterleiten, der sich hinter einem Gateway (Linux) befindet.
Meine Netzwerktopologie sieht wie folgt aus:
10.20.10.14 --> 10.20.10.4 --> 192.168.1.1 --> 192.168.1.4
client ppp0 eth0 server
|--------- Gateway -------|
wobei das Gateway-Gerät zwei Netzwerkgeräte hat: ppp0 und eth0.
Ich möchte, dass im Falle einer Netzwerkverbindung zwischen Client und ppp0 das Servergerät die Daten auf demselben Port sieht, wie sie vom Client gesendet wurden.
Mit anderen Worten, der Server sollte davon ausgehen, dass er direkt mit dem Client kommuniziert und das Gateway in diesem Fall transparent ist.
Außerdem möchte ich wissen, wie ich diese Regel entfernen kann.
Irgendwelche Ideen?
Bemerkung: Ich bin der Administrator auf allen Geräten.
Antwort1
Beim Übersetzen englischer Regeln in iptables-Regeln wird nur diese Regel benötigt:
iptables -t nat -A PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4
Der Zielport wird nicht geändert (und der Quellport sollte es auch nicht sein, außer in seltenen Fällen, wenn der Client gleichzeitig eine direkte Verbindung zum Server herstellt).
Der Client kann manuell eine Route hinzufügen 192.168.1.4
und 10.20.10.4
direkt auf den Server zugreifen. Wenn Sie dies nicht möchten, können Sie auch diese Regel hinzufügen, um die IP des Servers zu verbergen:
iptables -I FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP
Dadurch wird ein direkter Zugriff auf den Server unterbrochen, der nicht mit DNAT überprüft wurde.
Um diese Regeln zu entfernen, verwenden Sie einfach -D
:
iptables -D FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP
iptables -t nat -D PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4
Zufällige Bemerkungen:
- Die IP-Weiterleitung muss auf dem Gateway aktiviert sein, da die DNATed-Verbindung weitergeleitet wird. Am einfachsten geht das so
echo 1 > /proc/sys/net/ipv4/ip_forward
: - Der Server benötigt natürlich eine Route zum Client, um dessen Verbindungen zu akzeptieren, z. B. mit Gateway (
192.168.1.1
) als Standard-Gateway. -i ppp0
ist optional und kann entfernt werden (oder-d 10.20.10.4
in der PREROUTING-Regel ersetzt werden, falls gewünscht). Es kann Probleme verursachen, wenn es nicht durch-i ppp+
(+
als Platzhalter) ersetzt wird: Bei einem schnellen Verbindungsfehler/einer schnellen Verbindungswiederherstellung wird möglicherweise die neue PPP-Schnittstelle aufgerufen,ppp1
wennppp0
sie nicht vorher abgetrennt wurde. Die iptables-Regeln würden nicht mehr übereinstimmen.- Bereits etablierte Flows sind von der Entfernung der DNAT-Regel nicht betroffen, neuere Flows hingegen schon (d. h. sie erreichen den Server nicht).