WSL访问Windows主机客户端

在使用WSL的过程中,我们有时候会遇到希望WSL访问Windows主机客户端的需求。在不考虑windows防火墙存在的情况下,这是非常容易实现的。

首先,在windows中运行如下命令查看WSL虚拟网卡下Windows主机的IP地址:

1
ipconfig

找到带有WSL的虚拟网卡,类似于vEthernet (WSL),然后找到其IP地址(如下图):

ipconfig

其中172.27.48.1则是主机的IP地址,在wsl中使用这个地址连接即可。

但是在windows中,我们需要配置防火墙规则来允许WSL访问Windows主机客户端。这可以通过两种方式来进行,第一种是直接在防火墙中将你希望从wsl连接的服务端程序的入站规则设置为允许,第二种是直接允许WSL虚拟网卡的所有连接入站。第一种方法相对于第二种比较危险,因为你很可能处于一个复杂的网络环境中,除了wsl,你所在的局域网的其它设备也可以访问你的windows主机,网络中的其它设备也可能可以通过你的ipv6地址访问到你的端口(如果你的ipv6地址被泄露且上层网关没有防护)。所以,我推荐使用第二种方法。

配置防火墙

要让windows防火墙允许所有来自WSL虚拟网卡的连接,可以使用Powershell运行如下命令(管理员权限):

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

注意上面命令中的vEthernet (WSL)需要根据你在ipconfig中找到的虚拟网卡的名称进行修改。

这条命令会在防火墙中创建一个名为WSL的规则,允许所有来自vEthernet (WSL)的连接。这样,你就可以在WSL中访问Windows主机的服务端了。