【问题标题】:No internet connection Ubuntu-WSL while VPNVPN 时没有互联网连接 Ubuntu-WSL
【发布时间】:2021-06-01 07:36:40
【问题描述】:

我的 Windows 10 笔记本电脑上运行着 Ubuntu-20.04 版本 2 WSL。 一切正常,我有互联网连接。但前提是我没有连接到 VPN 网络。

如果我使用 Cisco AnyConnect 连接到我所在大学的网络,我将无法再通过 WSL 连接到互联网,而使用例如windows系统中的firefox。 我得到:ping:google.de:名称解析暂时失败

我已经尝试在管理员模式下打开 Windows 命令提示符并键入以下命令:

netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
reboot

这一次成功,我可以访问互联网。但是,一旦我断开 VPN 连接并再次连接,我又遇到了同样的问题。我试图再次执行命令并重新启动,但现在不再工作了。

所以我真的不知道还能做什么。我确实需要在通过 VPN 连接时使用 WSL。

【问题讨论】:

  • 我建议将其移至 Super User,因为它与编程无关,因此与 Stack Overflow 无关。

标签: ubuntu windows-10 vpn windows-subsystem-for-linux wsl-2


【解决方案1】:

@kraego 回答我需要的只是

Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Get-NetIPInterface

我无法 ping 8.8.8.8,但随着指标的变化,它开始起作用了。

【讨论】:

    【解决方案2】:

    WSL2 - VPN 修复:

    在使用 VPN (see github Issue) 时,WSL2 中的 DNS 转发存在问题。此外,Cisco AnyConnect 也存在问题。所以这里有一个解决这些问题的方法。应该适用于 Ubuntu 和 Debian。

    解决方法

    1. 使用 windows powershell 查找名称服务器(在 VPN 会话期间)

      nslookup
      

      您将获得公司名称服务器的 IPv4 地址 复制此地址。

    2. 禁用 resolv.conf 生成 在 wsl:

      sudo nano /etc/wsl.conf
      

      将此文本复制到文件中(以在 wsl 启动时禁用 resolve.conf 生成)

      [network]                                                                        
      generateResolvConf = false
      
    3. 在 wsl 中将您的公司名称服务器添加到 resolv.conf

      sudo nano /etc/resolv.conf
      

      删除其他条目并添加您的公司名称服务器 IP(如果您有辅助名称服务器,请将其添加到单独的行中)

      • nameserver X.X.X.X(其中 X.X.X.X 是您在步骤 1 中获得的地址)
    4. 设置您的 VPN 适配器(如果您有 Cisco AnyConnect打开管理员 powershell

      • 找出您的 VPN 适配器名称:Get-NetIPInterface(在我的例子中:"Cisco AnyConnect"
      • 设置适配器指标(将 -Match 替换为您的姓名),在我的情况下,我必须在重新启动或 VPN 重新连接后运行它
      Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 6000
      

      (What is interface metric: 用于确定路由,windows使用最低metric的接口)

    5. 重启wsl在powershell中wsl.exe --shutdown

    6. 测试它在wsl中运行:wget google.com - 如果这个命令有效,你就完成了。

    在我的情况下,当我尝试通过浏览器(在 Windows 10 上,例如:Intranet)连接到内部内容时遇到 DNS 问题,这是由步骤 4 中设置的高度量值引起的(基本上是禁用 VPN 路由)。因此,这是解决方法的解决方法:

    1. 检查您的默认指标(VPN 接口)在 powershell 中(将 -Match 替换为您的接口名称)
    Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Get-NetIPInterface
    
    1. 在 Windows 10 上遇到问题时,使用 admin powershell 恢复此默认值(将末尾的值替换为您的默认值):
    Get-NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | Set-NetIPInterface -InterfaceMetric 1
    

    【讨论】:

      【解决方案3】:

      这对我有用。

      Anyconnect v4.9 如何打破它:它为 wsl2 添加了一条低 metric 2,低于 5256,这导致 vpn 成为选择的路由, 当然,这永远不会奏效。如下所示。 c:> route.exe 打印 注意:“172.17.228.192 255.255.255.240”是 wsl2 目标子网。 172.17.228.192 255.255.255.240 在线链接 172.17.228.193 5256 172.17.228.192 255.255.255.240 10.255.0.1 10.255.0.71 2 当我将 vpn 路由指标更改为 5500 时,此问题得到解决,高于 5256,通过这样做:控制面板-网络-点击vpn-属性 – IPv4 – 属性,高级 – 自动指标:取消选中并输入 5500。

      来源:https://riowingwp.wordpress.com/2020/12/13/anyconnect-bug/

      【讨论】:

        【解决方案4】:

        在我的 Windows 10 上运行的 WSL 中的 VPN 集成存在问题。您需要将 WSL 重定向到 VPN,请按照以下步骤操作:

        STEP-1:从 Windows Power Shell 获取 DNS 地址

        >nslookup
        Servidor predeterminado:  yyyy.com
        Address:  x.x.x.x
        

        >ipconfig /all
        

        STEP-2 打开 Ubuntu-20.04 Version 2 WSL 并打开 /etc/resolv.conf

        STEP-3 修改 /etc/resolv.conf 。在第一个位置添加VPN地址(我删除了其他方向但没有必要),保存文件,然后再次尝试访问。我的文件看起来像:

        nameserver X.X.X.X
        

        【讨论】:

        • 我必须添加分配给我的 PC 或 VPN GW 的 VPN IP?
        • 谢谢@Poropb,这解决了我的问题。刚刚将 /etc/resolv.conf 中的 VPN IP 移入其他顶部。顺便说一句,在我的顶部是我的本地路由器 IP - 192.168.0.1。
        猜你喜欢
        • 2021-01-14
        • 2017-03-09
        • 2015-06-03
        • 2015-08-22
        • 2021-01-06
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        • 1970-01-01
        相关资源
        最近更新 更多