Beschreibt, wie der "Hostname: Portnummer" eines Webservers unter Linux auf "einen anderen Host: Portnummer" übertragen (dh Portweiterleitung) wird. Verwenden Sie dazu "iptables", die standardmäßig in CentOS und Ubuntu enthalten sind. Der diesmal eingeführte Inhalt kann wahrscheinlich mit Firewalld usw. realisiert werden, die standardmäßig in CentOS 7 oder höher enthalten ist. Als Ergebnis der Suche nach einer Methode zur Portweiterleitung, die nicht so stark von der Umgebung abhängt, habe ich mich für die Verwendung von iptables entschieden. Es gibt einige Artikel, die Portweiterleitungsmethoden mit iptable einführen, aber selbst wenn ich diese Methoden gehorsam ausprobiert habe, hat es nicht funktioniert, und ich war ziemlich süchtig nach der Realisierung, daher werde ich es in diesem Artikel noch einmal zusammenfassen. Diesmal wurde bestätigt, dass nur das http (https) -Protokoll funktioniert. Wenn es sich jedoch um eine TCP-Kommunikation handelt, sollte es mit anderen Protokollen (ssh, ftp usw.) funktionieren.
Führen Sie den folgenden Befehl auf dem Übertragungsquellenserver aus
--dport
: Zielportnummer vor der Konvertierung --to-destination
: "Ziel-IP: Portnummer" nach der Konvertierung$ sudo iptables -t nat -A PREROUTING -p tcp \
--dport 10080 -j DNAT \
--to-destination 23.45.67.89:80
--d
: Übersetzte IP-Adresse --dport
: Zielportnummer nach der Konvertierung -j MASQUERADE
: Führen Sie eine IP-Maskerade durch$ sudo iptables -t nat -A POSTROUTING -p tcp \
-d 23.45.67.89 --dport 80 \
-j MASQUERADE
Eine Beschreibung, die erforderlich ist, um die Weiterleitung von vom Client gesendeten Paketen zu ermöglichen.
Bei der TCP-Kommunikation erfolgt die bidirektionale Kommunikation nach einer Methode namens 3way-Handshake. Daher müssen Einstellungen vorgenommen werden, um beide Kommunikationen zu ermöglichen.
Referenzseite: Mit Linux erstellter Kamin [Einstellungen für die Paketfilterung]
Der Befehl, mit dem das Paket an "Client → Webserver" übergeben werden kann, lautet wie folgt
$ sudo iptables -A FORWARD -p tcp \
-d 23.45.67.89 --dport 80 \
-j ACCEPT
-s: Quelladresse" und "" --sport
: Quellportnummer sein. Hinweis$ sudo iptables -A FORWARD -p tcp \
! --syn -m state --state ESTABLISHED \
-s 23.45.67.89 --sport 80 \
-j ACCEPT
$ sudo iptables -t nat -A OUTPUT -p tcp \
--dport 10080 -j DNAT \
--to-destination 23.45.67.89:80
Recommended Posts