Ich habe einen Host, der über einen permanenten statischen GRE-Tunnel zu einem Server im Internet verfügt. Im Moment hat der Host seine eigene echte IP-Adresse. Ich möchte den Host hinter einer Linux-Box (Smoothwall) platzieren und ihm eine private IP-Adresse zuweisen.
Lass uns anrufen:
Tunnel-Server-IP= die IP des Tunnelendes, mit dem der Host eine Verbindung herstellt (im Internet)
echte IP= die aktuelle IP des Hosts, die ich dem Linux-Router zuweisen möchte
falsche IP= die IP, die der Host erhält, nachdem er hinter die Linux-Firewall gestellt wurde
Damit der Tunnel funktioniert, muss ich meiner Meinung nach Folgendes tun:
- DNAT alle eingehenden IP-GRE-Pakete auf der externen Schnittstelle, die vom Internet-Tunnelende kommen, und senden Sie sie an den Host. Das heißt, das Ziel vonechte IPZufalsche IPund senden Sie das Paket anfalsche IP
- SNAT überprüft alle eingehenden IP-GRE-Pakete, die über die interne Schnittstelle vom Host kommen, so, dass sie von der Linux-Box generiert werden, und sendet sie an den Tunnelserver. Das heißt, das Quellfeld wird geändert vonfalsche IPZuechte IPund senden Sie das Paket anTunnel-Server-IP
Ich habe mir das folgende Skript ausgedacht:
tunnel_server_ip=217.x.x.x
false_ip=192.168.2.2
real_ip=82.x.x.x
/sbin/iptables -A PREROUTING -p 47 --src $tunnel_server_ip -j DNAT --to-destination $false_ip
/sbin/iptables -A POSTROUTING -p 47 --src $false_ip -j SNAT --to-source $real_ip
/sbin/iptables -A INPUT -p 47 -j ACCEPT
Das Ausführen dieses Vorgangs führt zuKeine Kette/Ziel/Übereinstimmung mit diesem Namen. Können Sie mir bitte sagen, was ich falsch gemacht habe? Bin ich auf dem richtigen Weg?
Antwort1
Du hast den -t nat
Tabellenschalter in der PREROUTING/POSTROUTING-Anleitung vergessen. Füge ihn einfach vorne hinzu.
Antwort2
Die Antwort kommt spät, aber ich bin auf dasselbe Problem gestoßen und die folgenden beiden Befehle funktionieren:
# iptables -t nat -A PREROUTING -i eth0 -p gre -j DNAT --to-destination 192.168.0.1
# modprobe nf_conntrack_proto_gre
Sie müssen keine echte IP-Adresse angeben. Leiten Sie PREROUTE
den gre
Datenverkehr einfach an den privaten Server weiter und überlassen Sie die gre
Arbeit dem Verbindungs-Tracker.
Antwort3
Für die meisten GRE-Tunnel muss ein Kontrollprotokoll auf TCP 1723 vorhanden sein. Dieses muss ebenfalls weitergeleitet werden. Hier ist eineVerknüpfungdas beschreibt die iptables-Konfiguration hierfür. Du bist auf dem richtigen Weg, es fehlt nur noch das Kontrollprotokoll.
Antwort4
Sie haben anscheinend vergessen, „--table nat“ zu sagen, daher geht es in die Filtertabelle, die weder SNAT/DNAT-Ziele noch PREROUTING- und POSTROUTING-Ketten hat.