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

iptables

Hallo,

ist folgendes möglich?

Mein OS hat die IP Addresse IP1, die IP Adresse IP2 ist nicht vergeben und nirgends konfiguriert, ein Server läuft auf der IP Adresse IP3.

Ein Ping von Host mit IP1 auf IP3 funktioniert.
Ein Ping von Host mit der IP1 auf IP2 funktioniert natürlich nicht :).

Ich möchte nun auf dem Rechner mit der IP1 ein "ping IP2" machen der von IP3 beantwortet wird.

Um das zu erreichen dachte ich mache ich einfach ein

Code:
iptables -t nat -A PREROUTING -d IP2 -j DNAT --to-destination IP3

Ich war davon ausgegangen, dass bevor mein Paket ans Netzwerk geht die Ziel IP falls diese IP2 ist durch die IP IP3 ersetzt wird. Tut aber nicht. Kann ich sowas erreichen?

Danke.

K.

PS: Hintergrund falls es nicht geht oder wer sich fragt was ich seltsames mache...

Ein phyischer Host hat ein guest OS welches seine IP nur per NAT bekommen kann. Alle Netzwerk Verbindungen vom physischen Host sollen durch diesen virtuellen Gast geschleust werden bevor sie in die Welt entlassen werden. Der physische Host hat dazu eine routing table information. Problem dabei ist wenn das guest OS den Request ins echte Netz schicken will muss er ja wieder über den physischen Host gehen, der aber schickt die Anfrage wieder zum Guest wegen dem Routingeintrag - sprich man hat einen endlos loop. Jetzt war die Idee einen zweiten Guest einzuführen. Vom phyisichen host macht man ein routing eintrag für eine virtuelle Adresse zu dem neuen Guest System, dort sagt man via iptables wie der externe Server heißt und man hat eine default route zu dem orginären guest system. Dieses orginäre Guest System kann dann die echte IP via dem physischen Host wirklich erreichen.
 

spoensche

Moderator
Teammitglied
klaus-dieter schrieb:
Mein OS hat die IP Addresse IP1, die IP Adresse IP2 ist nicht vergeben und nirgends konfiguriert, ein Server läuft auf der IP Adresse IP3.

Ein Ping von Host mit IP1 auf IP3 funktioniert.
Ein Ping von Host mit der IP1 auf IP2 funktioniert natürlich nicht :).

Ich möchte nun auf dem Rechner mit der IP1 ein "ping IP2" machen der von IP3 beantwortet wird.

Dazu müsste der Rechner mit IP3 auch die IP IP2 als virtuelle IP haben.

klaus-dieter schrieb:
Ein phyischer Host hat ein guest OS welches seine IP nur per NAT bekommen kann. Alle Netzwerk Verbindungen vom physischen Host sollen durch diesen virtuellen Gast geschleust werden bevor sie in die Welt entlassen werden. Der physische Host hat dazu eine routing table information. Problem dabei ist wenn das guest OS den Request ins echte Netz schicken will muss er ja wieder über den physischen Host gehen, der aber schickt die Anfrage wieder zum Guest wegen dem Routingeintrag - sprich man hat einen endlos loop. Jetzt war die Idee einen zweiten Guest einzuführen. Vom phyisichen host macht man ein routing eintrag für eine virtuelle Adresse zu dem neuen Guest System, dort sagt man via iptables wie der externe Server heißt und man hat eine default route zu dem orginären guest system. Dieses orginäre Guest System kann dann die echte IP via dem physischen Host wirklich erreichen.

Waum willst du erst vom Host zu einem Gast routen und von dort aus dann wieder zurück zum Host? Einfacher ist es, wenn du den Gast und den Host direkt so konfigurierst, dass der Gast den Host erreichen kann.
 
OP
K

klaus-dieter

Hacker
spoensche schrieb:
Dazu müsste der Rechner mit IP3 auch die IP IP2 als virtuelle IP haben.

Naja aber dann müsste ich ja nichts mit NAT und iptables machen, der würde dann ja auch einfach so antworten.

spoensche schrieb:
Waum willst du erst vom Host zu einem Gast routen und von dort aus dann wieder zurück zum Host? Einfacher ist es, wenn du den Gast und den Host direkt so konfigurierst, dass der Gast den Host erreichen kann.
Weil da ein WAN Emulator läuft den ich zum testen brauche. Ich will also auf dem physischen host eine Browser starten dessen Requests durch die VMWare also mein WAN geschleust werden und dann an den echten Server gehen. Randbedingung ist ganz wichtig, dass das virtuelle System nur über NAT ins Netz kommt und sich also alle routing informationen etc. mit dem browser teilt.
 

spoensche

Moderator
Teammitglied
klaus-dieter schrieb:
Naja aber dann müsste ich ja nichts mit NAT und iptables machen, der würde dann ja auch einfach so antworten.

Du kannst keinen Rechner mit einer IP anpingen etc., die er nicht hat bzw. nicht an Ihn vergeben ist.
 
OP
K

klaus-dieter

Hacker
okay also nehmen wir nur IP adressen die existieren: Auf Rechner A und B (mit IP A und IP B) starte ich ein tcpdump -n -i any -p icmp damit kann ich sehen wer meine pings beantwortet. Auf Rechner C mache ich

iptables -t nat -A PREROUTING -d IPA -j DNAT --to-destination IPB

Auf Rechner C mache ich nun ein ping IPA dieser sollte dann nach meinem Verständnis von Rechner B beantwortet werden, wird er aber nicht sondern von Rechner A. Ich dachte iptables ändert das Ziel im Header der TCP/IP Pakete anscheinend nicht. Wo liegt der Denkfehler? Alle 3 Rechner liegen im selben Netzwerk, wird da iptables umgangen, doch nicht oder?

Danke, K.
 

spoensche

Moderator
Teammitglied
NAT heisst Network Address Translation und wird beim Routing von einem Netz (z.B 192.168.1.0/24) in ein anderes Netz (z.B. 192.168.2.0/24) und Masquerading verwendet.

Beispiel:

Netz A: 192.168.1.0/24
Netz B: 192.168.2.0/24

Rechner1 aus Netz A will mit Rechner2 aus Netz B kontakt aufnehmen. Da die beiden Rechner in unterschiedlichen Netzen "beheimatet" sind, können Sie nicht direkt miteinander kommunizieren. Diese Aufgabe übernimmt ein Router (in diesem Beispiel mit 2 Netzwerkkarten) dessen erster Schnittstelle (Netzwerkkarte 1) eine IP aus Netz A zugewiesen ist und der zweiten Schnittstelle eine IP aus Netz B.

Jetzt kommt NAT und Masquerading ins Spiel. Der Router ersetzt im IP- Header die IP von Rechner1 durch seine IP- Adresse die mit Netz B verbunden ist (Masquerading) und merkt sich die IP von Rechner1 in einer Tabelle (NAT), weil er sonst nichts mit der Antwort von Rechner2 anfangen kann, weil er ja nicht weiss für wen die Antwort bestimmt ist.

Nach dem der Router die IP von Rechner1 ersetzt hat ist die Kommunikation mit Rechner 2 möglich, weil der Router im selben Netz von Rechner2 ist.

Ich hoffe die Erklärung hilft dir.

Bezüglich Netzwerk und Paketfilter mit IP- Tables ist das Open Book Linux Firewalls von O` Reilly sehr zu empfehlen. Der Link zum Buch: http://www.oreilly.de/german/freebooks/linuxfire2ger/toc.html
 
Oben