温馨提示×

centos iptables怎样 nat

小樊
34
2026-09-20 23:56:31
栏目: 智能运维

在 CentOS 上使用 iptables 做 NAT(通常是要做出口上网 / 端口转发 / 内网共享公网 IP),下面按常见场景给你说明。


一、开启内核 IP 转发(必须)

NAT 依赖 Linux 的 IP 转发功能。

临时开启

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

永久开启(CentOS 7/8)

编辑:

vi /etc/sysctl.conf

添加或修改:

net.ipv4.ip_forward = 1

生效:

sysctl -p

二、SNAT(内网通过公网 IP 上网)

适用于:
内网机器 → CentOS 网关 → 互联网

假设:

  • 公网网卡:eth0
  • 内网网段:192.168.1.0/24

规则

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

或固定公网 IP(SNAT):

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 公网IP

允许转发

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

三、DNAT(端口映射 / 外网访问内网)

适用于:
公网访问 → CentOS → 内网服务器

示例:把公网 80 端口映射到内网 192.168.1.10:80

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80

允许转发

iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT

四、保存 iptables 规则(CentOS 7)

CentOS 7 默认可能用 firewalld,如用 iptables:

yum install iptables-services -y
systemctl stop firewalld
systemctl disable firewalld
systemctl enable iptables

保存规则:

service iptables save
# 或
iptables-save > /etc/sysconfig/iptables

五、常见 NAT 类型总结

类型 用途
SNAT nat POSTROUTING 内网出网
MASQUERADE nat POSTROUTING 动态公网 IP
DNAT nat PREROUTING 端口映射

六、排错建议

  1. 确认 ip_forward=1
  2. 检查 iptables -t nat -L -n -v
  3. 确认 FORWARD 链没有被 DROP
  4. 云服务器注意安全组 / 平台防火墙

如果你能告诉我:

  • CentOS 版本(6 / 7 / 8)
  • 出网 NAT 还是 端口映射
  • 网卡名称和 IP 规划

我可以给你一套可直接复制用的完整规则

0