必须开启IP转发和IP伪装,再添加80→8080端口转发规则:执行echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p启用内核转发;firewall-cmd --zone=public --add-masquerade --permanent启用伪装;firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080配置转发;最后firewall-cmd --reload生效。

要在Linux服务器上让外部用户通过80端口访问本机运行在8080端口的服务(比如Jenkins、Nginx测试站),必须配置firewalld的端口转发功能,否则直接访问80会连接被拒绝或超时。
确认基础条件并启用IP转发
firewalld端口转发依赖内核的IPv4转发能力,若未开启,规则将完全失效。先检查当前状态:
sudo sysctl net.ipv4.ip_forward
如果返回值是0,说明未启用。执行以下命令临时开启:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
为确保重启后仍生效,还需写入配置文件:
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
为public区域启用伪装(Masquerade)
这是端口转发的【必要前提】,没有它,DNAT无法完成地址重写,流量会在转发前被丢弃。
执行永久启用命令:
sudo firewall-cmd --zone=public --add-masquerade --permanent
注意:仅运行--add-masquerade不加--permanent会导致重启后失效,且后续转发规则也无法生效。
添加80→8080端口转发规则
方法一:转发到本机8080端口(最常用场景)
sudo firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
方法二:显式指定目标地址为127.0.0.1(增强可读性,等效于方法一)
sudo firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toaddr=127.0.0.1:toport=8080
方法三:若服务监听在特定网卡(如192.168.1.100),可定向转发(需确保该地址可达)
sudo firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=8080
重载防火墙使全部配置生效
第一步:重新加载所有规则
sudo firewall-cmd --reload
第二步:验证转发规则是否已注册
sudo firewall-cmd --zone=public --list-forward-ports
输出中应包含类似内容:
port=80:proto=tcp:toport=8080:toaddr=
第三步:确认服务已在8080端口监听(例如用ss -tlnp | grep :8080),此时访问服务器IP的80端口即可抵达8080服务。
















