本文解决方案来自github issue
地址:
在使用WSL2
的过程中,经常遇到某些端口访问不了的情况,之前总是没有头绪,今天终于在Github
上找到了原因。
具体排查方法如下。
思路很简单,就是找到占用了我们目标端口的进程或者服务,然后关闭它。therealkenc
在comment
中提出,我们需要在Powershell
中运行以下命令:
PS C:\> (Get-WmiObject -Class Win32_Service | where ProcessId -eq (Get-Process -Id (Get-NetTCPConnection -LocalPort 5040).OwningProcess).Id).Name
注意上述命令中请将5040
替换为我们的目标端口。Powershell
的打开方式就不多说了,不明白的请自己面壁3
分钟。
上述命令会输出正在使用该端口的进程或服务名,然后我们可以在资源管理器中找到该服务,进入详情后将其停止或禁用。
举个例子来说,我运行命令后,发现占用8000
端口的是iphlpsvc
进程:
PS C:\WINDOWS\system32> (Get-WmiObject -Class Win32_Service | where ProcessId -eq (Get-Process -Id (Get-NetTCPConnection -LocalPort 8000).OwningProcess).Id).Name
iphlpsvc
之后我在Services
中发现服务是IP Helper
,于是我将其停止并禁用。这样原来不可访问的地址立马就可以访问了。