*** 时没有互联网连接 Ubuntu-WSL

Posted

技术标签:

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

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

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

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

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

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

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

【问题讨论】:

我建议将其移至 Super User,因为它与编程无关,因此与 Stack Overflow 无关。 【参考方案1】:

@kraego 回答我需要的只是

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

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

【讨论】:

【参考方案2】:

WSL2 - *** 修复:

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

解决方法

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

    nslookup
    

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

    禁用 resolv.conf 生成 在 wsl:

    sudo nano /etc/wsl.conf
    

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

    [network]                                                                        
    generateResolvConf = false
    

    在 wsl 中将您的公司名称服务器添加到 resolv.conf

    sudo nano /etc/resolv.conf
    

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

    nameserver X.X.X.X(其中 X.X.X.X 是您在步骤 1 中获得的地址)

    设置您的 *** 适配器(如果您有 Cisco AnyConnect打开管理员 powershell

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

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

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

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

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

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

【讨论】:

【参考方案3】:

这对我有用。

Anyconnect v4.9 如何打破它:它为 wsl2 添加了一条低 metric 2,低于 5256,这导致 *** 成为选择的路由, 当然,这永远不会奏效。如下所示。 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 当我将 *** 路由指标更改为 5500 时,此问题得到解决,高于 5256,通过这样做:控制面板-网络-点击***-属性 – IPv4 – 属性,高级 – 自动指标:取消选中并输入 5500。

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

【讨论】:

【参考方案4】:

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

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 。在第一个位置添加***地址(我删除了其他方向但没有必要),保存文件,然后再次尝试访问。我的文件看起来像:

nameserver X.X.X.X

【讨论】:

我必须添加分配给我的 PC 或 *** GW 的 *** IP? 谢谢@Poropb,这解决了我的问题。刚刚将 /etc/resolv.conf 中的 *** IP 移入其他顶部。顺便说一句,在我的顶部是我的本地路由器 IP - 192.168.0.1。

以上是关于*** 时没有互联网连接 Ubuntu-WSL的主要内容,如果未能解决你的问题,请参考以下文章

没有互联网连接时是不是调用“performFetchWithCompletionHandler”?

没有互联网连接时使用 mysql

没有互联网连接时如何提醒用户

Swift:没有互联网连接时如何在 webview 中显示错误消息? [复制]

检查是不是有互联网连接 webView 没有出现

没有可用的互联网连接时如何添加自定义错误页面