调大动态端口范围解决tcpip告警

2024-01-05 15:03:09 浏览数 (1)

机器内外网出不去,其他异常没发现,事件查看器发现有tcp/ip来源的日志若干条

调大动态端口范围解决tcpip告警

事件ID4227:EVENT_TCPIP_TCP_TIME_WAIT_COLLISION

Powershell过滤:

Get-EventLog -LogName System -Source Tcpip |Where-Object {$_.EventID -eq "4227" -or $_.EventID -eq "4231" -or $_.EventID -eq "4266"} |FT TimeGenerated,EventID,EntryType,Source,Message

TCP/IP 无法建立传出连接,因为选定的本地终结点最近用于连接到相同的远程终结点。 当以高速率打开和关闭传出连接时,会导致所有可用的本地端口被使用,并迫使 TCP/IP 重新使用本地端口进行传出连接,此时通常会产生这种错误。为了最大限度地降低数 据受到损坏的风险,在给定的本地终结点和给定的远程终结点之间的连续连接中, TCP/IP 标准需要等待一段最短的时间段。

解决方案:

netsh int ipv4 set dynamicport tcp start=5001 num=60535

reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters" /v "TcpTimedWaitDelay" /t REG_DWORD /d 30 /f

这2句调整的是下面2个注册表

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters

"MaxUserPort"=dword:0000f077

"TcpTimedWaitDelay"=dword:0000001e

不需要重启机器

注意:在新版win10、win11和≥server2019的系统里,当执行调整tcp动态端口范围的命令时,不会自动生成MaxUserPort,无需人为干预,操作系统已经隐藏MaxUserPort;在<win10和server2019的系统里,执行调整tcp动态端口范围的命令时,会自动生成MaxUserPort。

MaxUserPort并不是最大用户端口号,而是最大用户端口数,其算法是tcp动态端口范围包含的端口数 1024。

比如执行netsh int ipv4 set dynamicport tcp start=10000 num=55535 ,tcp动态端口范围是10000~65534,共55535个端口,MaxUserPort是55535 1024=56559

如果执行netsh int ipv4 set dynamicport tcp start=49152 num=16384复原最初的动态范围会自动生成MaxUserPort=17408,tcp动态端口范围是49152 ~65535,共16384个端口,MaxUserPort是16384 1024=17408

我一般采用dynamicport tcp 5001~65535,即执行netsh int ipv4 set dynamicport tcp start=5001 num=60535

外加

<2012R2和Win8.1的系统,执行:

reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters" /v "TcpTimedWaitDelay" /t REG_DWORD /d 30 /f

≥2012R2和Win8.1的系统,执行:

reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters" /v "TcpTimedWaitDelay" /t REG_DWORD /d 2 /f

Key:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters

Value:

TcpTimedWaitDelay

Data Type:

REG_DWORD

Range:

Windows Server 2012 and earlier: 30-300 (decimal)Windows 8 and earlier: 30-300 (decimal)Windows Server 2012 R2 and later: 2-300 (decimal)Windows 8.1 and later: 2-300 (decimal)

Default value:

0x78 (120 decimal)

Recommended value:

30

Value exists by default?

No, needs to be added.

0 人点赞