WSL2 网络问题诊断指南:解决ping不通、地址异常、路由缺失及防火墙拦截

更新:10-27 名人轶事 我要投稿 纠错 投诉

老铁们,大家好,相信还有很多朋友对于WSL2 网络问题诊断指南:解决ping不通、地址异常、路由缺失及防火墙拦截和的相关问题不太懂,没关系,今天就由我来为大家分享分享WSL2 网络问题诊断指南:解决ping不通、地址异常、路由缺失及防火墙拦截以及的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

如果你正常使用,没有手动修改主机和WSL2的网络配置,然后突然发现WSL2无法正常访问网络,那么你可以重新启动WSL2,很有可能就可以了。

# 重启WSL命令

$ wsl --关闭

# 然后重启并输入

如果$wsl还是不行,请参考以下流程一一排查。我会尽力重现各种情况,然后进行解释。

尖端:

以下内容需要了解计算机网络知识。它要求您了解网关、子网、路由和防火墙等概念,并能够执行一些简单的计算和配置。

WSL2 和 WSL1 的网络的区别

在解释问题之前,我们先了解一下WSL2 和WSL1 在网络上的区别。 WSL1是共享主机的网络堆栈,即WSL1共享主机IP。它没有自己独立的逻辑网卡,即没有自己专属的IP地址。类似于Docker网络的host模式。

图1 wsl1与主机网络关系

如上图所示,两者都使用192.168.1.10与外界通信。下图是wsl1和主机的网络接口状态图。

图2 wsl1与主机网络地址对比

不过,wsl2可以理解为一个完全由宿主机虚拟化的完整的Linux虚拟机。它有自己逻辑上独立的网卡,即有自己独立的网络栈。类似于VMware的bridge模式和docker的macvlan模式。

图3 wsl2与主机的网络拓扑图

上图描述了两者的逻辑关系。从上图可以看出,WSL2要想与外界通信,必须保证WSL2能够正常访问主机(因此主机上存在防火墙拦截问题),因为主机主机就是与外界沟通的桥梁。为保证WSL2与主机通信正常,需要确认两者的IP地址是否在同一网段。其次,WSL2的默认路由必须是同网段主机的地址(172.25.32.1/20)。

wsl1和wsl2的详细对比和区别可以参考:比较WSL 1和WSL 2

排查过程

经过调查,我发现主要原因有以下三个方面。

下面的图片都是模拟还原的截图。

1)宿主机的 WSL 网卡 和 wsl2 的外部通信的网卡 eth0 网络配置信息不一致

检查主机和wsl2的网络状态

图片

通过IP和子网掩码的计算,我们可以知道两者显然不在同一个子网。因此第一步是将两者配置在同一子网中。这里我们选择更改WSL2。

一些没有学过计算机网络的朋友可能不知道如何使用ip和netmask计算。这并不复杂。如果不懂的话可以自行搜索学习。 (可以参考:维基百科“子网”)

$ sudo ifconfig eth0 172.25.46.6 netmask 255.255.240.0 如图所示,WSL2 无法访问主机,但主机可以访问WSL2。因此很可能主机的防火墙阻止了WSL2 对主机的访问。另一种情况是防火墙规则中默认禁用ICMP响应(ping的实现是基于ICMP协议)。

尖端:

禁用ICMP 回复是隐藏网络主机最简单且最常见的方法。对于桌面版Windows来说,通常默认情况下是不会禁用的,但是如果你安装了“XX安全管理器、XX安全卫士”来加固你的电脑,那么很有可能ICMP echo会被禁用。

操作系统的防火墙通常会对网络访问方向进行严格的限制,即禁止外部主机随意访问我提供的服务。因此,当外部主机无法访问本机提供的外部服务时,需要考虑该主机的防火墙是否限制访问。

2)宿主机的网络防火墙拦截了 wsl2 的数据流量

先暴力关闭window10的防火墙,然后再次ping主机。

图片

图片

因此可以确定主机的防火墙拦截了主机的ICMP回显。为了方便WSL2与主机之间无障碍通信,我们可以禁用防火墙,但显然这样主机就完全暴露在公网了,降低了安全性。这无疑会带来很大的折扣,所以最好的办法就是添加一条入站规则:只允许WSL2所在网段的主机无障碍访问该主机。

图片图片图片图片上图涉及到子网的计算。不会的朋友可以自己补课,或者使用一些网上的“网络和IP地址计算器”

来计算。

图片图片图片已在此处创建。我们只需要启用规则就可以无障碍的访问主机了。

从图中可以看到,现在可以ping 通主机了。此时主机提供的任何外部网络服务WSL2都可以访问。 【因为我们只限制了网络地址,没有限制协议、端口等】

以上仅列出了无法ping WSL2 的主机,但主机可以ping WSL2。否则,可能是WSL2开启了防火墙。您可以根据您使用的具体Linux并参考上面的配置思路自行解决。

当然,极端情况下,WSL2和主机都开启了防火墙(并且禁用了ICMP echo),那么就会出现双方都无法ping通的情况。

3)WSL2 路由配置不正确

主机可以与WSL2通信并不意味着WSL2可以正常访问Internet。当WSL2的默认路由缺失或不正确时,WSL2无法访问Internet。

图片图片

额外话题(WSL2 DNS 的配置)

使用WSL2进行软件更新时,往往很慢(前提是已经更换了国内源)。经过一番排查,发现是DNS的问题。使用自定义DNS时,域名解析的速度是显而易见的。快得多。

不过WSL2默认的域名解析服务与普通Linux略有不同。这是一个解释:

熟悉Linux的人都知道,DNS服务器的配置信息在/etc/resolv.conf文件中。默认情况下,微软每次启动WSL2时都会根据主机WSL网卡的地址(例如:172.25.32.1)重新建立wsl2实例。生成此文件,并将DNS 服务器的地址指定为主机WSL 网卡的地址(例如:172.25.32.1)。

所以如果你想使用自己指定的DNS服务来加速解析,需要先禁用自动生成策略。如果你仔细阅读上图,你会发现官方已经给出了禁用自动生成的方法。

也就是说,/etc/wsl.conf 使用以下内容创建:

[网络]

用户评论

巴黎盛开的樱花

我今天遇到WSL2网络问题了,ping 都打不出去,好气啊!

    有15位网友表示赞同!

空谷幽兰

最近我的WSL2一直提示网络地址异常,都不知道该怎么解决。

    有12位网友表示赞同!

夜晟洛

WIndows系统和WSL2的网络配置还真是麻烦,每次都得调半天。

    有11位网友表示赞同!

荒野情趣

奇怪了,我这边WSL2缺少默认路由,其他虚拟机都是正常的...

    有12位网友表示赞同!

抓不住i

我的WSL2被宿主机防火墙拦截了好几天了,都快愁死了!

    有6位网友表示赞同!

迷路的男人

这篇文章太贴心了,刚好我这儿碰到了WSL2网络异常的问题。

    有11位网友表示赞同!

爱情的过失

终于找到解决WSL2网络问题的办法了!ping可以通了,哈哈!

    有7位网友表示赞同!

爱到伤肺i

我最近学习Linux,就遇到了WSL2网络问题,这篇文章帮了我很多忙。

    有14位网友表示赞同!

爱你心口难开

每次遇到网络问题都感觉很头疼,希望以后不要再出现WSL2的网络异常吧。

    有19位网友表示赞同!

呆檬

我的工作依赖WSL2,网络偶尔出问题影响效率 really bad!

    有12位网友表示赞同!

迷路的男人

学习技术果然要多了解一些基础知识,不然遇到 网络问题的时自己就束手无策了。

    有17位网友表示赞同!

见朕骑妓的时刻

这篇文章排查的思路很清晰,对于初学者来说很友好啊!

    有19位网友表示赞同!

你身上有刺,别扎我

WSL2网络问题确实常见,有时候真的不知道该怎么解决。

    有7位网友表示赞同!

﹏櫻之舞﹏

这篇文章把所有可能的原因都列出来了,真是太周全了!

    有20位网友表示赞同!

太易動情也是罪名

以后遇到WSL2网络问题直接查一下这篇帖子就好了!

    有6位网友表示赞同!

若他只爱我。

感谢作者分享这个经验总结,真是一份宝贵资源啊!

    有17位网友表示赞同!

眼角有泪°

学习linux的路上难免会遇到各式各样的挑战,好在这篇文章提供了一定的指引方向。

    有11位网友表示赞同!

【WSL2 网络问题诊断指南:解决ping不通、地址异常、路由缺失及防火墙拦截】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:挑战极限,攀登天堂巅峰——再见CH50 下一篇:揭秘伯爵高仿手表价格:精选10大购买途径一览