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??梢宰C明我們訪問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.www58058.com/77968