如何查看在Windows上保留的临时端口范围是什么?

时间:2019-01-02 17:05:43

标签: windows networking tcp port netsh

我有一个Windows应用程序,需要使用端口5000550006,但已被阻止。

运行netsh int ip show excludedportrange protocol=tcp时,我看到以下内容:

Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
5357        5357
49709       49808
49809       49908
49909       50008
50009       50108
50109       50208
50280       50379

* - Administered port exclusions.

因此,我的计算机上正在将端口49909保留到50008,这大概是导致我的应用程序失败的原因。我尝试使用以下命令删除此excludedportrange

netsh int ip delete excludedportrange protocol=tcp numberofports=100 startport=49909

但是我看到错误Access is denied.,这使我认为保留该端口的任何内容都正在积极运行,但是我不知道那是什么。

奇怪的是,即使我看到一个错误,运行该命令后,如果重新启动excludedportrange也将有所不同。

作为健全性检查,我还运行了resmon.exe,并确认端口5000550006上没有任何运行。

我怎么知道添加了excludedportrange的东西是什么?

编辑:我将其范围缩小到了Hyper-V。如果我禁用Hyper-V,则不会排除这些端口。

1 个答案:

答案 0 :(得分:0)

似乎Hyper-V保留了随机端口(或至少与Hyper-V有关的端口)。

在回答有关为何docker couldn't open ports(24竖起大拇指)的类似问题时,这对我有用:

netcfg -d-这将清理所有网络设备,并需要重新启动

尽管有人warn about it(4个大拇指)。您的邮件可能会有所不同。它对我有用,直到成功运行警告后我才看到警告。

netcfg -d)是危险的命令,它损坏了我的docker,并且不再启动。即使在重新安装HyperV之后。并重启机器。看来此命令删除了几个网络适配器。重新启动也无济于事。我不得不重置(松散)容器和图像,但这又导致了另一个问题

another answer to a similar docker question(竖起大拇指129)具有此功能,但对我而言它似乎更具吸引力,所以我没有尝试:

@veqryn解决方法对我有用,步骤为:

  1. 禁用hyper-v(需要重新启动两次)

    dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

  2. 完成所有必需的重新启动后,请保留所需的端口,以便hyper-v不会保留它

    netsh int ipv4 add excludedportrange protocol=tcp startport=50051 numberofports=1

  3. 重新启用hyper-V(需要重新启动几次)

    dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

当系统恢复运行时,您将能够成功绑定到该端口。