為什麼在將 VPN 分割隧道與 OpenConnect 結合使用時 Windows 更喜歡 IPv4?

為什麼在將 VPN 分割隧道與 OpenConnect 結合使用時 Windows 更喜歡 IPv4?

我在 Windows 10 上使用 OpenConnect 8.03 連接到 VPN。所有其他 IPv4 流量仍然透過我的正常連接進行路由。我的家庭設定是 IPv4 和 IPv6 雙重堆疊。

如果我沒有連接到 VPN,則 IPv6 應該優先於 IPv4。然而,一旦我連接到 VPN,IPv4 就會優先於 IPv6,即使對於 VPN 外部的流量也是如此。route print連接到隧道後,IPv4 或 IPv6 的指標沒有顯示任何差異,當然,它為 VPN 的單一 /16 IPv4 子網路添加了較低的指標。也netsh interface ipv6 show prefixpolicies顯示沒有差異。一般來說,IPv6 仍然有效(透過連接到僅 IPv6 的主機或強制使用 IPv6 來確認)。

當我在 Linux(而不是 Windows 10)上使用 OpenConnect 連接到 VPN 時,IPv6 正確地優先於 IPv4。

答案1

顯然,當連接到純 IPv4 VPN 時,DNS 查找是透過純 IPv4 連線完成的。在預設設定中,Windows 將僅查詢 A 記錄,無論其他介面是否提供 IPv6 連線。

也可以強制 Windows 在純 IPv4 連線上查詢 AAAA 記錄。為此,需要新增以下註冊表​​項:

HKLM\System\CurrentControlSet\Services\Dnscache\Parameters\

DWORD "AddrConfigControl" = "0"

如果該值不存在,則需要建立它。無需重新啟動。該設定或多或少會立即生效。

相關內容