DNAT:目的地址转换。当外网主机访问内网的某台服务器的时候,如果直接暴露服务器的IP于公网,可能会遭受各种各样的攻击,而DNAT的主要作用就是在服务器前面添加一台防火墙。将防火墙的地址公布出去,让外网客户端通过访问防火墙的地址就可以访问到本地服务器。这样就起到了保护服务器的目的;
SNAT:源地址转换。内网主机在访问互联网的时候所有源地址都转换为防火墙的外网地址,起到隐藏内网客户机的目的。同时,也解决了IPV4公网地址不够用的需求。
一、实验需求
通过三台服务器模拟iptables的DNAT、SNAT的配置。
二、实验环境
三台服务器:
-
内网服务器:提供httpd服务。IP:192.168.11.137
-
外网客户端:用于访问内网服务器。IP:172.16.251.247
-
iptables防火墙:用一台虚拟机开启核心转发功能来模拟,用于实现DNAT和SNAT的功能。
-
IP1:192.168.11.144(内网服务器网关)
-
IP2:172.16.250.151(外网客户端网关)
拓扑如下:
-
三、实验配置
DNAT配置
-
内网服务器配置:
-
安装httpd,vsftpd和samba服务:
yum install -y httpd vsftpd samba
-
配置默认网关为192.168.11.144
route add default gw 192.168.11.144
-
-
外网客户端配置:
-
配置默认网关:
route add default gw 172.16.250.151
-
-
iptables主机配置:
-
开启核心转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
-
此时外网主机和内网主机就能够相互ping通了;
-
配置DNAT:
iptables -t nat -A PREROUTING -d 172.16.250.151 -p tcp --dport 80 -j DNAT --to-destination 192.168.11.137
注意:
DNAT需要在PREROUTING链做转发策略。
-
此时通过外网主机访问内网服务器的httpd服务就可以成功了,此处采用在内网主机和iptables的172.16.250.151网口进行抓包分析DNAT工作过程:
-
内网服务器抓包截图:
可以看到源地址为172.16.251.247,目的地址为192.168.11.137
-
iptables抓包截图:
我们访问的目的地址为172.16.250.151,而此处看到源地址为172.16.251.247,而目的地址却为192.168.11.137。可以证明我们访问172.16.250.151的80端口被转发到192.168.11.137的80端口上了。此处证明在DNAT的过程中源地址是永久不变的,而目的地址会根据策略而发生变化。
-
-
SNAT配置
注意:此处外网和内网位置做调换,即如下拓扑图的形式:外网成为服务器,而内网为访问服务的客户端
-
iptables主机配置策略如下:
##首先清空刚才的DNAT策略## iptables -t nat -F iptables -t nat -A POSTROUTING -s 172.16.251.147 -j SNAT --to-source 192.168.11.144
-
此时外网服务端可以正常访问到外网httpd服务,此时在外网主机和防火墙的192.168.11.144进行抓包分析SNAT的工作过程:
-
外网主机抓包:
此处我们是通过内网客户端172.16.251.147访问的外网的httpd服务,此处可以看到源地址和目的地址为:
-
源地址:192.168.11.144.50076
-
目的地址:192.168.11.137.80
证明源地址已经被转换为防火墙的外网网口了。
-
-
防火墙内网172.16.251.247抓包分析:
-
源地址:172.16.251.247.50080
-
目的地址:192.168.11.137.80
此处证明报文在进入防火墙的时候源地址还没有发生变化。说明源地址是从防火墙出去之前发生的转换。
-
-
原创文章,作者:王子豪,如若转载,请注明出处:http://www.178linux.com/77968