通过iptables的SNAT功能实现内网主机共享上网

环境:三台内网IP为172.16.1.0/24段的主机BCD

   一台A主机有双网卡,eth0配有可以上外网的IP 192.168.1.102eth1配有跟B,C,D同一段内网的IP 172.16.1.102,不用配网关

问题:如何让三台内网主机可以通过A主机来访问外网

设置方法如下:

1.B,C,D的三台主机的网关配置为A的内网卡地址,也就是172.16.1.102,DNS要配置,不然不能上网

2.A主机上开启路由转发,永久设置如下

    编辑/etc/sysctl.conf

    把net.ipv4.ip_forward = 0 改为1

    sysctl -p 生效

3.再在A主机上执行(iptables没有开启的情况下)

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 192.168.1.102

如果开启了iptables

可以打开下面默认或者停止iptables

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -P INPUT ACCEPT


局域网共享的两条命令方法:

方法1:适合于有固定外网地址的:

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

(1)-s 192.168.1.0/24 办公室或IDC内网网段。

(2)-o eth0 为网关的外网卡接口。

(3)-j SNAT --to-source 10.0.0.19 是网关外网卡IP地址(相当于路由器ip地址)。

方法2:适合变化外网地址(ADSL):

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


实现NAT功能,如:由外部IP映射到内部服务器IP(包括端口),使用nat表。

iptables -t nat -A PREROUTING -d 10.0.0.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.8:9000





分享到:
关键词:Linux运维

网友留言(0 条)

发表评论