我有几个服务在我的windows主机上运行。其中一些可以通过在端口8090、8091中运行的wsl访问。其他港口的人永远挂着。erornetstat的
0s7z1bwu1#
错误消息connection refused表示此端口上没有服务侦听。确保您的服务使用此端口。在Linux上,您可以使用netstat -apn(作为root用户执行)检查哪些服务侦听哪个端口。在Windows工具上,如https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview显示所有端口和这些端口上列出的服务。
connection refused
netstat -apn
oaxa6hgo2#
重要的是要了解WSL 2运行在虚拟化网络中,该网络在Windows主机上运行的Hyper-V路由器后面进行NAT。这意味着,从WSL 2的Angular 来看,您的Windows主机实际上位于单独的网络上。因此,通常有三种原因导致无法从WSL 2连接到Windows中运行的服务:
ip route
字符串太多的指南提供了一个太复杂的建议,使用类似于:
echo $(ip route list default | awk '{print $3}')
型...以获取Windows服务所需的地址。但是,假设您使用的Windows 10版本已超过其支持终止日期,您应该能够使用mDNS,如my answer here中所述。总结如下:
echo $(hostname).local
型不过,我假设您已经在这样做了,因为您提到可以访问一些服务。如果您在WSL 2中使用localhost来尝试与Windows服务进行通信,则这是不可能的。
localhost
127.0.0.1
0.0.0.0
Set-NetConnectionProfile
因此,除非为服务配置允许规则,否则防火墙通常会拒绝不受信任的连接。通常,Windows会在第一次从外部访问特定端口时提供一个用于创建永久规则的UI,但是(根据我的经验)很容易错过这个对话框,因为它经常被重新定位在另一个窗口下。在此之后,您必须手动创建规则,无论是通过Windows Defender UI还是从PowerShell使用New-NetFirewallRule。
New-NetFirewallRule
xv8emn3q3#
对于Docker Desktop,使用特殊地址host.docker.internal。据我所知,这是为了发展。
host.docker.internal
3条答案
按热度按时间0s7z1bwu1#
错误消息
connection refused
表示此端口上没有服务侦听。确保您的服务使用此端口。在Linux上,您可以使用netstat -apn
(作为root用户执行)检查哪些服务侦听哪个端口。在Windows工具上,如https://learn.microsoft.com/en-us/sysinternals/downloads/tcpview显示所有端口和这些端口上列出的服务。oaxa6hgo2#
重要的是要了解WSL 2运行在虚拟化网络中,该网络在Windows主机上运行的Hyper-V路由器后面进行NAT。这意味着,从WSL 2的Angular 来看,您的Windows主机实际上位于单独的网络上。
因此,通常有三种原因导致无法从WSL 2连接到Windows中运行的服务:
字符串
太多的指南提供了一个太复杂的建议,使用类似于:
型
...以获取Windows服务所需的地址。
但是,假设您使用的Windows 10版本已超过其支持终止日期,您应该能够使用mDNS,如my answer here中所述。总结如下:
型
不过,我假设您已经在这样做了,因为您提到可以访问一些服务。如果您在WSL 2中使用
localhost
来尝试与Windows服务进行通信,则这是不可能的。127.0.0.1
/localhost
。这将允许来自Windows本地主机的连接,但WSL 2连接将失败,因为它们来自另一个地址。确保绑定到0.0.0.0
。执行此操作的说明将取决于您正在配置的服务。Set-NetConnectionProfile
,但在最近几个Windows版本中无法使用。因此,除非为服务配置允许规则,否则防火墙通常会拒绝不受信任的连接。通常,Windows会在第一次从外部访问特定端口时提供一个用于创建永久规则的UI,但是(根据我的经验)很容易错过这个对话框,因为它经常被重新定位在另一个窗口下。在此之后,您必须手动创建规则,无论是通过Windows Defender UI还是从PowerShell使用
New-NetFirewallRule
。xv8emn3q3#
对于Docker Desktop,使用特殊地址
host.docker.internal
。据我所知,这是为了发展。