在前面的實作中,我們探討了 TCP 三方交握、HTTP 的明碼傳輸,以及 HTTPS 的加密防護。但你有沒有想過一個問題:當我們在瀏覽器輸入 ithelp.ithome.com.tw 時,電腦是怎麼知道這台伺服器的 IP 到底是多少的?
因為網路層 (Layer 3) 只認得數字組成的 IP 位址,人類卻只記得了英文字母組成的網域名稱。負責在這兩者之間進行翻譯的,就是被稱為「網路世界電話簿」的 DNS (網域名稱系統)。
今天,我們就來擷取這個「查電話簿」的第一手過程!
我們將使用 Linux 內建的網路查詢工具 nslookup (Name Server Lookup),來強制系統去查一次電話簿。
【實作練習】
dns 顯示過濾器並開始擷取。nslookup ithelp.ithome.com.tw

畫面解析:
終端機印出了查詢結果,告訴我們伺服器的真實 IP 是 172.66.162.212 等。
同時,背後的 Wireshark 完美抓到了這對「一問一答」的封包:
Standard query):我們的電腦向 DNS 伺服器發出的提問。Standard query response):DNS 伺服器給我們的回答。我們來看看電腦是怎麼向 DNS 伺服器發問的。
【實作練習】
停止抓包後,點擊封包 7。在中間的詳細資訊窗格,展開 Domain Name System (query),接著再往下展開 Queries 區塊。

畫面解析:
這裡清楚記錄了我們的提問內容:
Name: ithelp.ithome.com.tw (請問這個網域的...)Type: A (1) (IPv4 位址是多少?)Type A 代表查詢 IPv4 位址,如果是 Type AAAA 則是查詢 IPv6 位址。接著我們來看 DNS 伺服器回傳了什麼詳細資訊。
【實作練習】
點擊封包 8。一樣在中間窗格展開 Domain Name System (response),這次請找到並展開 Answers 區塊。

畫面解析:
這個回答非常精彩!它不只是單純丟一個 IP 給你,而是完整交代了來龍去脈:
ithelp.ithome.com.tw 其實被指向了 ithelp.ithome.com.tw.cdn.cloudflare.net(這代表網站使用了 Cloudflare 的 CDN 服務)。172.66.162.212 與 104.20.33.71) 回報給你的電腦。這與我們剛剛在終端機看到的輸出結果完全一致!
今天我們透過實戰,看見了每一次網頁瀏覽背後的「第一步」。沒有 DNS 幫忙翻譯,你的電腦根本找不到 HTTP 伺服器在哪裡。在資安領域中,許多惡意軟體也會利用假造的 DNS 回應(DNS 欺騙/劫持),把使用者偷偷導向釣魚網站,這也是我們必須學會看懂 DNS 封包的原因。
我們花了十幾天的時間,學會了如何把單一封包剖析得徹徹底底。但如果今天伺服器遭到駭客攻擊,瞬間湧入幾萬個封包,我們總不可能一個一個點開來看吧?
明天 [Day 20],我們將兌現之前的預告,帶你運用 Wireshark 強大的**「統計 (Statistics) 工具」與「端點分析 (Endpoints)」**,教你如何用上帝視角,一秒找出網路中的異常流量!我們明天見。