Weiterleitung eines bestimmten Ports

Weiterleitung eines bestimmten Ports

Ich habe versucht, einen bestimmten IP-Port an einen bestimmten IP-Port auf einem Linux-Rechner weiterzuleiten. Ich habe iptables mit dem folgenden Befehl verwendet:

iptables -t nat -A OUTPUT -p tcp -d 10.0.2.5 --dport 80 -j DNAT --to-destination 69.31.21.42:80

10.0.2.5 ist eine beliebige Adresse, die ich gewählt habe, um zu sehen, ob der Befehl funktioniert, und 69.31.21.42 ist die Adresse einer öffentlichen Website. Dann habe ich überprüft, ob die Weiterleitung funktioniert: Ich habe ausgeführt nmap -p 80 10.0.2.5und ein positives Ergebnis erhalten. Soweit sehr gut. Dann habe ich jedoch versucht, auszuführen nmap -p 81 10.0.2.5und auch ein positives Ergebnis erhalten. Das hatte ich nicht erwartet, da ich nur Port 80 weiterleiten wollte. Ich habe ausgeführt iptables -t nat -Lund festgestellt, dass tatsächlich der gesamte 10.0.2.5-Host auf 69.31.21.42:80 abgebildet ist:

Chain OUTPUT (policy ACCEPT)
target     prot opt source     destination
DNAT       tcp  --  anywhere   ip-10-0-2-5.ec2.internal  tcp dpt:http to:69.31.21.42:80

Was fehlt in meinem iptables-Befehl? Warum funktioniert es nicht --dport?

Antwort1

Sie müssen POSTROUTINGeine Kette verwenden, um das zu tun, was Sie tun möchten.

iptables -t nat -A POSTROUTING -p tcp -d 10.0.2.5 --dport 80 -j SNAT --to 69.31.21.42:80

Mann iptables

and POSTROUTING (for altering packets as they  are  about  to  go
                  out)

Antwort2

Zunächst einmal ist zu beachten, dass es nicht möglich ist, TCP IP:Port an einen anderen IP:Port weiterzuleiten. Dies ist nur mit UDP möglich und dafür gibt es ein separates Perl-Skript.

Ja, Sie können eine IP direkt an einen anderen Computer weiterleiten, nicht an einen bestimmten Port.

verwandte Informationen