Iptables NAT

The-Chaos6

Mitglied
Hallo ich habe eine Frage zu den iptables.

Ich versuche per DNAT in der POSTROUTING Tabelle eine portweiterleitung hinzubekommen.

##
# Mein Zielrechner ist lokal -> 192.168.122.128
# Das in/out interface ist eth0:1
##

Der Port 22 soll wenn er von Interface eth0:1 kommt
auf 192.168.122.128 weitergeleitet werden

Mein bisheriger versuch sieht so aus :


Code:
iptables -t nat -A PREROUTING -p tcp -i eth0:1 --dport 22 -j DNAT --to-destination 192.168.122.128:22

Was ich auch erreicht hab ist , dass der Port jetzt kein
Verbindung Fehlgeschlagen mehr herausgibt sondern
eine Zeitüberschreitung was ja nach meiner Meinung darauf hindeutet
das die Regel Ausgeführt wird aber nicht am Ziel ankommt.


Was ich dan noch irgendwo gelesen hab ist das ich noch
MASQUERADE benutzen muss aber ich bin leider noch einsteiger in
diesem Thema deswegen ergab wie schon vermutet

Code:
iptables -t nat -A POSTROUTING -o eth0:1 -j MASQUERADE

kein Ergebniss

;(

Ich hoffe ihr könnt mir hier weiterhelfen
und ich hoffe ich bin damit wenigstens auf einem annähernd richtigen Weg.
 

The-Chaos6

Mitglied
Hmmm ich weis nicht ich glaub ich hab mal wieder alle verwirrt ;(

Hier nochmal ne zusammenfassung

Alles was von 111.111.111.111 kommt
soll zu 222.222.222.222 (intern) weitergeleitet werden

Mein porblem wenn ich wie oben die iptables verwende ,
bekomme ich für jeden Port ein timeout


wenn ich von 222.222.222.222 nach drausen "telefonieren" will
wird meine Verbindung ebenfals abgebrochen

Ich benutze 2 Apache

Nr1 auf 111.111.111.111 und soll auch über 111.111.111.111
erreichbar sein und NICHT über 222.222.222.222

Nr2 auf 222.222.222.222 und soll auch über 222.222.222.222
erreichbar sein und NICHT über 111.111.111.111


so ich hoffe ich hab euch nicht noch mehr verwirrt

Ich bin dankbar über jede Hilfe
 

Dennis Wronka

Soulcollector
Alles von 111.111.111.111 kannst Du nach 222.222.222.222 umleiten indem Du folgenden Regel angibst:
Code:
iptables -A PREROUTING -t nat -s 111.111.111.111 -j DNAT --to 222.222.222.222

Mit Deinen beiden Apachen solltest Du keine Probleme haben, denn Zugriffe auf die entsprechenden Rechner macht ja keinen Unterschied, lediglich Daten die von Server 1 reinkommen werden eben zu Server 2 weitergereicht.

Allein kann die oben angefuehrte Regel uebrigens selten ueberleben, in der Regel muss auch noch bestimmter Verkehr im Paketfilter zugelassen werden.
Um von Server 1 alles zuzulassen kannst Du einfach folgenden Befehl nutzen:
Code:
iptables -A INPUT -s 111.111.111.111 -j ACCEPT
Da man aber eigentlich weiss welcher Traffic zu erwarten ist ist es besser entsprechende Regeln aufzustellen anstatt einfach alles zuzulassen, es kann ja durchaus mal sein, dass die Maschine gekapert wird.
 

The-Chaos6

Mitglied
Hallo ,

Danke für die schnelle Antwort ;)

leider muss ich sagen das ich immer noch keinen Effekt sehen kann.
Desweiteren hab ich glaub ein Fehler gefunden, es müste doch
111.111.111.111 als Destination angegeben werden Source wäre doch der recher der nacher
zb die Webseite aufruft? zugreift oder irr ich mich da jetzt?

Also wen ich die Ip so einsetzt wie vorgeschlagen komm ich weiterhin
auf dem Hostrechner raus ;(

Wenn ich auf destionation ändere komm ich nichtmehr auf dem host
heraus die verbindung bricht jedoch nach geringer zeit mit einem timeout ab ;(


Kann es veleicht sein dass ich noch etwas instalieren muss um forwarding zu verwenden.
Die filterregeln funktionieren jedoch ohne Probleme.

Ich hab jetzt für testzwecke auch die interne ip sowie die externe an erster stelle freigegeben. Ohne erfolg ;(

##
# Gibt es veleicht noch eine andere Möglichkeit alles von a nach b zu routen ?
#
# Und was ist mit Masquerade das brauch ich doch sicher auch oder?
##
 

Dennis Wronka

Soulcollector
Masquerading brauchst Du dafuer eigentlich nicht. Masquerading ist SNAT und im Grunde nur noetig wenn Du den Rechnern hinter der Firewall Zugriff auf die weiten des Internet erlauben willst.
Fuer DNAT, was Du ja hier betreiben willst, sollte das nicht noetig sein.

Was noch noetig ist ist Forwarding. Ob das aktiv ist kannst Du in der Datei /proc/sys/net/ipv4/ip_forward sehen. 0 bedeutet inaktiv, 1 aktiv.
Wenn dort eine 0 steht kannst Du dies mit echo "1" > /proc/sys/net/ipv4/ip_forward aendern.

Ansonsten faellt mir spontan erstmal nichts ein.

Meiner Meinung nach musst Du nicht 111.111.111.111 als Destination angeben, sondern wie in meinem Beispiel als Quelle, denn Du hast ja geschrieben, dass die Daten von dieser IP kommen und nach 222.222.222.222 gehen sollen.
 

The-Chaos6

Mitglied
Was noch noetig ist ist Forwarding. Ob das aktiv ist kannst Du in der Datei /proc/sys/net/ipv4/ip_forward sehen. 0 bedeutet inaktiv, 1 aktiv.
Wenn dort eine 0 steht kannst Du dies mit echo "1" > /proc/sys/net/ipv4/ip_forward aendern.

Hummm war auf 0 ist jetzt auf 1 und geht immer noch nicht ;(

Wobei es am Routing nicht liegen kann da ich zb eine weiterleitung am host problemlos von zb port 8888 auf port 80 erstellen kann.

--------------------------

Das gehört jetzt wohl eher in ein VmWareforum aber:

Hat jemand eine andere Idee wie sich das an einem
VmWare Server realisieren lässt?

Wichtig der Bridgemodus fällt weg da der Hoster (Strato) filtert.

Die verbindung muss also komplett über den Hostrechner laufen


Ich hab auch schon den NAT modus von VmWare ausprobiert:
Wäre meine aller letzte wahl da meine Anbindung ca um das 10x sinkt ,
ich für eine neue Portregel das gesammte Vmware neu starten muss und
ich keien Ports doppelt auf Host bzw Gast verwenden darf

Ich experimentiere bereits mit Host-only Modus aber wie vermutet kein Erfolg

--------------------------------

Ich glaube wen am Ende eine Lösung zu stande kommt werd ich erstmal alles zusammenfassen und ein Umfangreiches
Tutorial verfassen da ich bis auf ein tutorial ( das nicht funktioniert hat ) keine Lösungen
für das oder ein Ebenwürdiges Problem gefunden habe ;)
 

Dennis Wronka

Soulcollector
Also ich hab grad nochmal durch mein Tutorial, das offizielle NAT-HowTo und die IPTables-ManPage geschaut und es steht eigentlich alles in Uebereinstimmung mit dem was ich zuvor geschrieben habe.

Was mir jetzt noch eingefallen ist ist folgende Frage:
Ist auf der Zielmaschine die Linux-Firewall als Default-Gateway angegeben?
Denn diese muesste auch ueber diese Box antworten muessen, da ja eine Antwort von der IP der Firewall erwartet wird, eine Antwort die direkt vom Zielrechner kaeme wuerde als neue, und vor allem unangefragte Verbindung gewertet und somit verworfen werden.
 

The-Chaos6

Mitglied
Danke für die Antowrt ich komme leider frühestens donnerstag zum testen ;(

Ich hoffe mal damit ist es gehtan obwohl eigentlich der Host ja garkeine ip im netzwerk hat das interface eth0 hat eine direkte verbindung zum inet ( ip1 ) ( eth0:1 ip 2 )
 

The-Chaos6

Mitglied
Vielen dank es war tazächlich der fehlende Gateway ^^

Ich könnt mich ***** naja vielen dank für den tipp ;)

Nun funktionieren auch alle Routing befehle ;)
 

Dennis Wronka

Soulcollector
Nichts zu danken.

Falls nicht schon geschehen, denk bitte noch daran den Thread auf erledigt zu setzen (hab jetzt nicht geschaut ob Du das schon gemacht hast).

Falls noch Fragen aufkommen, immer her damit.
 

Neue Beiträge