Maison > Opération et maintenance > exploitation et maintenance Linux > Comment configurer la redirection de port sous Linux

Comment configurer la redirection de port sous Linux

PHPz
Libérer: 2023-07-05 15:48:10
original
7099 Les gens l'ont consulté

Comment configurer la redirection de port sous Linux

La redirection de port est une fonction très importante dans diverses applications réseau. Il vous permet de transférer le trafic externe vers des ports spécifiques de votre réseau interne. Sur les systèmes Linux, la fonction de redirection de port est implémentée à l'aide de iptables et sysctl. Cet article explique comment configurer la redirection de port sous Linux et fournit des exemples de code correspondants.

  1. Vérifier les paramètres du noyau

Avant de commencer à configurer la redirection de port, nous devons d'abord vérifier si les paramètres du noyau autorisent la fonction de redirection. En exécutant la commande suivante, vous pouvez afficher les paramètres de transfert du système actuel :

sysctl net.ipv4.ip_forward
Copier après la connexion

Si le résultat de sortie est net.ipv4.ip_forward = 1, cela signifie que la fonction de transfert a été activée. Si le résultat de sortie est net.ipv4.ip_forward = 0, cela signifie que la fonction de transfert n'est pas activée. Lorsque la fonction de transfert n'est pas activée, vous pouvez activer temporairement la fonction de transfert en exécutant la commande suivante : net.ipv4.ip_forward = 1,说明转发功能已经开启。如果输出结果为net.ipv4.ip_forward = 0,则表示转发功能未开启。在转发功能未开启的情况下,可以通过运行以下命令来临时开启转发功能:

sysctl -w net.ipv4.ip_forward=1
Copier après la connexion

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

net.ipv4.ip_forward=1
Copier après la connexion

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

sysctl -p
Copier après la connexion
  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
Copier après la connexion

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

iptables -t nat -A POSTROUTING -o <external_interface> -j MASQUERADE
Copier après la connexion

其中<external_interface>是外部接口的名称,比如eth0

B. 使用socat工具

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

socat TCP-LISTEN:<external_port>,fork TCP:<internal_ip>:<internal_port>
Copier après la connexion

其中<external_port>是外部端口,<internal_ip>是内部服务器的IP地址,<internal_port>是内部服务器的端口号。这条命令将会将外部流量转发到内部服务器上。

  1. 应用转发规则

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

A. 使用iptables

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

iptables-save > /etc/sysconfig/iptables
Copier après la connexion

B. 使用socat工具

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

/path/to/socat TCP-LISTEN:<external_port>,fork TCP:<internal_ip>:<internal_port> &
Copier après la connexion

注意,/path/to/socatrrreee

Si vous devez activer la fonction de transfert de manière permanente, vous pouvez modifier le /etc/sysctl.conf et ajoutez ou modifiez les paramètres suivants :

rrreee

Après modification, enregistrez le fichier et exécutez la commande suivante pour le rendre effectif :

rrreee

    Définissez la redirection de port🎜🎜🎜Là Il existe de nombreuses façons d'implémenter la redirection de port. Ci-dessous, nous présenterons deux méthodes couramment utilisées : utiliser iptables et utiliser l'outil socat. 🎜🎜A. Utilisation d'iptables🎜🎜iptables est un outil de pare-feu couramment utilisé sur les systèmes Linux, nous pouvons l'utiliser pour configurer la redirection de port. Voici un exemple de code pour configurer la redirection de port via iptables : 🎜rrreee🎜où <external_port> est le port externe, <internal_ip> est l'adresse IP de le serveur interne, <internal_port> est le numéro de port du serveur interne. Ces deux commandes transmettront le trafic externe vers le serveur interne. Si vous souhaitez que l'adresse IP source soit correctement identifiée après le transfert du trafic externe, vous pouvez ajouter la commande suivante : 🎜rrreee🎜où <external_interface> est le nom de l'interface externe, tel que eth0 . 🎜🎜B. Utilisez l'outil socat🎜🎜socat est un outil réseau puissant qui peut effectuer diverses connexions réseau et transferts. Voici un exemple de code pour configurer la redirection de port via socat : 🎜rrreee🎜où <external_port> est le port externe, <internal_ip> est l'adresse IP de le serveur interne, <internal_port> est le numéro de port du serveur interne. Cette commande transmettra le trafic externe vers le serveur interne. 🎜
      🎜Appliquer les règles de transfert🎜🎜🎜Que vous utilisiez iptables ou l'outil socat, les règles de transfert définies ne sont valables que dans la session en cours. Si vous souhaitez que les règles restent valides après un redémarrage du système, vous devez appliquer ces règles au système. 🎜🎜A. Utilisez iptables🎜🎜Vous pouvez appliquer les règles iptables au système en exécutant la commande suivante : 🎜rrreee🎜B Utilisez l'outil socat🎜🎜L'outil socat s'exécute en arrière-plan par défaut. restent valides après le redémarrage du système, vous pouvez ajouter la configuration socat au script de démarrage du système. Par exemple, sur les systèmes Ubuntu, vous pouvez modifier le fichier /etc/rc.local et ajouter le contenu suivant : 🎜rrreee🎜Notez que /path/to/socat doit être remplacé par le chemin d'outil socat réel. 🎜🎜Résumé🎜🎜Cet article décrit comment configurer la redirection de port sur un système Linux, en fournissant des exemples de code utilisant les outils iptables et socat. En configurant la redirection de port, vous pouvez transférer de manière flexible le trafic externe vers des serveurs internes pour réaliser l'équilibrage de charge, le mappage de ports et d'autres fonctions pour les applications réseau. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal