在 CentOS 上使用 iptables 做 NAT,通常分为 SNAT(内网访问外网) 和 DNAT(外网访问内网) 两种场景。下面以 CentOS 7 为例(CentOS 8 默认用 nftables,但 iptables 仍可用)。
# 临时生效
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效
vi /etc/sysctl.conf
添加或修改:
net.ipv4.ip_forward = 1
使配置生效:
sysctl -p
192.168.10.0/241.2.3.4iptables -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
1.2.3.4192.168.10.10:80iptables -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
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
如果你能说明:
我可以给你一份直接可执行的配置。