当 Windows 连接到 VPN 时,WSL2 没有连接

tec*_*e11 5 networking vpn wsl2

我的 Windows PC 上的网络配置如下:

Ethernet adapter Ethernet 2:

   Description . . . . . . . . . . . : Cisco AnyConnect Secure Mobility Client Virtual Miniport Adapter for Windows x64
   ...
   IPv4 Address. . . . . . . . . . . : 172.27.31.15(Preferred)
   Default Gateway . . . . . . . . . : ::
                                   172.27.0.1
   ...

Ethernet adapter vEthernet (Default Switch):
   ...
   IPv4 Address. . . . . . . . . . . : 172.22.128.1(Preferred)
   ...

Ethernet adapter vEthernet (WSL):
   ...
   IPv4 Address. . . . . . . . . . . : 172.28.48.1(Preferred)
   ...

Wireless LAN adapter Wi-Fi:
   ...
   IPv4 Address. . . . . . . . . . . : 192.168.2.13(Preferred)
   Default Gateway . . . . . . . . . : 192.168.2.1
   ...
Run Code Online (Sandbox Code Playgroud)

我的 WSL:

# ip addr|grep 'inet '
inet 127.0.0.1/8 scope host lo
inet 172.28.50.28/20 brd 172.28.63.255 scope global eth0
# ip route
default via 172.28.48.1 dev eth0
172.28.48.0/20 dev eth0 proto kernel scope link src 172.28.50.28
Run Code Online (Sandbox Code Playgroud)

当 Windows PC 连接到 VPN 时,从 WSL2 内 ping IP 会得到以下结果:

172.27.0.1 (Unreachable)
192.168.2.1  (Unreachable)
172.28.48.1  (Unreachable)
172.22.128.1  (Unreachable)
Run Code Online (Sandbox Code Playgroud)

当 Windows PC 与 VPN 断开连接时,从 WSL2 内 ping IP 将得到以下结果:

192.168.2.1  (YES)
172.28.48.1  (YES)
172.22.128.1  (Unreachable)
Run Code Online (Sandbox Code Playgroud)

基本上,当 Windows PC 连接到 VPN 时,WSL2 与除自身以外的任何 IP 完全隔离。如何解决这个问题?

更新:

Windows PC上“route print”显示的路由情况如下(我省略了Gateway=192.168.2.1、Interface=192.168.2.13的大部分行):

IPv4 Route Table
=================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.2.1     192.168.2.13     35
          0.0.0.0          0.0.0.0       172.27.0.1     172.27.31.15      2
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
     172.22.128.0    255.255.240.0       172.27.0.1     172.27.31.15      2
     172.22.128.0    255.255.240.0         On-link      172.22.128.1    271
     172.22.128.1  255.255.255.255         On-link      172.22.128.1    271
   172.22.143.255  255.255.255.255         On-link      172.22.128.1    271
       172.27.0.0    255.255.192.0         On-link      172.27.31.15    257
     172.27.31.15  255.255.255.255         On-link      172.27.31.15    257
    172.27.63.255  255.255.255.255         On-link      172.27.31.15    257
      172.28.48.0    255.255.240.0         On-link       172.28.48.1    271
      172.28.48.0    255.255.240.0       172.27.0.1     172.27.31.15      2
      172.28.48.1  255.255.255.255         On-link       172.28.48.1    271
    172.28.63.255  255.255.255.255         On-link       172.28.48.1    271
    192.168.2.0    255.255.255.0       172.27.0.1     172.27.31.15      2
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link      192.168.2.13    291
        224.0.0.0        240.0.0.0         On-link       172.28.48.1    271
        224.0.0.0        240.0.0.0         On-link      172.27.31.15    257
        224.0.0.0        240.0.0.0         On-link      172.22.128.1    271
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link      192.168.2.13    291
  255.255.255.255  255.255.255.255         On-link       172.28.48.1    271
  255.255.255.255  255.255.255.255         On-link      172.27.31.15    257
  255.255.255.255  255.255.255.255         On-link      172.22.128.1    271
Run Code Online (Sandbox Code Playgroud)

小智 7

https://github.com/sakai135/wsl-vpnkit

这为我解决了使用工作 VPN 的公司系统的问题。

登录此处希望修复搜索引擎索引(每次尝试搜索修复此特定问题时,我都会点击此线程)


Not*_*1ds 1

这是企业 VPN 的一个已知限制。WSL2 在 Hyper-V 交换机后面的单独虚拟网络上运行。我假设连接到 VPN 后您也无法访问本地网络上的任何其他设备。从 Windows 的角度来看,WSL2 网络是一个“单独的设备”/网络。

两种选择:

  • 首先,如果您的用例支持,请在连接到 VPN 时使用 WSL1 实例。由于它与 Windows 共享网络接口,因此当 VPN 连接到 Windows 中时,它仍然可以访问网络(以及 VPN 上的资源)。

  • 其次,如果您使用的是 Windows 11(我知道不太可能使用企业设备),那么有一个可能的解决方法。WSL2 网络领域的改进目前正在预览中。Windows 11 用户可以安装 Microsoft Store 中提供的 WSL Preview,并按照此处的说明打开桥接网络。

    在此模式下,我的理解(尽管我无法测试)是桥接设备可能能够在启用 VPN 的情况下连接到网络。不过,如果您需要从 WSL2 内连接到 VPN,则需要使用 Linux 客户端。