最近 apt-get update 的時候經常會失敗,試了發現這兩個 domain 問交大 DNS 有時候不會有 response:
- download.opensuse.org
- security.ubuntu.com
試了一下其他 domain ,常出事的有 .org .com .net , .tw 的 domain 幾乎不會有事。
dig @140.113.1.1 download.opensuse.org +trace 這個 query 雖然指定了要使用的 DNS server ,但是加了 trace 所以事實上只有第一個 query 才會問 140.113.1.1 。整個詢問流程如下:
- 先去問 140.113.1.1 “." 的 authorative name server , 也就是 root DNS server (雖然我不懂爲什麼要問因爲不是每一臺電腦都內建 named.root 嗎?)
- 從上一個回應當中挑一臺來問 “.org" 的 authorative name server ,若挑的第一臺沒有回應則換第二臺,依此類推,這是從 wireshark 觀察到的結果。
- 從上一個回應當中挑一臺來問 “opensuse.org" 的 authorative name server ,依此類推
—
預設情形下,如果第一次詢問失敗,會再試一次,最多試3次,每一次詢問的 timeout 預設是5秒鐘。特別注意的是 dig 不會告訴你前面有幾次失敗,回傳的 query time 也不包含失敗的查詢,只包含成功的查詢所花的時間。
嘗試次數可以用 +tries=N 指定,timeout 可以用 +time=N 指定。
—
測試了其他地方的 DNS ,並不會出現像是交大一樣的問題。而且交大不只是 140.113.1.1 會有問題,測了好幾臺校內的 DNS 都有同樣的情形。
觀察到幾個現象:
- 在交大網段內問一些 DNS server 的查詢時間會飆到很高(23xxx ms),有時候完全沒有回應,有時候又正常
—
發現問某幾臺 gtld-servers 和 root-servers 的 DNS query 掉包率很高,但是 ping 又一切正常。
似乎只要中間走的是 TWGATE ,就會有封包掉。
- 192.5.5.241 :只有交大走 TWGATE,附中幾乎不會掉包
- 199.249.112.1 :交大和附中都走 TWGATE
各級學校出國似乎主要有2條路徑,一是 TANET -> TWGATE ,另一是 TANET -> 中研院,交清中央陽明應該是直接接同一條 TWGATE 。
—
3/7 ,據說 TWGATE 換了某臺 router 的 STM-16 卡片就解了……
問題是如果那張卡會掉封包那 ICMP 封包也應該會掉啊……爲什麼只有 DNS query 掉?……
—
番外篇,爲什麼自己架的 DNS server 可以當 root-servers 的 slave ,以加快速度,但是卻不能當,譬如說 .com 的 slave ?
http://fixunix.com/tcp-ip/66711-axfring-com-zone-b-gtld-servers-net-doesnt-work.html