Linux:以TIME_WAIT状态强制关闭服务器上的套接字/端口

时间:2020-01-09 10:41:20  来源:igfitidea点击:

Linux中有许多旧的IP处于TIME_WAIT状态。

在Linux操作系统下,如何在TIME_WAIT状态下强制和关闭所有内容?

服务器或客户端程序上都可以存在TIME-WAIT状态。它表示等待足够的时间来确保远程TCP收到其连接终止请求的确认。 /proc/sys/net/ipv4/tcp_fin_timeout设置确定TCP/IP释放封闭的连接并重用其资源之前必须经过的时间。
这称为TIME_WAIT状态。

TIME_WAIT是TCP连接的正常部分。
但是,如果必须以TIME_WAIT状态关闭套接字,请尝试:

  • 重新启动网络服务
  • cutter命令

找出当前的TIME_WAIT设置

输入以下命令

$ cat /proc/sys/net/ipv4/tcp_fin_timeout

输出示例:

60

您可以通过以超级用户身份执行以下命令来降低此值:

# echo 20 > /proc/sys/net/ipv4/tcp_fin_timeout

要将/proc/sys/net/ipv4/tcp_fin_timeout永久设置为20,请编辑文件/etc/sysctl.conf并进行如下设置:

net.ipv4.tcp_fin_timeout=20

重启网络服务

要在基于RHEL/CentOS的系统下重新启动网络服务,请执行:

# service network restart

或者

# /etc/init.d/network restart

Ubuntu/Debian Linux,用户请尝试以下命令:

$ sudo service networking restart

或者

$ sudo /etc/init.d/networking restart

cutter命令

Cutter是一个开放源代码程序,它允许Linux防火墙管理员中止通过运行它的防火墙或路由器路由的TCP/IP连接。

例子

要切断从192.168.1.10到服务器的所有连接,请执行:

# cutter 192.168.1.10

要切断从192.168.1.1到服务器的所有ssh连接,请执行:

# cutter 192.168.1.1 22

要将所有http连接从192.168.1.5切断到ssh服务器192.54.1.20,请运行:

# cutter 192.54.1.20 192.168.1.5 80