linux源地址转换
文章来源: https://blog.51cto.com/codekong/1739968
linux iptables 源地址转换实验
个人理解:该实验模拟的三台机器实际用途中的角色扮演可以这样理解:Intranet为内网主机,iptables为通外网的代理主机,其中172.16.100.1可以理解为代理主机的公网IP,Internet为互联网。
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