Nat迴環(Lan——>Lan端口映射原理)

原文地址:http://www.cisco-club.com.cn/space-112942-do-blog-id-1438.html

Nat迴環(Lan——>Lan端口映射原理)

Bati-gol 整理

 

應用背景:

局域網內網有服務器對外發布,基於對服務器的保護,內網用戶需通過域名或者公網ip來訪問內網服務器。如下圖所示:

 

名詞解釋:

DNAT:轉換目標ip地址。

SNAT:轉換源ip地址。

需求:將外網202.96.128.580端口映射至內網192.168.2.1080端口,外網地址對應有域名,以對外服務。同時,內網無DNS服務器,內網用戶通過公網DNS解析通過同樣的公網域名訪問內網web服務器,要求防火牆能將內網訪問該域名80端口的請求再次定向到內網服務器,使得內部訪問公網域名的數據直接返回給內網服務器,以節省互聯網帶寬。

 

數據流走向分析:內網服務器的真實ip和訪問端口是192.168.2.1080,要能夠訪問到這個服務器資源,必須需要把訪問的目標ip 202.96.128.5轉換成192.168.2.10,這樣訪問數據包纔會轉回內網,否則數據包交到公網上,將訪問不到真實的服務器。那麼需要在設備上做一次DNAT(對訪問服務器的數據做目標ip的轉換)。

 

如果只在設備上做一次DNAT上網轉換的數據包和轉發流程如下圖所示:

文中所列的數據包的結構均爲:

第一步:封裝訪問到目標ip202.96.128.5的數據由客戶端發出

第二步:在設備的LAN口接受到數據包,匹配DNAT規則,對數據包進行目標IP的轉換

第三步:經過設備轉換的數據包從lan口發出,交給局域網的真實服務器192.168.2.10.

第四步:服務器對訪問請求做迴應,它收到數據包的源ip192.168.2.3,成爲封裝回應的目標ip,那麼數據包有內網服務器直接發給內網主機

第五步:內網主機收到一個源ip192.168.2.10的迴應,和它發給目標ip202.96.128.5的請求不一致,所以數據包直接被丟棄。在客戶端看來,訪問服務器失敗。

由以上的數據包流程可以看出,要保證內網客戶端能訪問到服務器,只做DNAT是不夠的。

那麼需要服務器將回應數據發回給網關設備,再由網關設備轉回給客戶端,客戶端纔會接受數據。流程圖應該如下圖所示:

那麼要讓服務器的數據發給網關,那麼在服務器接收到的數據源IP是網關的IP,所以網關

發給服務器的數據包結構應該是:

這個數據包,和只做了一次DNAT從網關處發出的數據包

相比,源IP 做了轉換。所以才需要在網關設備處再做一次SNAT

如果網關要代理內網上外網的話,那麼也啓用了SNAT,進行私有地址到公網地址的轉換。

所以這裏的SNAT,必須要設置條件,符合條件才轉換,而且要比上網的SNAT優先匹配。否則會對上網產生影響。

先經過網關設備DNAT處理,再經過SNAT處理的數據包走向如下圖:

由於在網關處做了DNAT和SNAT的轉換,每做一次轉換,設備都會記錄一個鏈接,當服務器迴應數據再經過網關時,網關會根據鏈接再做一次DNAT和SNAT,那麼數據包發回給訪問客戶端的是:,對於客戶端來說,它之前是發給202.96.128.5的訪問請求,所以會接受數據包。

此外對於網關設備來說,數據包是由LAN傳給LAN 的,所以還需放通防火牆的LAN--LAN規則。

 

 

應用舉例

用戶需求:

用戶內網有一臺服務器:192.168.0.1WAN1 口使用光纖接入,有公網IP 地址(202.x.x.x),該公網IP 地址對應一個域名:www.xxx.com,已經使用DNAT 做端口映射把服務器發佈至公網,並可以在公網訪問www.xxx.com;現在要求在局域網(192.168.0.0/24 連接在LAN 口),也可以通過訪問域名:www.xxx.com 達到訪問web server192.168.0.1,規則如下:

 

用一國內產品演示:

1)      做端口映射,注意外網接口選擇LAN 

           2)  做SNAT:將源地址轉換成LAN 口。

如果有Lan-Lan規則,放通規則。開放LAN1LAN1 的防火牆規則:

注意事項:

a)如果服務器在DMZ 區,則第二步可以省略,但要注意放通LANDMZ 的防火牆規則。

b)上面的方法也適用於WAN 口爲ADSL 撥號使用動態域名的情況。

發佈了28 篇原創文章 · 獲贊 26 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章