2008/06/16

錯誤代碼: 0x80072EE2

工作環境遷移之後,每次執行 Windows Update 總是出現 [錯誤代碼: 0x80072EE2] 。找到以下看似相當豐富的 support 資訊,卻一點用處也沒有:
http://support.microsoft.com/kb/836941/zh-tw
終於有一天福至心靈,猜出問題的原因:雙層 NAT。我的 Windows XP 是接在一台 D-Link DI-704P 之內 (簡稱 704P-NAT),而 DI-704P 的 WAN port 則接到另一個以 Linux 建構的 private network (簡稱 Linux-NAT)。

幾個簡單的實驗:
  • XP 放在 Linux-NAT + 704P-NAT 之內 => 結果一直出現錯誤
  • XP 只放在 Linux-NAT 之內 => 順利完成 Windows Update
  • XP 只放在 704P-NAT 之內 => 也順利完成 Windows Update
想要進一步分析,所以用 WireShark 在 XP 上抓封包。發現進行 Windows Update 時,一開始都會有2 至 3 秒的溝通 (HTTP),然後一分多鐘之後再啟動第二次的溝通 (目的主機是 www.update.microsoft.com),但此時是 TLS (https) 連線,無法進一步分析。只知若出現錯誤,溝通的資料只有 11K 左右;反之,順利進入更新畫面則有 88K 的溝通資料。

看起來,Windows Update 的通訊協定無法通過兩層的 NAT。或者應該說,Windows Update 的通訊協定是 NAT-unfriendly,但有考慮到一層 NAT 的狀況。

沒有留言: