解决 Windows 10 端口被 Hyper-V 随机保留(占用)的问题
TIP
执行以下命令可能需要管理员权限
1. 问题背景
- Windows 中有一个「TCP 动态端口范围」,处在这个范围内的端口,有时候会被一些服务占用。在 Windows Vista(或 Windows Server 2008)之前,动态端口范围是
1025
到5000
;在 Windows Vista(或 Windows Server 2008)之后,新的默认起始端口为49152
,新的默认结束端口为65535
。 - 如果安装了
Hyper-V
,那么Hyper-V
会为容器宿主网络服务(Windows Container Host Networking Service)随机保留一些端口号使用。
使用以下命令可以查看目前「TCP 动态端口」的范围
netsh int ipv4 show dynamicport tcp
使用以下命令可以查看当前所有已经被征用了的端口
netsh int ipv4 show excludedportrange protocol=tcp
如果这些被征用的端口范围随机挑选到8088、8000、3000等 Web 开发常用端口,那开发就会受到影响;如果挑选到其他应用软件要调用的端口,那这些应用软件就会受到影响,可以说非常坑爹了……
2. 解决方法
解决方法很简单,就是重新设置一下「TCP 动态端口范围」,让Hyper-V只在我们设定的范围内保留端口即可。可以以管理员权限运行下面的命令,将「TCP 动态端口范围」重新设定为49152-65535
。如果你觉得这个范围太大,还可以改小一点。
ipv4
netsh int ipv4 set dynamic tcp start=49152 num=16384
ipv6
netsh int ipv6 set dynamic tcp start=49152 num=16384
3. 附:移除win10协议 tcp 端口排除范围
要使用命令行移除Windows 10中的TCP端口排除范围,您可以按照以下步骤进行操作:
打开命令提示符。您可以按下Win + R键,在运行框中输入"cmd",然后按下Enter键来打开命令提示符。
在命令提示符中,输入以下命令以查看当前的TCP端口排除范围:
netsh int ipv4 show excludedportrange protocol=tcp
或者,如果您使用的是IPv6协议,可以使用以下命令:
netsh int ipv6 show excludedportrange protocol=tcp
根据显示的结果,找到要移除的TCP端口排除范围的起始端口和结束端口。
使用以下命令移除TCP端口排除范围,将
start_port
和end_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_port
和end_port
替换为实际的起始端口和结束端口值,并确保括号中的表达式计算出要删除的端口数量。执行命令后,命令提示符将显示成功删除TCP端口排除范围的消息。
请注意,执行这些命令可能需要管理员权限。确保以管理员身份运行命令提示符。
最近更新:1/28/2024, 1:38:42 AM
原文链接:解决 Windows 10 端口被 Hyper-V 随机保留(占用)的问题
上一篇:vite/vue Top-level await|下一篇:由于无法应用有效的许可证或旁加载策略,部晋程序包来源为Unsigned的程序包失败,可能需要开发者许可证或企业旁加载配置