温馨提示×

centos iptables怎么 nat

小樊
39
2026-09-17 21:07:07
栏目: 智能运维

在 CentOS 上使用 iptables 做 NAT,通常分为 SNAT(内网访问外网)DNAT(外网访问内网) 两种场景。下面以 CentOS 7 为例(CentOS 8 默认用 nftables,但 iptables 仍可用)。


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

# 临时生效
echo 1 > /proc/sys/net/ipv4/ip_forward

# 永久生效
vi /etc/sysctl.conf

添加或修改:

net.ipv4.ip_forward = 1

使配置生效:

sysctl -p

二、SNAT(内网通过网关访问外网)

场景

  • 内网网段:192.168.10.0/24
  • 网关外网 IP:1.2.3.4
iptables -t nat -A POSTROUTING \
  -s 192.168.10.0/24 \
  -o eth0 \
  -j SNAT --to-source 1.2.3.4

如果是 动态 IP(如拨号),用 MASQUERADE:

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

三、DNAT(外网访问内网服务)

场景

  • 外网 IP:1.2.3.4
  • 内网服务器:192.168.10.10:80
iptables -t nat -A PREROUTING \
  -i eth0 \
  -p tcp --dport 80 \
  -j DNAT --to-destination 192.168.10.10:80

同时需要允许转发:

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

四、保存 iptables 规则(CentOS 7)

yum install -y iptables-services
systemctl enable iptables
service iptables save

或手动保存:

iptables-save > /etc/sysconfig/iptables

五、常用查看命令

iptables -t nat -L -n -v
iptables -L -n -v

如果你能说明:

  • CentOS 版本
  • 网络拓扑(哪张网卡、什么网段)
  • 想实现什么 NAT 场景

我可以给你一份直接可执行的配置

0