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

[gelöst] Traffic an eine öff ip an bestimmte lokale ip gehen

Chaoshh

Member
Servus friends

Habe einen Hetznerserver mit mehreren öffentlichen ip Adressen. Darauf wurde vwmare hingerichtet und dort läuft ein windows XP os als gast.

Erste öffentliche ip Adresse ist 123.123.123.123
Zweite öffentliche ip Adresse ist 345.345.345.345
Dritte öffentliche ip Adresse ist 678.678.678.678
usw.

Der XP soll auf die zweite ip - 345.345.345.345 - horchen.

Ich habe jetzt auf dem Server zwo iptables rules eingetragen, welche den Traffic welcher auf einer der öffentlichen ip Adressen ankommt auf die interne ip (345.345.345.345) des virtuellen hostes weiterleitet.

Code:
iptables -t nat -I PREROUTING -d 345.345.345.345 -j DNAT --to 192.168.2.33
iptables -t nat -I POSTROUTING -s 192.168.2.33 -j SNAT --to 345.345.345.345

Ich empfange auch korrekte antworten beim ping auf die 345.345.345.345. Aber ich komme nicht dazu eine Regel für ssh weiterzuleiten wenn sie auf 345.345.345.345 ankommt. Ich habe nur so eine Regel eingegeben, die leitet aber alles was bei 123.123.123.123 über port 33333 kommt an die 192.168.2.33:22 weiter.
Code:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 33333 -j DNAT --to-destination 192.168.2.33:22

Was aber bei 345.345.345.345 kommt wird nicht weitergeleitet.

Wie verändere ich diese letzte rule um nur das was zu 345 an dem port 33333 ankommt weitergeleitet wird anstatt so wie jetzt - das alles was auf 123 kommt weitergeleitet wirde während 345 nichts weitergibt?
 

spoensche

Moderator
Teammitglied
Ist die 345 auch die IP-Adresse des Interface eth0? Wenn nicht dann musst du das in deiner Regel ändern.
 
OP
C

Chaoshh

Member
Ja, nur eine Netzwerkkarte die eth0. Allerdings eth0:1. SSH geht nur, wenn ich die 123 gewählt wird, soll aber nur auf 345 warten.

Edit
Ich vergaß zu erwähnen, sollte aber bekannt sein - eth0:1 kann ich in der rule natürlich nicht benutzen, dann kommt folgendes
Code:
iptables -t nat -A PREROUTING -i eth0:1 -p tcp --dport 33333 -j DNAT --to-destination 192.168.2.33:22
Warning: weird character in interface `eth0:1' (No aliases, :, ! or *).
 
OP
C

Chaoshh

Member
Nö, nicht bei mir - ich habe ipv18 :)

Das ist doch klar, das das hier Dummies sind? Ich nenne doch hier nicht meine echten ip Adressen.

@ spoensche
Hast keine Idee mehr? Kann die rule nicht so umgeändert werden das jeglicher tcp traffic über port xyz auf die ip abc umdirigiert wird, jedoch nur wenn der traffic über die öff. ip Addresse 345.345.345.345 und nicht 123.123.123.123 reinkommt?
 

luwa

Member
Ich nehme an die Ausgaben sind authentisch.
Code:
Warning: weird character in interface `eth0:1' (No aliases, :, ! or *).

Ich sehe da vor dem eth0 einen Backtick und nach der 1 ein Hochkomma. Ich hack ja auch gern mal per Hand ind der Config rum (mit wenig Erfolg :irre: ). Kann es sein das da der Fehler passiert ist? :???:
 
OP
C

Chaoshh

Member
Ich wüsste nicht wie - ich habe beide Zeilen mit c&p aus der bash rauskopiert und hier eingefügt. Natürlich die öff. ip Adressen sind geändert worden. Aber nur das. Man kann einfach mit "eth0:1" keine rule setzen. Nur ist jetzt die Frage ob es irgendwie möglich ist das eine rule nicht nur auf den Port, sondern auch noch auf die ip zutrifft.

Mal testweise sowas
Code:
iptables -t nat -A PREROUTING -i eth0 -s 345.345.345.345 -p tcp --dport 33333 -j DNAT --to-destination 192.168.2.33:22

So ungefähr stelle ich mir das vor - habe jetzt keinen Zugriff auf den Server weil ich auf der Arbeit bin, daher kanns noch nicht testen.
 

spoensche

Moderator
Teammitglied
Chaoshh schrieb:
I Nur ist jetzt die Frage ob es irgendwie möglich ist das eine rule nicht nur auf den Port, sondern auch noch auf die ip zutrifft.
Du kannst auch eine Source bzw. Destination IP verwenden und das Interface weglassen.Du musst die Destination IP verwenden, weil auf 345.345..ist ja nicht der Absender

Code:
iptables -t nat -A PREROUTING -p tcp -d 345.345.345.345 --dport 3333 -jDNAT --to-destination 192.168.2.33:22

Wenn der Zugriff nur von einer bestimmten IP oder einem bestimmten Netz aus möglich sein soll, dann musst du die Quelle mit dem Parameter -s angeben. (aber nach dem Protokoll und nicht davor)
 
OP
C

Chaoshh

Member
Hat beides geklappt. Sowohl deine wie auch meine Regel werden akzeptiert. Nun läuft alles. Thx für die Hilfe.
 
Oben