问题描述
Windows服务器网络配置正常,外部可正常访问,但服务器内部无法上网或连接外部主机。Ping外部IP可达,但Telnet外部IP指定端口不通。防火墙和安全组均未限制相关通信,重启服务器后问题可缓解。
问题原因
说明
从Windows Vista开始,Windows不再限制TCP连接数。因此,当无法访问Windows时,无需考虑连接数的问题。
动态端口耗尽会导致服务器在访问外部主机时出现问题,但不会影响外部主机访问该服务器。例如,远程连接到Windows仍然正常,但Windows激活可能会受到影响(无法访问KMS)。这种情况通常会在Windows系统日志中出现与TCP/IP相关的记录。
排查步骤
Windows系统里查看事件查看器的系统日志,系统日志可以看到如下记录,是因为Windows系统本地端口耗尽,导致无法建立TCP连接,无法访问外部网络。

为了遵守Internet 分配的号码授权机构 (IANA)建议, Microsoft 增加了传出连接的动态客户端端口范围。 新的默认起始端口为49152, 新的默认结束端口为65535。 这是从使用默认端口范围1025到5000的较早版本的Windows的配置的更改。
可以使用以下netsh命令查看计算机上的动态端口范围:
netsh int ipv4 show dynamicport tcp netsh int ipv4 show dynamicport udp netsh int ipv6 show dynamicport tcp netsh int ipv6 show dynamicport udp
可以通过
netstat -q命令查看系统连接情况。
解决方案
CMD命令窗口中,使用下面命令设置 TCP 的动态端口范围。 可以设置的最小端口范围为255。 可以设置的最小起始端口为1025。 最大结束端口(基于配置的范围)不能超过65535。
netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range示例命令将动态端口范围设置为从端口10000开始,到端口10999(1000 端口)结束。
netsh int ipv4 set dynamicport tcp start=10000 num=1000
netsh int ipv4 set dynamicport udp start=10000 num=1000
netsh int ipv6 set dynamicport tcp start=10000 num=1000
netsh int ipv6 set dynamicport udp start=10000 num=1000更多信息
该文章对您有帮助吗?