NAT分析(內網用戶通過域名訪問服務器)

1.環境假設:

        內網服務器的私網地址爲192.168.2.251,將服務器的80端口映射至202.101.1.1的80端口上,並申請域名www.sina.com,內網PC機的IP地址爲192.168.2.2,現在我們在路由器的外網口配置如下命令:  sys  acl number 2000  rule permit source 192.168.2.0 0.0.0.255  quit  int g0/0    //外網口  ip address 202.101.1.1 255.255.255.0  nat server protocol tcp global 202.101.1.1 www indise 192.168.2.251 www  nat outbound 2000  quit 2.拓樸圖如下: 

 經過以上配置後:

 一、外網用戶通過域名或者公網IP地址應該可以訪問服務器,數據流程如下:

  1.外網用戶發起到202.101.1.1的TCP 80端口的連接,IP報頭結構如下:源IP:外網用戶的公網IP,目的IP:202.101.1.1   2.數據經過路由,到企業邊源路由器,由於外網口上有端口映射,則數據會匹配映射,將IP報頭結構改變成:源IP:外網用戶的公網IP,目的IP:192.168.2.251   3.數據經過內網路由,交到服務器,服務器迴應用戶數據,IP報頭結構如下:源IP:192.168.2.251,目的IP:外網用戶的IP   4.數據經過邊界路由器出公司,由於NAT Server的優先級高於NAT Outbound,所以,數據到達路由器後會先匹配NAT Server記錄的會話表項,將IP報頭轉換成:源IP:202.101.1.1,目的IP:外網用戶的公網IP   5.數據最終通過公網路由到達訪問用戶,數據訪問成功。 二、內網用戶通過域名是不能訪問服務器的,數據流程如下:   1.內網用戶發起DNS請求,域名解地址爲202.101.1.1,客戶機發出請求,IP報頭結構如下:源IP:192.168.2.2,目的IP:202.101.1.1   2.數據到達路由器後,由於路由器上有202.101.1.1的直連路由,數據直接交到外網口,由於外網口配置有NAT Server,目的IP被轉換後發到服務器,IP報頭結構如下:源IP:192.168.2.2,目的IP:192.168.2.251   3.服務器收到數據後,發現源IP就是一個本地IP地址,此時服務器就不會以202.101.1.1爲ip回覆,而是以192.168.2.251爲源地址回覆。此時的IP數據包結構爲:源IP:192.168.2.251,目的IP:192.168.2.2,數據將到客戶機後,客戶機認爲,自己請求的是202.101.1.1的數據,但是收到的是192.168.2.2發送的,則認爲這個數據不是自己要的,此時會丟棄掉該數據,從而引起TCP等待超時,導致無法訪問。 爲了解決該問題,我們在內網口做如下設置:    acl number 3000   rule permit ip source 192.168.2.0 0.0.0.255 destination 192.168.2.251   quit   int g0/1    //內網口   nat outbound 3000   nat server protocol tcp global 202.101.1.1 www inside 192.168.2.251 www   quit 經過以上配置後,我們再在內網使用域名訪問該服務器,看看數據流程:    1.內網用戶發起DNS請求,域名解析爲202.101.1.1地址,客戶機發出請求,IP報頭結構如下:源IP:192.168.2.2,目的IP:202.101.1.1    2.數據交到路由器的內網口,首先匹配端口映射,將目的IP更換掉,此時IP報頭結構如下:源IP:192.168.2.2,目的IP:192.168.2.251    3.路由器發現該數據爲內網數據,會再從內網口發出去,此時再匹配nat outbound,將源IP換掉,此時IP報頭結構爲:源IP:192.168.2.1,目的IP:192.168.2.251    4.服務器收到數據後響應請求,回覆數據包IP報頭結構爲:源IP:192.168.2.251,目的IP:192.168.2.1    5.數據到達路由器後,根據NAT Outbound和NAT Server的記錄表項,將源IP和目的IP替換掉,此時IP報頭結構爲:源IP:202.101.1.1,目的IP爲192.168.2.2    6.數據到達客戶,目的IP和源IP正確,訪問成功。 現在我們假設沒有nat server protocol tcp global 202.101.1.1 www inside 192.168.2.251 www,來看一下數據報文是否能完整地走完:(目前MSR路由器上的端口映射配置全局有效,不需要再在內網口配置該命令了。)    1.內網用戶發起DNS請求,域名解析爲202.101.1.1地址,客戶機發出請求,IP報頭結構如下:源IP:192.168.2.2,目的IP:202.101.1.1    2.數據將到路由器,由於外網口上有端口映射,則數據會匹配映射,將IP報文結構改變成: 源IP:192.168.2.2,目的IP:192.168.2.251    3.數據將到路由器內網口,匹配nat outbound,將源IP地址變掉,IP報文結構改變成:源IP:192.168.2.1,目的IP:192.168.2.251    4.數據交至服務器,服務器回覆報文,IP報頭爲:源IP:192.168.2.251,目的IP:192.168.2.1    5.路由器收到後,匹配內網口NAT Outbound的記錄表項,將其IP報頭改爲:源IP:192.168.2.251,目的IP:192.168.2.2    6.數據直接交給客戶機,客戶機依然認爲不是自己請求的數據,丟棄,繼續等待,超時,失敗。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章