在 Windows 10 中,我们如何才能找出哪些应用程序保留了 TCP 端口范围,如 netsh 所示?

在 Windows 10 中,我们如何才能找出哪些应用程序保留了 TCP 端口范围,如 netsh 所示?

最近,在我的开发机器上,一些 TCP 端口开始无法供应用程序使用,并出现错误 10013。

在网上搜索我认为这个解释这里最有可能的是:这些端口被某些应用程序在管理上排除在外,很可能被保留供自己使用。

事实上,我可以用命令查看排除端口的范围

netsh int ipv4 show excludedportrange protocol=tcp

我也可以尝试删除一些排除的范围,但大多数情况下 netsh 拒绝这样做,显示错误“访问被拒绝”(即使在管理 shell 内)或“未找到元素”。

所以,现在我想尝试另一种方法:找出哪些应用程序排除了这些 TCP 端口范围。

虽然这是一台公司机器,但它不属于 Windows 域(而且它现在确实在我家里,因为疫情我在家工作)。

所以,问题是:我如何才能找到哪些应用程序正在保留这些 TCP 端口范围?


更新

Stackoverflow 上有很多关于此的问题(我认为这里不是讨论此问题的合适地方,但无论如何)。

我在某个地方找到了一个对我有用的解决方案:

net start winnat
net stop winnat

它立即起作用,甚至不需要重新启动。

Windows 10 Pro 20H2 19042.804 Windows 功能体验包 120.2212.551.0


编辑。

刚才netsh的输出:

$ netsh int ipv4 show excludedportrange tcp
                                    
Protocol tcp Port Exclusion Ranges      
                                    
Start Port    End Port                  
----------    --------                  
     20092       20191                  
     20192       20291                  
     20292       20391                  
     20392       20491                  
     20492       20591                  
     20592       20691                  
     20792       20891                  
     20892       20991                  
     20992       21091                  
     21092       21191                  
     21192       21291                  
     21292       21391                  
     21393       21492                  
     21493       21592                  
     21593       21692                  
     21693       21792                  
     21793       21892                  
     21893       21992                  
     22033       22132                  
     22133       22232                  
     22233       22332                  
     22637       22736                  
     22737       22836                  
     22837       22936                  
     22937       23036                  
     23037       23136                  
     23137       23236                  
     23237       23336                  
     23360       23459                  
     23460       23559                  
     23560       23659                  
     23660       23759                  

* - Administered port exclusions.       
                                    

答案1

这通常是由 Hyper-V、Docker 或 WSL 引起的。尝试重新启动winnat

net stop winnat
net start winnat

还根据docker/for-win#3171 (评论)。当您的计算机上的动态端口范围未更新到新的起始端口时,就会发生这种情况。您可以使用以下方法修复此问题:

netsh int ipv[46] set dynamic tcp start=49152 num=16384

答案2

将端口与应用程序关联起来的一个非常好的工具是 TCP View(它是一个 Microsoft SysInternals 应用程序)。

查找 SysInternals,下载 TCP View,安装并运行。它会显示您需要的内容。

这是屏幕截图。

在此处输入图片描述

在选项部分,您可以取消选中(不显示)未连接的端口。例如,这会删除 svchost,并减少一些显示混乱。

相关内容