Ich möchte, dass auf ppp0 an Port 8001 eingehende Verbindungen auf eth0 an Port 8080 zu 192.168.1.200 geroutet werden.
Ich habe diese beiden Regeln
-A PREROUTING -p tcp -m tcp --dport 8001 -j DNAT --to-destination 192.168.1.200:8080
-A FORWARD -m state -p tcp -d 192.168.1.200 --dport 8080 --state NEW,ESTABLISHED,RELATED -j ACCEPT
und es funktioniert nicht. Was vermisse ich?
Antworten:
Zunächst sollten Sie prüfen, ob die Weiterleitung überhaupt zulässig ist:
Wenn beide zurückkehren, ist
1
es in Ordnung. Wenn nicht, machen Sie folgendes:Zweitens -
DNAT
könnte nur auf demnat
Tisch angewendet werden . Daher sollte Ihre Regel auch durch Hinzufügen von Tabellenspezifikationen erweitert werden (-t nat
):Beide Regeln gelten nur für den TCP-Verkehr (wenn Sie auch UDP ändern möchten, müssen Sie ähnliche Regeln mit festgelegten
-p udp
Optionen angeben).Last, but not least ist die Routing-Konfiguration. Art:
und prüfen Sie, ob
192.168.1.0/24
es sich um zurückgegebene Routing-Einträge handelt.quelle
sysctl
Syntax wiesysctl net.ipv4.conf.eth0.forwarding=1
-A
mit-D
Ich denke, was Sie wollen, ist:
quelle
Sie haben die Postrouting-Quelladresse vergessen.
Und vergessen Sie nicht, Ihre Linux-Firewall als Standard-Gateway für Computer mit der Adresse 192.168.1.200 festzulegen.
quelle
POSTROUNTING
Stufe rückwärts geschafft . An diesem Punkt dreht sich das Gespräch--destination
eher um als um--source
.Ich habe das folgende Bash-Skript erstellt, um dies auf meinem Linux-Router zu tun. Es leitet die WAN-IP automatisch ein und bestätigt Ihre Auswahl, bevor Sie fortfahren.
Die Verwendung des Skripts ist einfach, kopieren Sie es und fügen Sie es in eine Datei und dann.
Dieselbe Regel entfernen
Ich dachte, dies könnte jemandem Zeit auf dem jeweiligen Router sparen.
quelle
Ich hatte die Aufgabe, MACHINE_A zu veranlassen, zu denken, dass der Dienst auf MACHINE_B physisch ausgeführt wird, aber alle Anforderungen transparent an MACHINE_C umzuleiten.
Der Trick bestand darin, MASQUERADE zu verwenden.
Bitte beachten Sie, dass Sie die Befehle möglicherweise optimieren möchten:
Paketweiterleitung nur auf einer bestimmten Schnittstelle zulassen. Zum Beispiel:
Entfernen Sie Folgendes, damit nicht nur MACHINE_A, sondern auch alle anderen Benutzer die Portweiterleitung verwenden können:
quelle
Versuchen
Diese Dateien teilen dem Kernel mit, dass er Pakete zwischen den Schnittstellen weiterleiten darf.
quelle
Dieser Befehl funktioniert bei mir nicht:
Ich habe 2 LAN-Schnittstellen und arbeite weiter, wenn ich schreibe:
PREROUTING und FORWARD sind natürlich auch notwendig :)
quelle