跳轉到內容

Windows 故障排除指南/網路位置感知

來自華夏公益教科書,為開放世界提供開放書籍

Windows 計算機有一個用於檢測網際網路連線的系統,稱為網路位置感知 (NLA)。 它控制 Windows 對網際網路連線進行分類的許多方面,例如是否將網路歸類為私有或公共。[1] 當您根據網路是“私有”還是“公共”調整防火牆設定時,私有和公共的定義是您的網路當前是否連線到您定義為私有或公共的網路。[2]

檢測網際網路連線

[編輯 | 編輯原始碼]

網路位置感知還能夠透過一個名為網路連線狀態指示器 (NCSI) 的工作組檢查並提醒您何時透過網際網路連線。 NCSI 本身是一個 API,供其他程式在需要了解您的網際網路連線狀況時使用。[3].

但由於網路連線狀態指示器本身就是一個 API,軟體如何檢測您是否有網際網路連線並不公開,因此可以隱藏。 但是,一個簡單的測試可以顯示 NCSI 可以做什麼來檢查您的網際網路連線。[4]。以下是方法

  1. 檢查網站連線
    1. NCSI 使用您的 DNS 查詢 www.msftncsi.com
    2. 如果 HTTP 響應頭包含一個 200 OK 狀態程式碼,那麼它將請求 http://www.msftncsi.com/ncsi.txt[5]。請注意,如果您訪問該 URL,文字檔案將顯示“Microsoft NCSI”。
  2. 檢查 DNS 連線
    1. 此外,NCSI 透過您的 DNS 檢查 dns.msftncsi.com 是否存在。
    2. 如果存在,則 NCSI 檢查 IP 是否為 131.107.255.255
    3. 如果在獲取 DNS 查詢響應或 IP 不匹配時出現任何問題,則假定網際網路存在問題。
    4. 如果出現錯誤 dns_probe_finished_bad_config,請嘗試使用 VPN 獲取靜態 IP 或聯絡您的網際網路服務提供商。[7]
  3. 檢查 IPv6 連線
    1. 類似,但 dns.msftncsi.com 預計將解析為 fd3e:4f5a:5b81::1,在 HTTP 測試中,www 在文字檔案 URL 中更改為 ipv6

如果 #2 成功而 #1 失敗(失敗的定義是沒有響應或重定向),那麼 Windows 會提醒您某種身份驗證可能正在阻止您的網際網路連線(例如,需要在使用網際網路之前登入)。[4].

如果 #2 失敗(失敗的定義是沒有響應[解析失敗]或返回錯誤的地址),那麼 Windows 會提醒您沒有網際網路連線。[4].

請注意,有時您可能會收到一個黃色的警告標誌/感嘆號,表明您沒有網際網路連線,但實際上可以正常連線。 在這種情況下,根據上述情況,這意味著 #2 失敗,但 #1 成功。

配置 NCSI

[編輯 | 編輯原始碼]

NCSI 的配置引數使用登錄檔。 鍵位於 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet。 以下是典型值的列表

鍵中的典型值列表(Windows 10)
名稱 型別 資料
(預設) REG_SZ (未設定值)
ActiveDnsProbeContent REG_SZ 131.107.255.255
ActiveDnsProbeContentV6 REG_SZ fd3e:4f5a:5b81::1
ActiveDnsProbeHost REG_SZ dns.msftncsi.com
ActiveDnsProbeHostV6 REG_SZ dns.msftncsi.com
ActiveWebProbeContent REG_SZ Microsoft NCSI
ActiveWebProbeContentV6 REG_SZ Microsoft NCSI
ActiveWebProbeHost REG_SZ www.msftncsi.com
ActiveWebProbeHostV6 REG_SZ ipv6.msftncsi.com
ActiveWebProbePath REG_SZ ncsi.txt
ActiveWebProbePathV6 REG_SZ ncsi.txt
EnableActiveProbing REG_DWORD 0x00000001 (1)
PassivePollPeriod REG_DWORD 0x0000000f (15)
StaleThreshold REG_DWORD 0x0000001e (30)
WebTimeout REG_DWORD 0x00000023 (35)

如您所見,更改名稱的資料將更改 NCSI 行為。 例如,更改 ActiveWebProbeHost 將更改它將檢查的網站。 EnableActiveProbing 是一個布林值,如果設定為 0,則關閉 NCSI。 任何其他值都會將其開啟。 最後三個名稱,PassivePollPeriod; StaleThreshold; 和 WebTimeout,對系統沒有可預測的影響。[4].

作為旁註,在 Microsoft 文件頁面描述 NCSI 如何工作時,他們提到

IIS 日誌儲存在 www.msftncsi.com 的伺服器上。 這些日誌包含每次訪問的時間和記錄的 IP 地址。 這些 IP 地址不用於識別使用者,在許多情況下,它們是 網路地址轉換 (NAT) 計算機或代理伺服器的地址,而不是該 NAT 計算機或代理伺服器背後的特定客戶端。[6].
  1. "網路位置感知". TechNet. Microsoft Docs. 檢索於 2021-10-22.
  2. MichaelPlatts [msft] (2010-09-08). "網路位置感知 (NLA) 及其與 Windows 防火牆配置檔案的關係". 網路部落格. TechNet 部落格. 存檔於 原文 於 2017-11-05.
  3. "Windows Vista 和 Windows 7 中的網路感知". Microsoft 文件. Microsoft. 檢索於 2021-10-22.
  4. a b c d MichaelPlatts. "Windows 7 網路感知:Windows 如何知道它已連線到網際網路". superuser 社群部落格. StackExchange. 檢索於 01/11/2016. {{cite web}}: 檢查 |authorlink= 值 (幫助); 檢查日期值:|accessdate= (幫助); 外部連結在 |authorlink= (幫助)
  5. 更改為 http://www.msftconnecttest.com/connecttest.txt 在 Windows 10 1607 版本(週年更新)中,新文字檔案讀取 "Microsoft Connect Test"
  6. "附錄 K:Windows Vista 中的網路連線狀態指示器和產生的網際網路通訊". TechNet. Microsoft. 檢索於 2021-10-22. 加密和儲存:NCSI 不使用加密(它傳送的請求和接收的響應都是標準化的,如本小節前面表格所示)。IIS 日誌儲存在 www.msftncsi.com 伺服器上。這些日誌包含每次訪問的時間和記錄的訪問 IP 地址。這些 IP 地址不用於識別使用者,並且在許多情況下,它們是 網路地址轉換 (NAT) 計算機或代理伺服器的地址,而不是該 NAT 計算機或代理伺服器後面的特定客戶端。
華夏公益教科書