• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

NAT wiedermal aber mal anders

mirki

Newbie
Hallo Lieber User und freunde des guten Betriebssystems,

vermutlich ist meine frage schon gesplittet mehrfach gestellt worden. Konnte aber nichts richtiges finden.

Ich erzähl euch erstmal worum es geht.

Die Stonegate VPN Boxen machen unterein ander nicht nur VPN Tunnel sondern schicken Ihre Log Daten an einen Management Server. Von dem bekommen Sie, nach einer initial Verbindung, Ihre Konfiguration. Man Konfiguriert alles am Management Server und gibt der Box nur seine IP nach draussen mit GW+Authentifactions Daten und die IP des Management Servers. Dann kann man das Ding wegschicken und der empfänger braucht es nur verkabeln und einschalten.
Dann steht der Tunnel oder die Tunnel. Als Background müsste das , denke ich, reichen.

Der Management Server steht aus Sicherheitstechnischen Gründen im LAN. So dass dort die Haupt VPN Box ein Dnat und ein Snat macht, weil die Boxen draussen ihn unter einer Offizielen IP kennen. Die Boxen draussen haben auch alle ein Offiziele IP ( Öffentliche ), daher stellt diese konstellation kein Problem dar und funzt sogar.

Aber,

Einer dieser VPN Boxen soll draussen selber hinter einem NAT stehen, dass heisst, das zwischen dier Box und dem Management Server zwei NAT's sind.

Wie gesagt die eine NAT, die die Zentral Box selber ist, funktioniert super.

Ich habe das VPN Netzwerk mal nachgebaut. Als Router zwischen den einzelnen Boxen, also den ISP netzen, habe ich einfach nur ne Linux kiste dir IP Weiterleitung macht. Der VPN Tunnel zwischen den Boxen funktioniert gut und haben auch alle Verbindung zum Management Server.

Nun weiss ich nicht wie ich das NAT machen soll, wo die eine BOX hinterstehen soll.

Ich vermute mal das ich DNAT bzw auch SNAT machen muss.
Habe daher einen SuSe 9.1 kiste aufgesetzt.
eth0 hat die öffentliche IP und eth0 die Interne IP, wo auch die Box angeschlossen werden soll.

1.
Alles was an eth0 ankommt soll an eine interne IP über die eth1 an die Box mit der internen IP gehen. Schön wäre es auch wenn ich erfahren würde wich ich es auf einzelne Port eingrenzen kann.

2.
Alle was von der Box rausgeht soll die öffentlich IP des NAT's bekommen. Auch hier wäre es schön zu wissen wie die Ports ein zu grenzen sind.

3.
Muss eventuell noch was am NAT vor dem Management Server gemacht werden.


Acho noch ein Hinweis. Ich kann dem Management Server sagen, dass er eine andere IP für den Kontakt ( öffentliche IP des NAT ) nehmen soll als die Reale IP.



Die Sache ist die, das ich NAT nutzen muss, weil es leider anders nicht geht.


Auch der VPN Tunnel muss durchs NAT. Das geht unter der Vorraussetzung das der Header nicht extra Verschlüsselt wird ( also kein AH+ESP sondern nur ESP ).


Ihr seit meine letzte Hoffnung, ich hoffe ihr könnte helfen.

LG
mirki
 

gaw

Hacker
Ich bin etwas irritiert von deinen Ausführungen. NAT ist ein Verfahren und kein Rechner, was du also mit der NAT meinst die zwischen etwas steht ist mir nicht klar.

NAT bedeutet Network Adress Translation. Es werden die Adressen im IP-Header umgeschrieben, das ist alles. Unter Linux lässt sich das mit iptables realisieren. Und selbstverständlich kann man mit entsprechenden Anweisungen die Ports begrenzen.
Mit iptables wird Destination-NAT in der Prerouting- und Source-NAT in der Postrouting-Chain betrieben. Dabei werden üblicherweise immmer Ports angegeben, entweder einzelne oder Bereiche:
Code:
/usr/sbin/iptables -A PREROUTING -t nat -p tcp --dport 6000:6006 -i $INTERFACE -j DNAT --to-destination $TARGETHOST
Das sieht komplizierter aus als es ist. Die Anweisungen lassen sich relativ einfach ablesen. Das -A bedeutet einfach das der PREROUTING Chain
eine weitere Anweisung zugefügt wird. Für NAT ist die Tabelle (-t) nat als Ziel zuständig, -p gibt an ob die Pakete über tcp, udp oder icmp laufen, --dport ist der Zielport zu dem das Paket unterwegs ist, -i beschreibt die Netzwerkschnittstelle über die die Pakete herinkommen (eth0 oder ppp0, man kann auch Variabeln benutzen) und -o über welche Schnittstelle sie den Rechner verlassen, -j steht für jump und beschreibt den Sprung zu Subroutinen im Kernel (in iptables syntax als target bezeichnet, Beispiele sind accept, deny, log, dnat...) die für die weitere Verarbeitung der Pakete zuständig sind. In unserem Fall eben dnat. Manche dieser targets benötigen weitere Parameter, bei dnat eben welche Ziel-IP-Adresse im IP-Header stehen soll. iptables erwartet also nach --to-destination eine IP-Adresse oder einen gültigen Rechnernamen, wie maschine.firmennetz.de oder mail.firmennetz.de o.ä..

Im Beispiel werden also alle über die in der Variablen $INTERFACE definierten Schnittstelle hereinkommenden Pakete die Dienste auf den Ports 6000, 6001, 6002 ....6006 über tcp ansprechen einem Destination NAT unterzogen und auf den Rechner umgeleitet der in der Variablen $TARGETHOST definiert ist.

S-NAT findet dagegen nach dem Filtern statt also in der Chain Postrouting
Code:
usr/sbin/iptables -A POSTROUTING -t nat -p tcp --dport 80 -o $INTERFACE -j SNAT --to-source $SOURCEHOST
Hier erhalten alle Pakete die über den Port 80 die Schnittstelle $INTERFACE verlassen einen neuen Absender und zwar die IP vom $SOURCEHOST.

Schwierig ist es durch deine Beschreibungen durchzusteigen, und sich das Netz dahinter vorzustellen. Ein Grafik z.B. in ASCII-Art wären nicht schlecht.

Ich hoffe ich konnte dir helfen.



mfG
gaw
 
Oben