手把手教你用firewalld配置CentOS端口转发(附代码示例)

其他 作者:80KM编辑

CentOS端口转发是将发送到某IP和端口的数据包,重定向到另一IP和端口的技术。在CentOS中常用于隐藏真实服务器IP、实现内网穿透或多服务共享公网IP。


核心配置步骤

1. 启用IP转发(必须)

```bash

 临时开启

echo 1 > /proc/sys/net/ipv4/ip_forward

永久开启(编辑/etc/sysctl.conf)

net.ipv4.ip_forward = 1

sysctl -p   生效

```

2. 选择防火墙方案

CentOS 7+推荐firewalld(简单热加载):

```bash

 启用伪装(必须)

firewall-cmd --add-masquerade --permanent

 添加转发规则:外部8080→内网192.168.1.100:80

firewall-cmd --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.100 --permanent

重载生效

firewall-cmd --reload

```

传统iptables方案(CentOS 6):

```bash

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

iptables -t nat -A POSTROUTING -j MASQUERADE

service iptables save   保存规则

```

常用场景示例

| 场景 | 命令 |

|------|------|

| 本机80→8080 | `firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent` |

| 限制来源IP | 使用`--add-rich-rule`配合source地址 |

| 查看所有规则 | `firewall-cmd --list-all` |

常见问题

- 转发不生效:检查IP转发是否开启(`sysctl net.ipv4.ip_forward`)、伪装是否启用

- SELinux阻止:临时测试可`setenforce 0`

- 目标服务器防火墙:确保目标IP的防火墙允许对应端口

安全建议

- 只转发必要端口,避免使用22、3389等默认端口

- 用rich-rule限制来源IP

- 定期审计转发规则(`firewall-cmd --list-all`)

一句话总结:开启IP转发 → 启用伪装 → 添加转发规则 → 重载防火墙,即可完成CentOS端口转发配置。

另外,可以借助 80KM 端口流量转发程序,搭建流量中转节点,所有外网访问经过节点再回源,彻底隐藏真实 IP。支持 80、443 常用网页端口,兼容各大系统。