首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用实际IP从WSL2连接到主机

使用实际IP从WSL2连接到主机
EN

Stack Overflow用户
提问于 2022-07-21 08:46:03
回答 1查看 1.7K关注 0票数 0

是否有人使用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。

EN

Stack Overflow用户

发布于 2022-07-21 15:32:50

有几种不同的方法(以及你可能需要做的事情)来使这个工作。您可能已经准备好了其中的一些:

  • 首先,正如注释中提到的,在访问运行WSL2的服务时,使用mDNS格式$(hostname).local (或与您正在使用的任何语言等效)是最好的名称(在大多数情况下)。这可以简单地硬编码为Windows“计算机名”+(与.local连接)。
  • 接下来,请记住,当您第一次尝试访问端口上的网络服务时,Windows Defender防火墙将向您请求创建规则的权限。默认情况下,此规则仅适用于专用网络配置文件。因此,将为任何公共网络配置文件上的端口创建相应的块规则。我真的是在尝试这个的时候才发现的。我想我不知道该GUI对话框生成了相应的块。 因为WSL的网络被认为是公共的(奇怪的),如果它存在的话,您需要删除这个阻止规则。
  • 然后,您还需要为来自WSL的端口打开一个允许规则。类似于: 新网络防火墙规则-DisplayName "WSL测试“-InterfaceAlias "vEthernet”-Direction入站-Protocol TCP -LocalPort 80 -Action允许 这将打开公共网络和专用网络上的端口,但只能在WSL虚拟接口上打开。它仍然会被网络上的其他机器阻塞(假设这是你想要的)。
  • 现在,对于绑定地址,您有几个选项:
代码语言:javascript
运行
复制
- 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

代码语言:javascript
运行
复制
- 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)"`).
代码语言:javascript
运行
复制
- 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 ),作为指向本地主机的指针。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73063208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档