在 CentOS 上配置 iptables 转发(NAT 转发),通常用于 端口转发、网关、流量转发 等场景。下面按 最常用场景 给你一个完整说明(CentOS 6 / CentOS 7 通用,CentOS 7 注意 firewalld 冲突)。
echo 1 > /proc/sys/net/ipv4/ip_forward
编辑:
vi /etc/sysctl.conf
添加或修改:
net.ipv4.ip_forward = 1
生效:
sysctl -p
验证:
cat /proc/sys/net/ipv4/ip_forward
# 输出 1 表示成功
service iptables status
systemctl status iptables
⚠️ CentOS 7 默认使用 firewalld 如果启用了 firewalld,建议先关闭:
systemctl stop firewalld
systemctl disable firewalld
安装 iptables:
yum install -y iptables-services
systemctl enable iptables
systemctl start iptables
把访问 本机 8080 端口 的流量转发到 192.168.1.100:80
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
或指定出口网卡(推荐):
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT
service iptables save
iptables-save > /etc/sysconfig/iptables
或使用服务保存:
service iptables save
# 开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# NAT 转发
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
# 允许转发
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT
如果你想把 这台服务器当路由器 使用:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -L -n -v
iptables -L -n -v
# 查看是否命中规则
iptables -t nat -L -v
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的配置方案。