Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.9. 端口转发

使用 firewalld,您可以设置端口重定向,以便到达系统上某个端口的任何传入的流量都被传送到您选择的其他内部端口或另一台计算机上的外部端口。

5.9.1. 向重定向添加端口

在您将一个端口的流量重定向到另一个端口或另一个地址之前,您需要了解 3 个问题:数据包到达哪个端口、使用哪个协议,以及您要重定向它们的位置。
将端口重新指向另一个端口:
~]# firewall-cmd --add-forward-port=port=port-number:proto=tcp|udp|sctp|dccp:toport=port-number
将端口重定向到不同 IP 地址的另一个端口:
  1. 添加要转发的端口:
    ~]# firewall-cmd --add-forward-port=port=port-number:proto=tcp|udp:toport=port-number:toaddr=IP
  2. 启用伪装:
    ~]# firewall-cmd --add-masquerade

例 5.1. 将 TCP 端口 80 重定向到同一计算机上的端口 88

重定向端口:
  1. 将端口 80 重定向到 TCP 流量的端口 88:
    ~]# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=88
  2. 使新设置具有持久性:
    ~]# firewall-cmd --runtime-to-permanent
  3. 检查是否重定向了端口:
    ~]# firewall-cmd --list-all 

5.9.2. 删除重定向的端口

要删除重定向的端口:
~]# firewall-cmd --remove-forward-port=port=port-number:proto=<tcp|udp>:toport=port-number:toaddr=<IP>
要删除重定向到不同地址的转发端口:
  1. 删除转发的端口:
    ~]# firewall-cmd --remove-forward-port=port=port-number:proto=<tcp|udp>:toport=port-number:toaddr=<IP>
  2. 禁用伪装:
    ~]# firewall-cmd --remove-masquerade
注意
使用此方法重定向端口只可用于基于 IPv4 的流量。对于 IPv6 重定向设置,您需要使用丰富的规则。如需更多信息,请参阅 第 5.15 节 “使用"Rich Language"语法配置复杂防火墙规则”
要重定向到外部系统,需要启用伪装。如需更多信息,请参阅 第 5.10 节 “配置 IP 地址伪装”

例 5.2. 删除在同一机器上将 TCP 端口 80 转发到端口 88

删除端口重定向:
  1. 列出重定向的端口:
    ~]# firewall-cmd --list-forward-ports 
    port=80:proto=tcp:toport=88:toaddr=
  2. 从防火墙中删除重定向的端口:
    ~]# firewall-cmd --remove-forward-port=port=80:proto=tcp:toport=88:toaddr=
  3. 使新设置具有持久性:
    ~]# firewall-cmd --runtime-to-permanent