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


进行以下操作之前,请关掉主机上的防火墙和360。
防火墙关闭之后是这个样子:
在这里插入图片描述

1. 从主机访问wsl的服务

在wsl子系统中,使用以下命令,获取wsl的ip

ip addr | grep eth0

我这里的显示是:

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

wsl的ip即为inet后面的一串,也就是172.30.64.232。
然后找一个目录,新建一个index.html文件,内容为:

<html>
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        <h1>点个赞再走</h1>
        <p>这么好的文章还不点赞</p>
        <h2>一键三连关注一下</h2>
        <p>不点赞不许白嫖</p>
    </body>
</html>

在这个目录下,输入python -m http.server 8080来启动一个服务。
回到主机,打开浏览器,输入172.30.64.232:8080,应该可以看到这个界面:
在这里插入图片描述

2. 从wsl访问主机的服务

首先,在主机上用管理员身份打开powershell,具体来说,可以点击windows左下角的“小窗户”,然后输入powershell进行搜索,点击以管理员身份运行。
在这里插入图片描述

输入命令

New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

然后在wsl中输入命令:

cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }'

就会出现一个ip,这个ip可以用ping + ip测试一下,应该可以连通
在这里插入图片描述
在主机上随便找一个文件夹,创建上面的index.html,运行python -m http.server 8080来启动一个服务。
由于wsl中没有浏览器,我们用curl命令来测试访问网络服务。输入curl http://{IP}:8080,比如我这里ip是172.30.64.1,那么结果如下图所示:
在这里插入图片描述

3. 通过远程ip连接wsl中的服务(局域网)

我们知道,如果多台机器位于同一局域网下,访问的时候可以使用http://ip:port的方式来访问,那如果我们的服务启动在wsl中,同一局域网下的其他机器该怎么访问呢?分为3步:
(注意:以下步骤对防火墙很敏感,尽量确保自己的设备像文章开头那样,关闭了所有的防火墙)

  1. 在wsl子系统中,使用以下命令,获取wsl的ip

    ip addr | grep eth0
    

    inet后面跟着的就是wsl的ip,复制一下

  2. 在windows中,用管理员方式打开powershell,输入命令,这里我的wsl的ip为172.30.64.232,要启动服务的端口为2345,这里因为8080端口限制比较多,所以换了一个普通的端口,因此命令如下:

    netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2345 connectaddress=172.30.64.232 connectport=2345
    

    记得在使用的时候,替换connectaddress和listenport、connectport为你需要的值。
    还是和上面的方法一样,在wsl中输入python -m http.server 2345,启动一个python的服务,端口2345。

  3. 然后在Windows的powershell中,输入ipconfig,找到无线局域网适配器 WLAN:IPV4地址,我这里为10.46.84.134:
    在这里插入图片描述
    在同一局域网下的另一台设备上,打开浏览器,输入http://10.46.84.134:2345,即可看到我们期待的网页:
    在这里插入图片描述
    经过测试,用手机去访问也没有问题的。
    在这里插入图片描述

  • 47
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛钦亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值