如圖所示, 企業內網有一臺Server2,通過在FW1上配置nat server,將Server2的www端口映射到了公網;
實驗環境中,內網和外網都使用外網的server1提供的DNS服務,在DNS服務器上添加A記錄,www.baidu.com映射給202.96.208.102;
此時外網能訪問該www.baidu.com,但是內網client2卻無法訪問。
為了實現內網client2也能訪問www.baidu.com,在FW1上配置雙向NAT。
注意:模擬器只能使用FW防火墻來實現雙向NAT
一、配置FW1的訪問策略為全通
實驗需要,生產環境不可如此配置
配置nat server,將192.168.1.2的www映射成202.96.208.102的www
防火墻和路由器的區別是,防火墻配置nat server是在全局下配置,而路由器是在接口下配置;
二、在Server1上添加A記錄
三、在Client1上配置DNS服務器并訪問www.baidu.com
此時在Client1上能正常訪問www.baidu.com
且在防火墻上能看到會話
能看到202.96.208.101訪問202.96.208.102的80端口是,將202.96.208.102轉換成了192.168.1.2的80端口;
四、在Client2上配置DNS服務器并訪問www.baidu.com
如果Client2要訪問外網的DNS服務器,那么還需要在防火墻上配置SRC-NAT
測試Client2能ping通外網DNS服務器202.96.209.102
可以看到client2已經轉換成了防火墻外網接口ip出去了
此時從Client2上訪問www.baidu.com
可以看到失敗了
我們在Client2的接口上抓包,能看到,當Client2去訪問www.baidu.com的時候,首先進行了dns解析
然后DNS服務器返回的A記錄是202.96.208.102
緊接著Client2去訪問202.96.208.102的80端口
但由于防火墻上做了nat server,會將202.96.208.102轉換成192.168.1.2,防火墻處理包的流程是先nat server,然后找路由,根據目的192.168.1.2,會將該報文(源192.168.1.1,目的192.168.1.2)直接從自己的內網口轉發出去,轉發給了Server2(192.168.1.2),Server2看到源是192.168.1.1,就直接通過2層局域網回應了Client2,所以在上圖中能看到192.168.1.2回應192.168.1.1的SYN,ACK報文。但是192.168.1.1并沒有發送給192.168.1.2 SYN報文,所以直接進行了reset,也就導致訪問www.badiu.com失敗了。這就是通常所說的“三角傳輸”。
為了解決這種情況,一般都會在防火墻上做“雙向NAT”或叫“回流”或叫“二次NAT”,即,當內網訪問內網所映射的公網地址的時候,將源ip轉換成防火墻接口ip,讓流量往返都能經過防火墻,來實現會話的對應。
五、防火墻配置雙向NAT
我們的目的是將192.168.1.1去訪問202.96.208.102的時候,讓192.168.1.1轉換成192.168.1.254,讓202.96.208.102轉換成192.168.1.2;目的轉換已經由nat server實現,那么怎么讓192.168.1.1轉換成192.168.1.254呢?
前面我們已經配置nat-policy
這個策略是,當源區域trust去訪問目的區域untrust的時候,就將源做轉換,轉換成出接口,那么我們只需要在該策略上添加目的區域為trust,就能實現將192.168.1.1轉換成192.168.1.254
六、驗證雙向NAT后從Client2訪問www.baidu.com
可以看到能正常訪問
從抓包中能看到已經變成了正常交互,而非“三角傳輸”
在防火墻會話中也能看到雙向NAT
即:
src:192.168.1.1[2073];dst:202.96.208.102[80]
雙向NAT后
src:192.168.1.254[2051];dst:192.168.1.2[80]