linux iptables 源地址转换实验


1.环境准备

    在试验前我首先准备了三台linux主机,使用的操作系统是:CentOS,三台主机的网络规划如下:

    

    第一台主机:Intranet,模拟内网主机,网络连接方式使用的是桥连接,IP:192.168.10.2

    第二台主机:Internet,模拟外网主机,网络连接方式使用的是仅主机模式,IP:172.16.100.2

    第三台主机:iptables,模拟路由转发,其中有两块网卡,第一块网卡(eht1)IP:192.168.10.1,第二块网卡(eth2)IP:172.16.100.1

    

2.开始实验

    此时在同一网络的主机可以相互通信,可以用ping命令来验证。若想让Intranet访问iptables的172.16.10.1,需要为Intranet和Internet指定网关:

    给Intranet指定网关:route add default 192.168.10.1

    给Internet指定网关:route add default 172.16.100.1


    指定好网关后需要将iptables的转发功能打开:

    echo 1 > /proc/sys/net/ipv4/ip_forward   临时有效,重启网络服务或主机失效。

    vim /etc/sysctl.conf  将net.ipv4.ip_forward = 1 修改即可,永久有效。

    

    此时Intranet 可以访问 Internet主机,但是源地址是Intranet:192.168.10.2。若进行源地址转换,需要在iptables主机中加入防火墙规则:

    iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth2 -j SNAT --to-source 172.16.100.1

    加入规则后,来自Intranet的数据包的地址,都被转换成172.16.100.1