使用 bash 命令创建 TCP 半开连接

使用 bash 命令创建 TCP 半开连接

有没有办法使用带有常见 Linux 工具的 bash 命令(轻松)创建 TCP 半开连接?

我想使用这种机制来监控远程服务器的可用性。我知道它也用于 TCP 负载平衡器中的此类监控。

我希望看到的 TCP 消息是SYN->SYN-ACK<-RST。FinalRST通过保持半开套接字处于活动状态来确保 TCP 套接字不会损害服务器。

答案1

nping中的工具nmap可用于此类用例。它发送 SYN,等待 SYN-ACK,然后发送 RST。它需要访问原始套接字,只有具备CAP_NET_RAW权限才能访问。通常只有 root 用户才具有此类权限。

$ sudo nping --tcp 1.1.1.1  -p 443 -c 1

TCP 转储验证仅存在 3 个 TCP 数据包。

$ sudo ngrep -eqxtd en0 '.' 'host 1.1.1.1'
interface: en0 (192.168.2.0/255.255.255.0)
filter: ( host 1.1.1.1 ) and ((ip || ip6) || (vlan && (ip || ip6)))
match: .

T 2020/10/02 10:27:06.261689 192.168.2.26:34769 -> 1.1.1.1:443 [S] #1

T 2020/10/02 10:27:06.269662 1.1.1.1:443 -> 192.168.2.26:34769 [AS] #2
  00 00                                                 ..              

T 2020/10/02 10:27:06.269739 192.168.2.26:34769 -> 1.1.1.1:443 [R] #3

相关内容