國科學院·ICT項目分享:Lan to Lan的NAT應用

一、網絡topo圖

國科學院·ICT項目分享:Lan to Lan的NAT應用

二、環境描述

在此topo圖中,已經配置好了各接口的ip地址,並在防火牆配置了easy ip和靜態nat端口映射,以實現內網用戶可以正常訪問外網用戶;同時外網用戶也可通過訪問防火牆出接口地址來訪問Server服務器。

跟國科科技一起看一下以下公網用戶訪問web服務器的過程,公網PC通過公網IP:12.12.12.1訪問web服務器,流量通過運營商網絡轉發至防火牆,由於防火牆將內網服務器的80端口映射到公網,所以防火牆將流量的目的IP由12.12.12.1轉化為192.168.1.200,轉發至內網服務器。服務器收到並處理之後進行回包,流量轉發至防火牆時,防火牆將源IP由192.168.1.200轉化為12.12.12.1併發送給公網PC,公網PC收到對應的流量完成訪問。

國科學院·ICT項目分享:Lan to Lan的NAT應用

三、內網用戶無法通過公網IP訪問對應的web資源

為了隱藏服務器真實IP地址,所以客戶要求內網用戶也只能通過公網IP地址去訪問服務器資源,但是內網用戶如果通過公網IP去訪問服務器訪問失敗,而外網用戶訪問還是正常的,這是為什麼呢?

國科學院·ICT項目分享:Lan to Lan的NAT應用

跟國科科技一起來抓包分析:

Fw1的G1/0/0:

國科學院·ICT項目分享:Lan to Lan的NAT應用

Ø 如圖在FW1的G1/0/0接口處抓包,可以發現PC1無法建立TCP連接,並且因為nat的原因,目的地址12.12.12.1被轉化成為了內網Server的地址192.168.1.200,但是發送的TCP請求並沒有得到回覆,別急,我們再從Switch的G0/0/2接口處抓一下包看看。

LSW1的G0/0/2:

國科學院·ICT項目分享:Lan to Lan的NAT應用

Ø 可以看到,Server其實是有回覆的,但好像PC1並沒有接受它,導致內網用戶無法通過外網地址來訪問內網Server,讓我們來做進一步分析。

國科學院·ICT項目分享:Lan to Lan的NAT應用

四、問題定位

抓包分析了上面的情況,進行了一波頭腦風暴,終於想明白了問題所在,讓我們以PC1的視角分步看看:

—————————————————————————————————————

Step1:我是PC1,我想訪問一下內部的Server,但公司告訴我要想訪問Server就用12.12.12.1:80這個公有地址,於是我只好向這個地址發送數據包,於是我就去找我的網關。

國科學院·ICT項目分享:Lan to Lan的NAT應用

Step2:數據包路過了交換機來到了網關,網關幫我把數據包轉發給了12.12.12.1:80,因為nat映射的原因,數據包的目的地址被轉化為了Server的私網地址192.168.1.200,併發送給Server。

國科學院·ICT項目分享:Lan to Lan的NAT應用

Step3:數據包經過交換機之後來到了Server,Server發現數據包是找自己,所以就對PC1回了一個包,於是就封裝了一個回應包。

國科學院·ICT項目分享:Lan to Lan的NAT應用

Step4:由於處於同一個網段,所以交換機直接將數據包轉發給了PC1,PC1收到數據包之後,發現自己原本訪問的是12.12.12.1,回覆自己的卻是192.168.1.200,所以就給拒收了,最終導致訪問失敗。

五、通過LAN to LAN的NAT配置解決

分析完網絡中的問題以後,我們就來想想辦法,既然問題出在Server回包時源ip地址不是PC1請求的目的ip地址,那麼我們就想辦法讓它回包時的源ip地址變成PC1請求的目的ip地址,即還原回12.12.12.1。

要怎麼做呢?請接著看下去

由於正常情況下Server回覆給PC1的包直接經過交換機而不是防火牆,所以我就在防火牆的又做了一個nat映射,目的是為了讓PC1發來的數據包的源ip地址轉化為192.168.1.254這個網關地址,這樣Server在回包的時候就會將數據包回覆給防火牆,並且此時源ip地址又會轉換會12.12.12.1。是不是聽起來有些暈暈的,沒關係,我們來抓個包分析分析一下:

LSW1的G0/0/1:

國科學院·ICT項目分享:Lan to Lan的NAT應用

Ø 這次我們先在交換機的G0/0/1接口處抓個包,可以看到Clinet1和防火牆已經成功建立起了tcp連接,並且來回的數據包也只有雙方交互的數據包,並沒有Server直接發過來的,那麼我們再去FW1的G1/0/0接口處抓一下看看

LSW1的G0/0/1:

國科學院·ICT項目分享:Lan to Lan的NAT應用

Ø 呵,真熱鬧,這個原本冷清的端口突然多了這麼多流量,讓我們來逐條分析。紫色框中是通過這個端口的流量,可以看到原本source:192.168.1.1 destination:12.12.12.1被轉化為了source:192.168.1.254 destination:192.168.1.200;同時回來的數據包也從source:192.168.1.200 destination:192.168.1.254轉化為了source:12.12.12.1 destination:192.168.1.1,這樣,防火牆再回復給PC1時,源地址就是12.12.12.1,Client也就不會再拒收了。

抓包分析完之後我們再來以PC1的視角來分步看一下:

—————————————————————————————————————

Step1:PC1想通過12.12.12.1來訪問位於內網的Server,於是封裝好數據包發給網關(防火牆),希望網關可以幫我進行轉發。

國科學院·ICT項目分享:Lan to Lan的NAT應用

Step2:防火牆收到目的地址為12.12.12.1並且目的端口為80的數據包之後,根據提前設置好的nat映射,將目的地址轉化為192.168.1.254,同時另一條nat映射將源地址192.168.1.1轉化為了192.168.1.254,這樣就可以讓Server回包給防火牆,而不是直接發給PC1。

國科學院·ICT項目分享:Lan to Lan的NAT應用

Step3:數據包經過服務器來到了Server,Server收到後發現是找自己的,於是就封裝一個回應包給192.168.1.254,併發送給防火牆 。

國科學院·ICT項目分享:Lan to Lan的NAT應用

Step4:防火牆收到數據包之後,根據自己的nat轉化記錄表,又將報文的源地址和目的地址進行nat轉化,轉化結果如下:

國科學院·ICT項目分享:Lan to Lan的NAT應用

Step5:轉化完成之後,防火牆將數據包發送給PC1,PC1發現自己原本訪問的是12.12.12.1,回覆自己的也是12.12.12.1,於是便接收報文,完成一次數據交換。

—————————————————————————————————————

六、結論

當客戶要求內網用戶也通過公網IP訪問位於同一個內網的服務器時,會由於來回數據包IP地址不一致問題導致訪問失敗,這時候需要在出口網關上做了一個Lan to Lan的NAT映射來解決這個問題,大家掌握了嗎?


分享到:


相關文章: