Skip to content

解决 Windows 10 端口被 Hyper-V 随机保留(占用)的问题

TIP

执行以下命令可能需要管理员权限

1. 问题背景

  1. Windows 中有一个「TCP 动态端口范围」,处在这个范围内的端口,有时候会被一些服务占用。在 Windows Vista(或 Windows Server 2008)之前,动态端口范围是 10255000;在 Windows Vista(或 Windows Server 2008)之后,新的默认起始端口为 49152,新的默认结束端口为 65535
  2. 如果安装了 Hyper-V,那么 Hyper-V 会为容器宿主网络服务(Windows Container Host Networking Service)随机保留一些端口号使用。

使用以下命令可以查看目前「TCP 动态端口」的范围

sh
netsh int ipv4 show dynamicport tcp

image.png 使用以下命令可以查看当前所有已经被征用了的端口

sh
netsh int ipv4 show excludedportrange protocol=tcp

image.png

如果这些被征用的端口范围随机挑选到8088、8000、3000等 Web 开发常用端口,那开发就会受到影响;如果挑选到其他应用软件要调用的端口,那这些应用软件就会受到影响,可以说非常坑爹了……

2. 解决方法

解决方法很简单,就是重新设置一下「TCP 动态端口范围」,让Hyper-V只在我们设定的范围内保留端口即可。可以以管理员权限运行下面的命令,将「TCP 动态端口范围」重新设定为49152-65535。如果你觉得这个范围太大,还可以改小一点。

ipv4

sh
netsh int ipv4 set dynamic tcp start=49152 num=16384

ipv6

sh
netsh int ipv6 set dynamic tcp start=49152 num=16384

3. 附:移除win10协议 tcp 端口排除范围

要使用命令行移除Windows 10中的TCP端口排除范围,您可以按照以下步骤进行操作:

  1. 打开命令提示符。您可以按下Win + R键,在运行框中输入"cmd",然后按下Enter键来打开命令提示符。

  2. 在命令提示符中,输入以下命令以查看当前的TCP端口排除范围:

    netsh int ipv4 show excludedportrange protocol=tcp

    或者,如果您使用的是IPv6协议,可以使用以下命令:

    netsh int ipv6 show excludedportrange protocol=tcp
  3. 根据显示的结果,找到要移除的TCP端口排除范围的起始端口和结束端口。

  4. 使用以下命令移除TCP端口排除范围,将start_portend_port替换为实际的起始端口和结束端口:

    netsh int ipv4 delete excludedportrange protocol=tcp startport=start_port numberofports=(end_port - start_port + 1)

    或者,如果您使用的是IPv6协议,可以使用以下命令:

    netsh int ipv6 delete excludedportrange protocol=tcp startport=start_port numberofports=(end_port - start_port + 1)

    请确保将start_portend_port替换为实际的起始端口和结束端口值,并确保括号中的表达式计算出要删除的端口数量。

  5. 执行命令后,命令提示符将显示成功删除TCP端口排除范围的消息。

请注意,执行这些命令可能需要管理员权限。确保以管理员身份运行命令提示符。

最近更新:1/28/2024, 1:38:42 AM

原文链接:解决 Windows 10 端口被 Hyper-V 随机保留(占用)的问题

|下一篇:由于无法应用有效的许可证或旁加载策略,部晋程序包来源为Unsigned的程序包失败,可能需要开发者许可证或企业旁加载配置