在 CentOS 上使用 iptables 做 NAT,通常分为 SNAT(内网访问外网) 和 DNAT(外网访问内网) 两种场景。下面按常见用法说明(以 CentOS 7 为例,使用 Legacy iptables)。
# 临时生效
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
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 -t nat -A PREROUTING -d 1.2.3.4 -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
yum install iptables-services
systemctl enable iptables
iptables-save > /etc/sysconfig/iptables
恢复:
iptables-restore < /etc/sysconfig/iptables
iptables -t nat -L -n -v
iptables -L -n -v
systemctl stop firewalld
systemctl disable firewalld
如果你能说明:
我可以直接帮你写一套完整规则。