Windows 子系统 linux 2 (wsl2) 下的 ubuntu 无法访问互联网

Moh*_*hid 12 hyper-v windows-subsystem-for-linux

我在 wsl 1 下有一个 ubuntu 工作正常并连接到互联网

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

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

问题在这里:[WSL2] 没有网络 · 问题 #4731 · microsoft/WSL


我试过这个但没有用

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

在此处输入图片说明

步骤 2:从操作中选择 Virtual Switch Manager

在此处输入图片说明

第 3 步:选择 WLS

在此处输入图片说明

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

在此处输入图片说明


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

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
Run Code Online (Sandbox Code Playgroud)

形成 ubuntu ping 192.168.0.103

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
Run Code Online (Sandbox Code Playgroud)

形成ubuntu ip路由

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
Run Code Online (Sandbox Code Playgroud)

Form ubuntu 尝试 sudo ip route add default via 192.168.0.103

xxxxxxxxx@xxxxxxxxxx:~$ sudo ip route add default via 192.168.0.103
RTNETLINK answers: Network is unreachable
Run Code Online (Sandbox Code Playgroud)

Sea*_*thy 15

我在这里尝试了许多其他建议,但只有以下建议对我有用(进行网络重置并重新启动 Windows 11):

github.com/microsoft/WSL/issues/4275#issuecomment-846553905

wsl --shutdown
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
netsh winsock reset
shutdown /r 
Run Code Online (Sandbox Code Playgroud)

  • 为我工作。(WSL2、Windows 10) (3认同)

sga*_*a01 6

我有类似的问题。我已经尝试了其 github 存储库问题部分中提到的大多数修复程序。但是,没有一个是永久为我工作的。

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

net_activate() {
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
}
Run Code Online (Sandbox Code Playgroud)

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

昨天,我对这个问题有点沮丧,做了很多事情,现在一切都运行良好,无需调用该函数。

所以,这是我按顺序做的事情的清单:

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

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


Moh*_*hid 5

##这个 aa hack(热修复)不是永久解决方案

\n

在 ubuntu 内我必须:

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

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

\n
\n

bash命令:

\n
\n
sudo ip a flush dev eth0\nsudo ip a add 192.168.0.5/24 dev eth0\nsudo ip r add default via 192.168.0.1\n
Run Code Online (Sandbox Code Playgroud)\n
\n

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

\n

##参考。:

\n\n

在此输入图像描述

\n

注意:关于 wsl 网络主题大约有 14 个待解决的问题,所以我不建议启用它(2020 年 6 月 17 日,问题结束后可能会更好)

\n\n