注:注册表修改需要对Windows操作系统有一定了解,为了避免注册表误操作带来的操作系统问题或者可能的数据丢失,请您采用如下方式操作注册表前,务必对系统盘和数据盘创建快照以避免可能的数据丢失。
问题现象
ECS Windows可以ping通外网,但是无法访问外部的网站或者应用。
问题原因
一般而言, 该问题原因是Windows动态端口耗尽。可以在CMD中输入如下命令简单测试:
Netstat -ano | findstr 445
该命令会显示445端口在监听在所有网卡上,
注:TCP 445端口是Windows文件共享服务使用端口,默认是监听状态
telnet 127.0.0.1 445
如果无法访问,说明动态端口耗尽。
此时,如果使用netstat -ano命令,可以发现大量连接处于TIME_WAIT状态。
解决方案
默认Windows 2008 以后,动态端口的数量为16384个 (从49152起始,到65536结束),如果服务器对外有大量连接,而根据TCP默认的Time Wait Delay时间为4分钟,这会导致大量连接在断开后处于Time Wait状态,无法快速释放给其它连接使用,这可能导致端口耗尽。
<1> 增大动态端口数量
请以管理员身份打开CMD,运行如下命令:
netsh int ipv4 set dynamicport tcp start=1025 num=60000
注:该步骤无需重启机器, 立即生效
修改后运行命令检查配置
netsh int ipv4 show dynamicport tcp
关于动态端口说明,可以参考微软KB:
The default dynamic port range for TCP/IP has changed in Windows Vista and in Windows Server 2008
https://support.microsoft.com/en-us/kb/929851
<2> 降低Time Wait时间,最低为30秒
打开注册表,定位到HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新增键值 TcpTimedWaitDelay,类型REG_DWORD , 设置为十进制30
参考资料:
https://technet.microsoft.com/en-us/library/cc938217.aspx
注:修改后重启生效
如果问题还未能解决,请联系
售后技术支持。