手动保留常用端口,解决 Windows 端口被 Hyper-V / WinNAT 占用的问题

手动保留常用端口,解决 Windows 端口被 Hyper-V / WinNAT 占用的问题

💡 原文中文,约1700字,阅读约需5分钟。
📝

内容提要

Windows 10和Windows 11具有Windows NAT服务,该服务会随机保留一些端口用于NAT服务,可能导致端口冲突和无法访问服务。一种解决方法是为用户模式程序保留端口,以防止内核驱动程序和服务使用。通过以管理员身份打开命令提示符并运行命令“netsh int ipv4 add excludedportrange protocol=tcp startport=1080 numberofports=10”来保留端口。重新启动WinNAT服务以应用更改。通常不需要保留UDP端口。

🎯

关键要点

  • Windows 10和Windows 11的NAT服务会随机保留端口,可能导致端口冲突。

  • 常见错误包括端口已被占用和访问权限问题。

  • 重新设置TCP动态端口范围的方法并不总是有效。

  • 用户可以自行保留端口供用户态程序使用,避免内核驱动程序和服务占用。

  • 操作步骤包括查看当前TCP动态端口范围、停止WinNAT服务、保留指定端口、重新启动WinNAT服务。

  • UDP端口通常不需要保留,因为WinNAT不会占用UDP端口。

  • IPv6端口保留一般不需要设置,因为Windows不支持IPv6 NAT。

延伸问答

Windows NAT服务会导致什么问题?

Windows NAT服务会随机保留一些端口,可能导致端口冲突和无法访问服务的问题。

如何手动保留端口以避免被WinNAT占用?

可以通过命令提示符运行命令:netsh int ipv4 add excludedportrange protocol=tcp startport=1080 numberofports=10来保留端口。

为什么重新设置TCP动态端口范围的方法不总是有效?

因为重新设置TCP动态端口范围无法预知未来可能使用的端口,可能导致可用端口不足的问题。

在Windows中,如何查看当前的TCP动态端口范围?

可以使用命令:netsh int ipv4 show dynamicport tcp来查看当前的TCP动态端口范围。

为什么UDP端口通常不需要保留?

因为WinNAT不会占用UDP端口,因此一般不需要为UDP端口进行保留。

如何停止WinNAT服务以释放端口?

可以通过命令:net stop winnat来停止WinNAT服务,从而释放被占用的端口。

🏷️

标签

➡️

继续阅读