gpt4 book ai didi

windows-10 - 什么是 Windows 10 中的受管端口排除?

转载 作者:行者123 更新时间:2023-12-04 11:07:04 25 4
gpt4 key购买 nike

我在 Windows 10 中启用了 hyper-v。
当我检查排除的端口时,我得到:

C:\> netsh interface ipv4 show excludedportrange protocol=tcp

Protocol tcp Port Exclusion Ranges

Start Port End Port
---------- --------
5357 5357
9800 9800
9801 9801
49671 49770
49871 49970
50000 50059 *
61117 61216
61220 61319
61902 62001

* - Administered port exclusions.

为什么 Hyper-V 保留这些端口?

受管端口排除(即范围 50000-50059 )与其他端口排除有何不同?

例如,当我尝试在 golang 中使用 net.Listen() ping 所有这些端口时,除 50000-50059 之外的所有端口都返回错误:
listen tcp 127.0.0.1:9801: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 

最佳答案

在 Windows 10 中,有时我们会收到特定端口的错误:

Ports are not available: listen tcp 0.0.0.0:55555: bind: An attempt was made to access a socket in a way forbidden by its access permissions. 
看到此错误时,我们的第一 react 是我们需要的端口正以某种方式被另一个应用程序使用。因此,如果我们检查正在使用的端口:
netstat -aon | find "55555"
但结果可能表明该端口尚未被使用。
那么问题可能是 Windows 保留了一些端口,它们是我们不能用于其他目的的排除端口。我们可以使用以下命令列出这些端口:
C:\Users\Xyz> netsh interface ipv4 show excludedportrange protocol=tcp

Protocol tcp Port Exclusion Ranges

Start Port End Port
---------- --------
1031 1130
1131 1230
1231 1330
1331 1430
1431 1530
1561 1660
2363 2462
2463 2562
2563 2662
2663 2762
2763 2862
2863 2962
5357 5357
50000 50099 *
55500 55599

* - Administered port exclusions.
为什么windows保留这些端口?
  • 由于已识别的病毒/恶意软件事件,Microsoft 可能会阻止这些端口。
  • 我们在 Windows 更新后遇到了这种情况。然后我们安装了下一个更新并重新启动了机器。这次范围发生了变化,我们的端口可用。
  • 有时是启用的 Hyper-V 功能(我们为 docker-for-windows 安装启用它)执行此操作。

  • 也可能有其他原因。
    但是如果我们尝试使用以下命令(即使以管理员身份)删除端口范围排除,它会返回一个错误,说它没有权限。
    netsh int ipv4 delete excludedportrange protocol=tcp startport=55500 numberofports=100
    如果端口排除是Hyper-V引入的,我们最终有两种可能的解决方案(可能还有其他的):
  • 更改我们尝试使用的端口。新端口应该是不属于排除范围的东西。
  • 禁用 Hyper-V,保留一个端口范围供我们使用,然后再次启用 Hyper-V。

  • 1. 禁用 Hyper-V
    方法 1 - Windows 功能工具:
    在控制面板 -> 选择程序和功能 -> 选择“打开或关闭 Windows 功能” -> 取消选中 Hyper-V 选项 -> 应用
    方法 2 - 通过 Powershell:
    打开 Powershell(以管理员身份)并运行以下命令:
    Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
    方法 3 - 通过命令提示符:
    打开命令提示符(以管理员身份)并运行命令:
    dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
    此后将需要重新启动系统。
    2. 保留您想要的端口(范围),这样 hyper-v 就不会保留它。
    重启后,如果我们尝试列出端口排除项,我们可以看到某些范围现在不存在(尤其是我们想要的范围)。现在保留我们需要的端口范围:
    netsh int ipv4 add excludedportrange protocol=tcp startport=55500 numberofports=100
    3. 重新启用 Hyper-V
    您也可以使用上述所有三种方法来启用该功能。
    例如,用 dism 显示一个:
    dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
    这还需要重新启动系统。
    当您的系统恢复后,再次尝试列出端口排除项。
    这里发生的事情是指定的端口范围被添加到 管理端口排除 .这意味着我们为我们的目的保留了它。
    这样做之后,Hyper-V 足够聪明,可以在我们预先保留的范围周围启动它自己的保留范围(注意,低于 55500-55599 范围的结果是 protected ):
    C:\Users\Xyz> netsh interface ipv4 show excludedportrange protocol=tcp

    Protocol tcp Port Exclusion Ranges

    Start Port End Port
    ---------- --------
    1031 1130
    1131 1230
    1231 1330
    1331 1430
    1431 1530
    1561 1660
    2363 2462
    2463 2562
    2563 2662
    2663 2762
    2763 2862
    2863 2962
    5357 5357
    50000 50099 *
    55500 55599 *

    * - Administered port exclusions.
    现在您将能够成功绑定(bind)到该范围内的端口。
    所以基本上,受管端口排除是我们可以添加的那些排除,以保留一些端口供我们使用。

    关于windows-10 - 什么是 Windows 10 中的受管端口排除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58216537/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com