0.7 NAT

Wireshark Lab: NAT

 

Version: 1.0
© 2010 J.F. Kurose, K.W. Ross. 版權所有

 

註記:

一般字為原文翻譯

黃底字為實作結果

紅底字為原文補充文字

籃底字為該題若有兩張圖以上的圖片名

 

在這個實驗,我們研究 NAT 協定的行為。這個實驗與 Wireshark 的其他實驗不同,在其他實驗裡我們在單一的 Wireshark 測量點截捕 trace file(踪跡檔)。

因為我們有意在 NAT (Network Address Translation,網路地址轉譯)裝置的輸入和輸出兩端截補數據封包,因此我們會需要在 兩個 個地方攔截封包。

除此之外,因為很多學生沒有機會(或權限)存取 NAT 裝置或在兩台電上腦執行 Wireshark 測量,所以學生不容易執行這樣的「現場」實驗。

因此,在本實驗中,您會要利用我們為你捕捉到的Wireshark trace file。

在開始實驗之前,你可能要複習教科書第4.4節中有關 NAT 的材料。

 

1.測量NAT的設想情節

在這個實驗中,我們將捕獲從家庭網路上的 client 端 PC 到 www.google.com 伺服器的簡單 Web 請求封包。

在家庭網路,如同在第4 章中所討論,由家庭網路路由器提供 NAT 服務。

圖 1 顯示我們設想收集 Wireshark trace file 的情節。

在其他的 Wireshark 實驗中,我們用家庭網路中的客戶端 PC 收集 Wireshark 的蹤跡。該檔案稱為 NAT_home_side2。

因為我們也有意將封包由 NAT 路由器(router)發送到 ISP,我們會從一個 PC (未顯示)上收集第二件 trace file,用以瞭解家用路由器到 ISP 網路之間的鏈接,如圖 1。

(路由器上的 ISP 端所顯示的集線器,是用來瞭解從 NAT 路由器到 ISP的第一跳路由器之間的鏈接)。由 Wireshark 所截獲由客戶端到伺服器端的封包,在這一點上會進行NAT 轉譯。在家用路由器的 ISP 端所截獲的 Wireshark trace file 稱為 NAT_ISP_side。

請打開 NAT_home_side 檔案,並回答下列問題。可以使用 Wireshark filter 協助你只顯示 trace file 中含有 HTTP 訊息的圖文框。

 

1.

客戶端的 IP 地址是什麼?

 

192.168.15.132

 

 

2.

客戶端實際上與好幾個不同的Google伺服器溝通,以實現「安全瀏覽」。(參見在本文結尾的額外加分題)。

建立 Google 主網頁的Google主要伺服器 IP address 地址為"64.233.169.104"(根據測試的狀況為74.125.31.106)。為了只顯示發送到或者重從這個Google伺服器所送出包含 HTTP 訊息的圖文框,請在Wireshark 的 Filter: 欄位輸入「http &&ip.addr == 64.233.169.104」(不帶引號)(因為怕IP與內容不一樣, 所以測試時只用http做filter)。

 

3.

現在考慮從客戶端在時間 7.102967 (實測時為0.06045800)時發送 HTTP GET 到Google服務器(其IP 地址為 64.233.169.104)(時測為74.125.31.106)

請問來源 IP 和目的 IP 地址是什麼,以及攜帶此HTTP GET 訊息的 IP datagram(資料封包)的 TCP 來源埠和目的埠是什麼?

 

來源: 192.168.15.132, 1162
目的地: 74.125.31.106, 80

 

 

 

4.

Google伺服器是在什麼時間收到這相對應的200 OK HTTP 訊息?

請問來源 IP和目的 IP 地址是什麼,以及攜帶此 HTTP 200 OK 訊息的 IP datagram(資料封包)的 TCP 來源埠和目的埠是什麼?

 

時間: 0.19085700
來源: 74.125.31.106, 80
目的地: 192.168.15.132, 1162

 

 

5.

回想一下,在 GET 指令可以被發送到 HTTP 伺服器之前,TCP 必須先使用三方 SYN/ACK handshake (傳送檢查/信號交換)設立一個連接。

為了提供在時間7.102967  (時測時為0.06045800)發送 GET 時所使用,在什麼時間發送 client-to-server TCP SYN segment 來設立一個連接?

請問來源 IP 和目的 IP地址是什麼,以及 TCP SYN segment 的來源埠和目的埠是什麼?

請問來源 IP 和目的 IP地址是什麼,以及發送出來回應 SYN 的 ACK 來源埠和目的埠是什麼?客戶端在何時收到這 ACK?

(注意:要找到這些 segments,你必需清除 Filter 上你在第 2 步中所輸入的值。如果您在 Filter 欄中輸入「tcp」,Wireshark 只會顯示 TCP segments)。(我還是只用TCP來做filter...)

 

client-to-server
時間: 0.06040500
來源: 192.168.15.132, 1162
目的地: 74.125.31.106, 80

server-to-client
時間: 0.06155900
來源: 74.125.31.106, 80
目的地: 192.168.15.132, 1162

 

client-to-server

 

server-to-client 

 

 

皆下來,我們將重點放在前面所確認的兩個 HTTP 訊息(GET 和 200 OK)以及 TCPSYN 和 ACK segments。

我們的目標是,在路由器和 ISP 之間的鏈接中所截獲的trace file (NAT_ISP_side)中找到這兩個 HTTP 訊息和兩個TCP segments。

因為這些被截獲的圖文檔通過 NAT 路由器已經被轉寄,有些 IP 地址和埠號碼將變成 NAT 轉譯的結果。

 

 

請打開 NAT_ISP_side。

請注意,trace file 中的時間戳(time stamps)和NAT_home_side中的並沒有被同步,因為在圖1中所示的兩個地點的數據封包攔
截,不會同時開始。

(事實上,你應該會發現,在 ISP 鏈接截獲封包上的時間戳,實際上是較小(晚)於在客戶端 PC 上截獲封包上的時間戳)。

(其實應該是看啟動的先後和手速造成的差距就是@@)

 

6.

在 NAT_ISP_side 的 trace file 中找到 HTTP GET 訊息是從客戶端發送到Google伺服器的,發送時間是在 7.102967(其中 t=7.102967 是記錄在NAT_home_side 的 trace file 中當時送出的時間) (時測時為4.390325)

在什麼時間這條訊息出現在 NAT_ISP_side 的 trace file 中?

來源和目的兩者的 IP地址是什麼,在攜帶這個 HTTP GET(如同記錄在 NAT_ISP_side 的 trace file 中)的 IPdatagram 上的 TCP 來源埠和目的埠是什麼這些欄位中的值與你在上面問題 3的回答,哪些相同,哪些不同?

 

時間: 4.390325
來源: 140.136.83.78, 58954
目的地: 74.125.31.106, 80
不同處: 來源不同

 

7.

在 HTTP GET 欄位中的訊息有任何改變嗎?

在攜帶 HTTP GET 的 IP datagram 的下列欄位中的值被改變了:Version(版本), Header Length(標頭長度),Flags(旗標),Checksum(校驗和)。

如果任何這些欄位發生了變化,請(只用一個句子)說明這個欄位值需要改變的原因。

 

Version: 都是"HTTP/1.1"
Header Length: 都是"20byte"
Flags: 沒變(恩...雖然對照是有多個0, 但是內容是完全一樣的, 推測是版本問題所以顯示稍微不同)
Checksum: 變了

 

client

 

server

 

8.

在 NAT_ISP_side 的 trace file 中,Google伺服器在什麼時候收到 200 OK HTTP 訊息?

請問來源 IP 和目的 IP 地址是什麼,以及攜帶此 HTTP 200 OK訊息的 IP datagram(資料封包)的 TCP 來源埠和目的埠是什麼?

這些欄位中的值哪些相同,以及比較上述問題 4 你的答案有哪些是不同的?

 

時間: 4.512614
來源: 74.125.31.106, 80
目的地: 140.136.83.78, 58954
不同處: 不算上時間, 目的地IP不同

 

9.

在 NAT_ISP_side 中的 trace file,與問題 5 中相對應的 client-to-server TCP SYN segment 以及 server-to-client TCP ACK segment 在什麼時候被截獲?

請問這兩個 segments 的來源 IP 和目的 IP地址以及來源埠和目的埠是什麼?

這些欄位中的值哪些相同,以及比較上述問題 5 你的答案有哪些是不同的?

 

client-to-server
時間: 4.388957
來源: 140.136.83.78, 58954
目的地: 74.125.31.106, 80
不同處: 來源IP不同

server-to-client
時間: 4.433964
來源: 74.125.31.106, 80
目的地: 140.136.83.78, 58954
不同處: 目的地IP不同

 

client-to-server

 

server-to-client

 

10.

運用你在上述問題 1-8 的答案,將在上述問題 1-8 中考慮到的 HTTP 連接值填入 NAT 轉譯表的 HTTP 連接項目。

 

WAN side: 140.136.83.78, 58954
LAN side: 192.168.15.132, 1162

 

 

額外加分題:上述所調查的 trace file 有超出上面所研究的 HTTP GET,200OK request/response (請求/回覆)鏈接到Google伺服器。

例如,在 NAT_home_side中的 trace file,考慮到在時間1.573215 的 client-to-server GET,與在時間 7.573305的 GET。

研究利用這兩條 HTTP 訊息,撰寫半頁解釋說明這些訊息的目的。

 

------------------------------------------------------------------------------------------------------

參考資料

http://www.slyar.com/blog/vmware-bridged-nat-hostonly.html

http://zh.wikipedia.org/wiki/%E5%B9%BF%E5%9F%9F%E7%BD%91

http://zh.wikipedia.org/wiki/%E5%B1%80%E5%9F%9F%E7%BD%91

http://bluemuta38.pixnet.net/blog/post/45543389-ip%E5%8F%AF%E7%94%A8%E7%...

http://atifans.net/articles/its-hard-to-tell-the-difference-between-ip-n...