是否有人使用WSL2并使用其实际IP连接到主机,而不是通过WSL2网络适配器IP连接?
我的情况是:我的ip是192.168.1.2
我在我的实际机器上启动了一个WSL2服务器,它绑定到127.0.0.1和192.168.1.2,我希望从WSL2下的码头容器中连接到WSL2服务器。如果我ping/telnet/curl到192.168.1.2,调用就会因为超时而失败,这既发生在我的停靠容器中,也直接发生在WSL2下的ubuntu中。
我已经证实,我可以在我的码头容器内的路由器在192.168.1.1平。我不能从我的WSL2外壳中访问192.168.1.2在docker之外。我不能使用127.0.0.1作为替换,因为最终目标是在WSL2中运行一个端口设置,该设置调用我的机器上的then服务器(即我希望通过docker启动4个服务和一个数据库,然后在实际的计算机上积极地开发和调试一个5服务)。
我试过完全禁用防火墙,但没有效果。
有人知道会是什么吗?或者我甚至应该能够从WSL2内部访问192.168.1.2。
发布于 2022-07-21 15:32:50
有几种不同的方法(以及你可能需要做的事情)来使这个工作。您可能已经准备好了其中的一些:
$(hostname).local
(或与您正在使用的任何语言等效)是最好的名称(在大多数情况下)。这可以简单地硬编码为Windows“计算机名”+(与.local
连接)。- If you really do want to bind _only_ to the WSL virtual network, then you'll need to either obtain (or parse somehow) the correct address, since it will after each reboot (or `wsl --shutdown`). You can see the correct address with `ipconfig` in PowerShell, and look for:
以太网适配器vEthernet :特定于连接的DNS后缀.*.IPv4地址。。。。。。。。。。172.25.208.1子网面具。。。。。。。。。。。* 255.255.240.0
在这种情况下,绑定地址将是172.25.208.1
。
- Alternatively, I don't believe there's much of a reason not to just bind to `0.0.0.0` (all interfaces), since the firewall is going to block connections from other networks (assuming you specified the `-InterfaceAlias "vEthernet (WSL)"`).
- However, from the comments, you also mention:
192.168.1.2是我的WiFi连接的IP。我知道IP不是系统范围的,但是need服务器绑定到那个IP,所以我需要能够访问它。
如果您真的不能将绑定地址更改为其他地址,那么您将无法从WSL2直接访问它。但是,如果是这样的话,仍然可以使用端口转发将数据包发送到正确的接口。
最简单的方法是安装/启用Windows OpenSSH服务器,然后使用以下内容:
ssh -L 80:localhost:80 $(主机名).local
这将使localhost:80
在WSL2中连接到端口80上的Windows服务。
如果需要服务器名来匹配某些虚拟主机名(SNI),则可以将主机名添加到您的Windows主机文件(默认情况下映射到WSL2 ),作为指向本地主机的指针。
https://stackoverflow.com/questions/73063208
复制相似问题