Firewalld 配置端口转发方法

Eric 杂记 362 次浏览 评论已关闭

在开始设置之前,请检查系统是否安装和启用 Firewalld 防火墙。其后,具体配置流程如下。

1. 将系统内核 IP 转发参数设为开启。

# 查询有无开启 IP 转发(若返回数值 0 则表示未开启)
sysctl -n net.ipv4.ip_forward

# 开启 IP 转发
echo "net.ipv4.ip_forward = 1" | tee --append /etc/sysctl.conf
sysctl -p

# 重启系统(建议,但非必需)
reboot

2. Firewalld 添加 IP 伪装设置(这里添加设置到 public 默认区域)。

# 查询有无设置 IP 伪装
firewall-cmd --zone=public --query-masquerade

# 添加 IP 伪装设置
firewall-cmd --permanent --zone=public --add-masquerade

# 取消 IP 伪装设置(如果之后要移除设置)
firewall-cmd --permanent --zone=public --remove-masquerade

# 使设置生效
firewall-cmd --reload

3. Firewalld 配置端口转发(这里添加设置到 public 默认区域)。

# 先开放转发端口访问
firewall-cmd --permanent --zone=public --add-port=8080/tcp

# 转发到本机其它端口(示例将 8080 端口流量转发到 9090 端口)
firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=9090

# 转发到其它主机相同端口(示例将 8080 端口流量转发到 12.34.56.78 主机 8080 端口)
firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toaddr=12.34.56.78

# 转到到其它主机指定端口(示例将 8080 端口流量转发到 12.34.56.78 主机 9090 端口)
firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=9090:toaddr=12.34.56.78

# 使设置生效
firewall-cmd --reload

如果之后要移除端口转发,修改之前的添加命令,将其中的 --add-forward-port 参数改为 --remove-forward-port 即可。

补充:其它防火墙(Iptables 和 UFW)端口转发方法可参考这篇文章