无法在 WSL2 和 Windows 主机之间转发端口 8080,但其他端口工作正常

无法在 WSL2 和 Windows 主机之间转发端口 8080,但其他端口工作正常

我在 WSL2 Ubuntu 20.04 上运行了一个 Spring Web 服务器,默认情况下它将在端口 8080 上运行,并且可以通过 LAN 上的其他设备访问它。我通过运行以下 Power Shell 命令将端口从 Windows 上的端口 8080 转发到 WSL2 上的端口 8080,如下所示:这个视频

netsh interface portproxy add v4tov4 listenport=8080 listenaddress=0.0.0.0 connectport=8080 connectaddress=172.18.98.54

其中 172.168.98.54 是我的 WSL2 IP 地址。我还允许 Windows 11 防火墙上的入站连接到端口 8080。

尽管命令运行正常,但端口转发似乎不起作用,因为我无法从 LAN 上的其他设备通过 Windows IP 地址访问该网站。我只能通过在 URL 中使用“localhost”从 Windows 主机访问它。

然后我决定将 Web 服务器改为在端口 8111 上运行,并将端口从 8111 Windows 转发到 8111 WSL,现在可以从 LAN 上的其他设备通过端口 8111 访问 Web 服务器。

是否有任何机制专门阻止端口转发(特别是 8080 端口和其他端口)?我能设法以某种方式使用端口转发 8080 吗?


我还在 Windows 端口 8080 上运行了一个名为 Rebex 的测试 http 服务器,并且我能够通过 Windows IP 地址从局域网上的其他设备访问该网站,因此 Windows 8080 端口似乎没有问题。


编辑:根据@NotTheDr01ds 的建议,这里有一个列出应用于 8080 的防火墙规则的命令。它显示了我创建的单个手动规则。

PS C:\Windows\system32> Get-NetFirewallPortFilter |? { "8080" -in $_.LocalPort } | Get-NetFirewallRule


Name                          : {B5E2FCB9-C589-40F6-8FDD-C07A06AEC496}
DisplayName                   : Bruno80e8080
Description                   : Permitir inbound nas portas 80 e 8080
DisplayGroup                  :
Group                         :
Enabled                       : True
Profile                       : Any
Platform                      : {}
Direction                     : Inbound
Action                        : Allow
EdgeTraversalPolicy           : Block
LooseSourceMapping            : False
LocalOnlyMapping              : False
Owner                         :
PrimaryStatus                 : OK
Status                        : A regra foi analisada com êxito no repositório. (65536)
EnforcementStatus             : NotApplicable
PolicyStoreSource             : PersistentStore
PolicyStoreSourceType         : Local
RemoteDynamicKeywordAddresses : {}

相关内容