NAT GRE (IP-Protokoll 47) über Linux-Router

NAT GRE (IP-Protokoll 47) über Linux-Router

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:

  1. 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
  2. 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 natTabellenschalter 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 PREROUTEden greDatenverkehr einfach an den privaten Server weiter und überlassen Sie die greArbeit 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.

verwandte Informationen