为什么使用 OpenConnect VPN 分割隧道时 Windows 优先使用 IPv4?

为什么使用 OpenConnect VPN 分割隧道时 Windows 优先使用 IPv4?

我正在使用 Windows 10 上的 OpenConnect 8.03 连接到 VPN。VPN 的配置文件仅为 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"

如果该值不存在,则需要创建。无需重启。设置将立即生效。

相关内容