e.g. SNAT的使用
我们知道现在IPV4的公网地址非常稀缺,所以在一个局域网内,使用的都是私有地址,列如192.168.0.0/24网段等等,假如我们在教室里通过ADSL拨号上网获得了一个公网IP1.232.3.2;那么能够访问互联网的地址只有这一个,而教室里的同学都想上网该怎么办呢?解决办法是通过SNAT即源地址转换,这样在包出去时,将数据包的源地址改成这个我们可用的唯一的公网IP即可。
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 1.232.3.2
由于通过ADSL拨号上网获取的公网IP不是固定的,当我们重新拨号时,公网IP地址就可能会变成另外的公网IP,此时上面的规则就会失效,解决办法是使用MASQUERADE即地址伪装,它会自动获取能上网的外网地址,并进行源地址转换!
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
e.g. DNAT的使用
假如外网要访问内网机器(192.168.2.10上面的web(LISTEN8080))和192.168.2.15上面的ftp(21)(主动模式)服务
路由器上的地址分别为192.168.2.1和172.16.100.100 (外网网卡地址)
iptables -t nat -A PREROUTING -d 172.16.100.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.10:8080
iptables -t nat -A PREROUTING -d 172.16.100.100 -p tcp --dport 21 -j DNAT -to-destination 192.168.2.15