首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux2的windows子系统(wsl2)下的ubuntu不能访问互联网。

Linux2的windows子系统(wsl2)下的ubuntu不能访问互联网。
EN

Stack Overflow用户
提问于 2020-06-16 18:28:05
回答 6查看 49.3K关注 0票数 13

我有一个运行在wsl 1下的ubuntu,可以很好地工作,并且可以连接到互联网。

只需升级到wsl2,我就无法从bash ping google.com

但是,如果我降级到wsl1,我可以使用ping

问题出在这里:[WSL2] No network · Issue #4731 · microsoft/WSL

我试过了,但不起作用

第1步:以管理员身份打开Hyper-V管理器

第2步:从操作中选择虚拟交换机管理器

第3步:选择WLS

第4步:选择外部网络并选择适配器连接到互联网

我的windows ipconfig以太网适配器vEthernet (WSL):

代码语言:javascript
复制
Ethernet adapter vEthernet (WSL):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::30a4:2612:6ee3:2390%142
   IPv4 Address. . . . . . . . . . . : 192.168.0.103
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.0.1

表ubuntu ping 192.168.0.103

代码语言:javascript
复制
xxxxxxxxx@xxxxxxxxxxx:~$ ping 192.168.0.103
PING 192.168.0.103 (192.168.0.103) 56(84) bytes of data.
From 172.22.131.55 icmp_seq=1 Destination Host Unreachable
From 172.22.131.55 icmp_seq=2 Destination Host Unreachable

形成ubuntu ip路由

代码语言:javascript
复制
xxxxxxxxx@xxxxxxxxxxx:~$ ip route
default via 172.22.128.1 dev eth0 
172.22.128.0/20 dev eth0  proto kernel  scope link  src 172.22.131.55

从ubuntu尝试通过192.168.0.103添加默认的sudo ip route

代码语言:javascript
复制
xxxxxxxxx@xxxxxxxxxx:~$ sudo ip route add default via 192.168.0.103
RTNETLINK answers: Network is unreachable
EN

回答 6

Stack Overflow用户

发布于 2020-08-22 01:10:41

我也有类似的问题。我已经尝试了github repo的问题部分中提到的大多数修复。但是,没有一个对我来说是永久有效的。

为了暂时获得访问权限,我创建了一个似乎对我有效的函数。

代码语言:javascript
复制
net_activate() {
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
}

我把它保存在.bashrc文件中。每次我需要连接时,我都会运行这个命令。

昨天,我对这个问题感到有点沮丧,做了很多事情,现在没有调用那个函数,一切都运行得很好。

所以,下面是我按顺序做的事情的列表:

  • 卸载了我拥有的所有VPN,并从设备管理器
  • 中删除了它们的适配器和所有网络适配器(不仅是VPN,而且是所有列出的,包括隐藏的)。
  • 运行CCleaner,并在选中每个复选框的情况下进行自定义清理。
  • 进行了网络重置。(要执行此操作,只需按"Win + S“并键入”

reset")

重新启动我的电脑后,WSL2中的互联网工作完全正常。

票数 8
EN

Stack Overflow用户

发布于 2020-06-17 04:06:37

##This a hack (热修复)不是永久的解决方案

在ubuntu中,我不得不:

  • 将手动ip分配添加到网络适配器
  • 我的路由器动态ip范围100-200
  • 我的ip地址是192.168.0.103/24

ip地址是

注意:您必须在wsl hyper-v网络虚拟交换机中启用外部网络(请参阅问题中的步骤1到4)

bash命令:

代码语言:javascript
复制
sudo ip a flush dev eth0
sudo ip a add 192.168.0.5/24 dev eth0
sudo ip r add default via 192.168.0.1

每次重启虚拟机时,您都必须重复这些命令(或者您也可以编写脚本)

##Ref。:

注意:在wsl网络的主题上有大约14个问题,所以我不建议启用它(在2020-06-17可能在问题关闭后会更好)

票数 3
EN

Stack Overflow用户

发布于 2020-12-19 07:39:04

当我把WSL (运行ubuntu20.04)转换到版本2时,我也遇到了同样的问题。恢复到版本1,迅速恢复了互联网。来回转换切换的互联网开关一致。在WSL之外访问互联网总是可以的。

尝试修复Ubuntu安装并没有解决这个问题。也没有干预网络接口设置或重启我的电脑。

然后,我遵循了@sgalpha01的建议,运行CCleaner,并成功了:

  • 选中所有框(如100)的自定义清洁,但以下情况除外(影响较大/耗时):
    • Windows资源管理器/网络passwords
    • System/Start菜单Shortcuts
    • System/Desktop Shortcuts
    • Advanced/Wipe可用空间
    • Google Chrome/保存的Google浏览器

  • 由两个过时且无关(我认为)的程序组成的注册表。

在那之后,WSL中的互联网接入被恢复,而无需重启PC。

非常感谢@sgalpha01!对于任何尝试这个修复的人:由于互联网似乎不需要重启就可以重新出现,你可以尝试使用更多选择性设置的Custom Clean,直到互联网(希望)返回。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62406362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档