在 CentOS 上使用 iptables 做转发(端口转发 / NAT 转发),通常分为以下几种常见场景。下面以 CentOS 7 为例(CentOS 6 类似,CentOS 8 推荐用 nftables,但 iptables 仍可兼容)。
sysctl -w net.ipv4.ip_forward=1
vi /etc/sysctl.conf
添加或修改:
net.ipv4.ip_forward = 1
生效:
sysctl -p
例如:访问 80 端口,转发到 8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
如果是本机访问自己:
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-port 8080
例如:
192.168.1.10192.168.1.20:808080 → 转发到 192.168.1.20:8080iptables -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 SNAT --to-source 192.168.1.10
或使用 MASQUERADE(适合动态 IP):
iptables -t nat -A POSTROUTING -j MASQUERADE
例如只允许 1.2.3.4 访问转发:
iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4 --dport 80 -j DNAT --to-destination 192.168.1.20:8080
yum install iptables-services -y
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables
systemctl start iptables
ip_forwardfilter 表规则阻止iptables -L -n -v
OUTPUT 链规则# 开启转发
sysctl -w net.ipv4.ip_forward=1
# 清空规则(谨慎)
iptables -F
iptables -t nat -F
# 端口转发
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.20:8080
iptables -t nat -A POSTROUTING -j MASQUERADE
# 允许转发
iptables -A FORWARD -p tcp -d 192.168.1.20 --dport 8080 -j ACCEPT
如果你有 具体场景(比如:
可以告诉我,我给你定制规则。