Heim >Betrieb und Instandhaltung >Betrieb und Wartung von Linux >So richten Sie die Portweiterleitung unter Linux ein

So richten Sie die Portweiterleitung unter Linux ein

PHPz
PHPzOriginal
2023-07-05 15:48:107095Durchsuche

So richten Sie die Portweiterleitung unter Linux ein

Portweiterleitung ist eine sehr wichtige Funktion in verschiedenen Netzwerkanwendungen. Damit können Sie externen Datenverkehr an bestimmte Ports in Ihrem internen Netzwerk weiterleiten. Auf Linux-Systemen wird die Portweiterleitungsfunktion mithilfe von iptables und sysctl implementiert. In diesem Artikel wird erläutert, wie Sie die Portweiterleitung unter Linux einrichten, und es werden entsprechende Codebeispiele bereitgestellt.

  1. Kernel-Parameter überprüfen

Bevor wir mit der Einrichtung der Portweiterleitung beginnen, müssen wir zunächst prüfen, ob die Kernel-Parameter die Weiterleitungsfunktion zulassen. Durch Ausführen des folgenden Befehls können Sie die Weiterleitungseinstellungen des aktuellen Systems anzeigen:

sysctl net.ipv4.ip_forward

Wenn das Ausgabeergebnis net.ipv4.ip_forward = 1 ist, bedeutet dies, dass die Weiterleitungsfunktion aktiviert wurde. Wenn das Ausgabeergebnis net.ipv4.ip_forward = 0 ist, bedeutet dies, dass die Weiterleitungsfunktion nicht aktiviert ist. Wenn die Weiterleitungsfunktion nicht aktiviert ist, können Sie die Weiterleitungsfunktion vorübergehend aktivieren, indem Sie den folgenden Befehl ausführen: net.ipv4.ip_forward = 1,说明转发功能已经开启。如果输出结果为net.ipv4.ip_forward = 0,则表示转发功能未开启。在转发功能未开启的情况下,可以通过运行以下命令来临时开启转发功能:

sysctl -w net.ipv4.ip_forward=1

如果需要永久开启转发功能,可以编辑/etc/sysctl.conf文件,并添加或修改以下参数:

net.ipv4.ip_forward=1

修改完毕后,保存文件并运行以下命令使其生效:

sysctl -p
  1. 设置端口转发

实现端口转发的方式有很多种,下面我们将介绍两种常用的方式:使用iptables和使用socat工具。

A. 使用iptables

iptables是Linux系统上常用的防火墙工具,我们可以使用它来设置端口转发。以下是通过iptables设置端口转发的示例代码:

iptables -t nat -A PREROUTING -p tcp --dport <external_port> -j DNAT --to-destination <internal_ip>:<internal_port>
iptables -t nat -A POSTROUTING -j MASQUERADE

其中749375b4434469ed7a5194cf26b2a289是外部端口,6fccd0679a7f07f1f43815050eb515f2是内部服务器的IP地址,63f256d5d64211b8417741a9944fd8a5是内部服务器的端口号。这两条命令将会将外部流量转发到内部服务器上。如果希望外部流量经过转发后仍然能够正确识别源IP地址,可以添加以下命令:

iptables -t nat -A POSTROUTING -o <external_interface> -j MASQUERADE

其中881d938581b5738c7a57b1cbe4098023是外部接口的名称,比如eth0

B. 使用socat工具

socat是一款强大的网络工具,可以进行各种网络连接和转发。以下是通过socat设置端口转发的示例代码:

socat TCP-LISTEN:<external_port>,fork TCP:<internal_ip>:<internal_port>

其中749375b4434469ed7a5194cf26b2a289是外部端口,6fccd0679a7f07f1f43815050eb515f2是内部服务器的IP地址,63f256d5d64211b8417741a9944fd8a5是内部服务器的端口号。这条命令将会将外部流量转发到内部服务器上。

  1. 应用转发规则

无论是使用iptables还是socat工具,设置的转发规则都只在当前会话中有效。如果希望在系统重启后依然有效,需要将这些规则应用到系统中。

A. 使用iptables

通过运行以下命令可以将iptables规则应用到系统中:

iptables-save > /etc/sysconfig/iptables

B. 使用socat工具

socat工具默认在后台运行,如果希望socat规则在系统重启后依然有效,可以将socat配置加入到系统启动脚本中。例如,在Ubuntu系统上可以编辑/etc/rc.local文件并添加以下内容:

/path/to/socat TCP-LISTEN:<external_port>,fork TCP:<internal_ip>:<internal_port> &

注意,/path/to/socatrrreee

Wenn Sie die Weiterleitungsfunktion dauerhaft aktivieren müssen, können Sie die Datei /etc/sysctl.conf bearbeiten Datei und fügen Sie die folgenden Parameter hinzu oder ändern Sie sie:

rrreee

Speichern Sie nach der Änderung die Datei und führen Sie den folgenden Befehl aus, um sie wirksam zu machen:

rrreee

    Portweiterleitung festlegen🎜🎜🎜Dort Es gibt viele Möglichkeiten, die Portweiterleitung zu implementieren. Im Folgenden stellen wir zwei häufig verwendete Methoden vor: die Verwendung von iptables und die Verwendung des Socat-Tools. 🎜🎜A. Mit iptables🎜🎜iptables ist ein häufig verwendetes Firewall-Tool auf Linux-Systemen, mit dem wir die Portweiterleitung einrichten können. Im Folgenden finden Sie einen Beispielcode zum Einrichten der Portweiterleitung über iptables: 🎜rrreee🎜wobei 749375b4434469ed7a5194cf26b2a289 der externe Port und 6fccd0679a7f07f1f43815050eb515f2 die IP-Adresse von ist des internen Servers, 63f256d5d64211b8417741a9944fd8a5 ist die Portnummer des internen Servers. Diese beiden Befehle leiten externen Datenverkehr an den internen Server weiter. Wenn Sie möchten, dass die Quell-IP-Adresse nach der Weiterleitung des externen Datenverkehrs korrekt identifiziert wird, können Sie den folgenden Befehl hinzufügen: 🎜rrreee🎜wobei 881d938581b5738c7a57b1cbe4098023 der Name der externen Schnittstelle ist, z. B. eth0 . 🎜🎜B. Verwenden Sie das Socat-Tool🎜🎜Socat ist ein leistungsstarkes Netzwerktool, das verschiedene Netzwerkverbindungen und Weiterleitungen durchführen kann. Im Folgenden finden Sie einen Beispielcode zum Einrichten der Portweiterleitung über socat: 🎜rrreee🎜wobei 749375b4434469ed7a5194cf26b2a289 der externe Port und 6fccd0679a7f07f1f43815050eb515f2 die IP-Adresse von ist des internen Servers, 63f256d5d64211b8417741a9944fd8a5 ist die Portnummer des internen Servers. Dieser Befehl leitet externen Datenverkehr an den internen Server weiter. 🎜
      🎜Weiterleitungsregeln anwenden🎜🎜🎜Ob mit iptables oder dem Socat-Tool, die festgelegten Weiterleitungsregeln sind nur in der aktuellen Sitzung gültig. Wenn Sie möchten, dass die Regeln auch nach einem Systemneustart gültig bleiben, müssen Sie diese Regeln auf das System anwenden. 🎜🎜A. Verwenden Sie iptables🎜🎜Sie können iptables-Regeln auf das System anwenden, indem Sie den folgenden Befehl ausführen: 🎜rrreee🎜B. Das Socat-Tool wird standardmäßig im Hintergrund ausgeführt Um nach dem Neustart des Systems gültig zu bleiben, können Sie die Socat-Konfiguration zum Systemstartskript hinzufügen. Auf Ubuntu-Systemen können Sie beispielsweise die Datei /etc/rc.local bearbeiten und den folgenden Inhalt hinzufügen: 🎜rrreee🎜Beachten Sie, dass /path/to/socat dies tun muss durch den tatsächlichen Socat-Werkzeugweg ersetzt werden. 🎜🎜Zusammenfassung🎜🎜Dieser Artikel beschreibt, wie man die Portweiterleitung auf einem Linux-System einrichtet, und stellt Codebeispiele mit den Tools iptables und socat bereit. Durch die Einrichtung der Portweiterleitung können Sie externen Datenverkehr flexibel an interne Server weiterleiten, um Lastausgleich, Portzuordnung und andere Funktionen für Netzwerkanwendungen zu erreichen. 🎜

Das obige ist der detaillierte Inhalt vonSo richten Sie die Portweiterleitung unter Linux ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn