*** 时没有互联网连接 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”?