在 CentOS 上使用 iptables 做转发(端口转发 / 流量转发),通常分为三种常见场景。下面按最常用、最清晰的方式说明。
iptables 转发依赖内核转发功能。
sysctl -w net.ipv4.ip_forward=1
编辑:
vi /etc/sysctl.conf
添加或修改:
net.ipv4.ip_forward = 1
生效:
sysctl -p
例如:访问 CentOS:80 转发到 CentOS:8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
✅ 仅对本机外部访问生效
✅ 本机 localhost 访问不生效(如需本机也生效,加 OUTPUT 规则)
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080
例如:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.20:8080
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.20 --dport 8080 -j MASQUERADE
或简化版(SNAT):
iptables -t nat -A POSTROUTING -j MASQUERADE
如果 CentOS 是“中转机”,必须允许转发:
iptables -A FORWARD -p tcp -d 192.168.1.20 --dport 8080 -j ACCEPT
或简单允许所有(不推荐生产):
iptables -P FORWARD ACCEPT
service iptables save
yum install iptables-services
systemctl enable iptables
systemctl start iptables
iptables-save > /etc/sysconfig/iptables
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to 10.0.0.5:22
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A FORWARD -s 1.2.3.4 -j ACCEPT
iptables -A FORWARD -j DROP
# 查看 nat 规则
iptables -t nat -L -n -v
# 查看转发是否开启
cat /proc/sys/net/ipv4/ip_forward
# 清理规则(谨慎)
iptables -F
iptables -t nat -F
如果你能告诉我:
我可以给你精确可复制的配置。