Linux使用SNAT实现局域网上网


1、一台能上网的Linux机器

2、操作步骤

host-10-11

配置snat,开启路由转发

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o ens34 -j MASQUERADE
# -s 指定内网网段
# -o 指定能上公网的出口网卡名称
echo "1" > /proc/sys/net/ipv4/ip_forward

host-10-12

添加网关指向10.10.10.11

route add default gw 10.10.10.11
# 或者
echo 'GATEWAY=10.10.10.11' >> /etc/sysconfig/network
# 重启网卡

备注

永久开启路由转发

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

地址伪装

# iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT --to-source 218.29.30.31
    地址伪装——MASQUERADE 
        适用于外网 IP 地址非固定的情况
        对于 ADSL 拨号连接,接口通常为 ppp0、ppp1
        将 SNAT 规则改为 MASQUERADE 即可,即将原地址实时的转换为动态的公网 IP
# iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE