关闭windows上的防火墙

从windows访问wsl

wsl:ip addr|grep eth0

结果:

1
2
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
inet 192.168.63.177/20 brd 192.168.63.255 scope global eth0

inet后面的192.168.63.177即为wsl的ip地址

在test目录下新建index.html文件内容如下

1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>点个赞再走</h1>
<p>这么好的文章还不点赞</p>
<h2>一键三连关注一下</h2>
<p>不点赞不许白嫖</p>
</body>
</html>

在test目录下python3 -m http.server 8080提供http服务,在windows上访问http://192.168.63.177:8080访问index.html

从wsl访问windows

以管理员身份运行powershell,并运行命令New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

在wsl中输入命令cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'得到结果192.168.48.1即为windows ip。

参考文献:同一局域网下windows主机和wsl子系统相互网络服务访问

既然wsl和宿主机在同一子网下,宿主机ipconfig得到的ip地址就能被wsl访问到。

windows的ipconfig命令结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
无线局域网适配器 WLAN:

连接特定的 DNS 后缀 . . . . . . . : DHCP HOST
本地链接 IPv6 地址. . . . . . . . : fe80::f202:8c89:5954:a9ba%6
IPv4 地址 . . . . . . . . . . . . : 192.168.0.105
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.0.1

以太网适配器 vEthernet (WSL):

连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::9630:facd:db12:d5b7%33
IPv4 地址 . . . . . . . . . . . . : 192.168.48.1
子网掩码 . . . . . . . . . . . . : 255.255.240.0
默认网关. . . . . . . . . . . . . :

可以看见,ipconfig说windows的ip是192.168.0.105,而wsl的ip是192.168.48.1,但这个ip地址是wsl联系windows时的地址,可以推测出192.168.48.1是从windows到wsl的网桥(路由器)。

创建于2023.1.17/17.35,修改于202411081957