我在 Win 10 上的 WSL 2 中运行 Ubuntu-20.04。
我在 WSL 中没有互联网连接,
ping 8.8.8.8
显示From <a ip> icmp_seq=1 Destination Host Unreachable
networkctl
节目
WARNING: systemd-networkd is not running, output will be incomplete.
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback n/a unmanaged
2 bond0 bond n/a unmanaged
3 dummy0 ether n/a unmanaged
4 tunl0 tunnel n/a unmanaged
5 sit0 sit n/a unmanaged
6 eth0 ether n/a unmanaged
6 links listed.
当我运行networkctl reconfigure eth0
它时显示
WARNING: systemd-networkd is not running, output will be incomplete.
Failed to connect system bus: No such file or directory
有什么办法可以恢复网络连接吗?提前致谢
答案1
感谢您从 Stack Overflow 转发此内容。正如我在对原始问题的评论中所暗示的那样,我认为这里存在两个问题:
- 当然,最主要的原因是你无法访问互联网。
- 其次,您尝试使用
networkctl
WSL 下的命令,但该命令不起作用。
让我们从第二个开始。正如我在评论中提到的,networkctl
由于在我的答案在这里。 那是:
systemd-networkd is not running, output will be incomplete.
这说明这个networkctl
问题与 Systemd 有关。正如该答案中所述,如果不做额外的努力(我倾向于不推荐这样做),Systemd 就无法在 WSL 上得到支持。
因此,与 一样systemctl
,您需要其他替代方案。例如,命令ip
:
ip link
(或ip link show
)将显示网络设备的状态。ip addr
/ip address
将向您显示这些设备上正在使用的 IP 地址。
话虽如此,在 WSL2 上使用网络时,你通常能做的事情不多内部(在 Ubuntu 中)修复它(甚至诊断问题)。说实话,解决 WSL2 下的网络问题可能很困难,但我们会尝试...
作为前言,WSL2 网络由以下任一方式提供:
- “虚拟机平台”功能(通常)
- 或者,Hyper-V 管理器(在 Windows Pro 或更高版本上)
两者本质上都是相同的核心 Windows 代码,但 VMP 是在 Windows Home 上运行的缩小版,因此您可以在其中使用 WSL2(因为 Hyper-V 在 Home 上不可用)。
WSL2 设置了一个虚拟 Hyper-V 网络交换机,位于 WSL2 网络和 Windows“真实”网络“之间”。WSL2 实例通常在该虚拟交换机后面进行 NAT。
因此,当您遇到 WSL 中的网络无法正常工作的问题时,通常是因为虚拟交换机无法与主机通信。
一些较常见的原因:
如果 Windows 连接到 VPN,VPN 软件通常会阻止其他本地连接。由于 WSL2 是一个单独的本地网络位置,因此连接到 VPN 时无法运行。
如果您的情况如此,答案可能取决于您的实际 VPN。至少,Cisco AnyConnect 的一个解决方法或解决方案似乎是增加接口度量用于 VPN 适配器,以便(我相信)本地连接优先。
由于某种原因,WSL2 网络交换机也容易受到交换文件问题的影响。有时请参阅我的 Stack Overflow 答案关于该主题。禁用交换(通过
%userprofile%\.wslconfig
)已为许多用户解决了 WSL2 网络问题。偶尔,企业 IT 部门会向系统推送 Microsoft 补丁,导致 WSL2 网络中断。通常,这种情况表现为它之前可以正常工作,但后来不再自发工作。
您还可以尝试其他一些故障排除步骤。下面列出了一些很棒的步骤在同一个问题的底部(在已经尝试过的事情中),但也有一些额外的答案可以尝试。
答案2
对我唯一有用的方法是:在 Windows 中打开网络和 Internet 设置,转到网络连接:停用“vEthernet(WSL):Hyper-V 虚拟以太网适配器”并重新激活它。
答案3
在 NotTheDr01ds 对 VPN 的评论中添加一个稍微矛盾的观点:
我最近也遇到了同样的连接问题 - 虽然以前它运行良好;2-3 个月前是我最后一次在 WSL 中检查东西的时候。
在阅读了许多关于此问题的帖子和评论后,我决定尝试使用启用 VPN 的 WSL,它开始工作了。没有 VPN 则无法工作,有 VPN 则可以使用。
因此,如果你们配置了任何 VPN 或安装了 VPN 软件,请尝试打开 VPN。