iptables的SNAT和DNAT地址转换配置实例

首先介绍一下实验环境,一共打开三台虚拟机,win7客户机作为内部局域网的终端设备;中间的Linux-2作为内部局域网的网关以及连接外网的设备;Linux-1作为外网的web服务器设备。

(其实这个实验是接着上次的实验继续做的)

wKiom1Vimi_AWRMiAAKIMfyxdwQ514.jpg

查看Linux-2的网卡属性需要配置两块网卡(不知怎么添加的看上一篇博客),一块作为外网连接,一块作为内部的网卡。IP地址配置如下。

wKiom1VimlKh9q23AAQTl2lRE4Q014.jpg

两块网卡配置完成,测试一下跟另外两台PC机是否能够互联互通。

wKiom1VimofBJQJSAAQNKBk0rnw845.jpg

此时开启Linux-1web服务,关闭SELinux策略,清空防火墙条目。

wKiom1VimreDt940AAO7YRB41Gc630.jpg开启Linux-2临时的或直接开启路由功能,同时也清空防火墙规则。

wKiom1Vimv-R1kbFAAOfdyQDa7s600.jpg

此时的win7客户端应该可以访问Linux-1搭建的web服务。Win7客户机自身的防火墙需要关闭。

wKiom1VimzHCKU8HAALK3x7WFlk334.jpg

打开IE浏览器,输入IP地址进行访问。

wKiom1Vim0qzqhXdAAVdIbqmxRA157.jpg

此时到Linux-1服务器上面看一下web日志文件,在/etc/httpd/logs目录下的access_log里面有成功访问的日志信息,这里可以看到192.168.100.120的网络的地址访问了自己的httpd服务。

wKiom1Vim2uCQIvzAAQdBP1rIB8037.jpg

现在在Linux-2设置iptables表格的SNAT地址转换条目。如下其中:iptables是命令关键字;-t指定表格为nat-A指定规则链并添加至末行,POSTROUTING表示转发后规则链;-s指定源地址此处指定了一个网段;-o表示指定出站口的网卡(是对于内部局域网来说的);-j后面是规则语句,大写SNAT表示对源地址进行转换;--to-source 12.0.0.1源地址转换为12.0.0.1的地址。

wKiom1Vim7HCWcmzAAQPRb8YRlk111.jpg

现在再次重新打开win7客户机的来访问Linux搭建的web网站(最好是关闭浏览器再重新打开)。

wKiom1VinFCi3g-CAAVokfbzs8Y499.jpg

回到Linux-1再次查看httpd服务的日志文件,可以看到此时的后面有两条访问记录是12.0.0.1的地址,也就是经过SNAT转换之后访问的地址。

wKiom1VinIzT-Hl2AAV9HabeZrk596.jpg

下面进行DNAT目标地址转换实验。

首先需要在win7客户机上搭建IIS服务,也就相当于web服务,用于后面的测试验证。如图:在控制面板→程序→程序和功能→打开和关闭Windows功能中进行安装,直接确定等安装完成就行了。

wKioL1VinkKzJxHAAAPC5yjDmh8686.jpg

此时使用win7访问自己搭建的web服务进行测试,应该是没问题的。

wKioL1Vins2ybfq2AAOkfHpc8uc128.jpg

下面还是在Linux-2上面做DNAT的规则条目,此处的-A指定的是nat表格中PREROUTING规则链也就是转发前规则链;-d指定的是目标地址,也就是本机的外网卡IP地址;-i表示input进站口(是对于内部局域网来说的);-p指定访问到本机的tcp协议和80端口号;-j后面的是DNAT目标转换,--to-destination跟目标IP地址。

规则条目创建完成之后,可以使用命令iptables -L -t nat查看。

wKiom1VioCCAsFRgAAPo98qRvys923.jpg

此时用Linux来访问win7搭建的web服务,能够正常访问表示做对了。

wKiom1VioGKjaAJlAAPvzUmV9iw738.jpg

经验总结:在做DNAT之前,SNAT是必须要做的(因为要有来有回)。

SNAT是将源地址进行转换,也就是在经过本Linux时会将原来的IP地址转换为之前设置好的iptables规则条目中的IP地址。是先进行路由转发再进行使用iptables规则链(说白了就是先变再发)。

DNAT是将目标地址进行转换,转换的顺序是先进行转发,到达含有iptables规则链的服务器时再根据规则链进行IP地址转变。

OK实验到此结束,谢谢!!!


你可能感兴趣的:(防火墙,iptables,web服务器,SNAT,DNAT)