我正在寻找一个命令行 TCP 服务器(最好是单行),它将侦听指定端口,当收到 SYN 时,它将不是像平常的 TCP 服务器一样用 SYN-ACK 进行响应。
目的是测试客户端在重负载下尝试连接到服务器以正确处理这种情况。
答案1
据我所知,这是完全可能的。您需要绑定到原始IP套接字,这需要uid= 0(但可能定义了一种功能来避免这种情况,我不知道)。其实就是这样波特森特里工作在它的隐形模式。
答案2
我没有找到您所描述的任何命令行工具,但是,有一个解决方法,iptables:
sudo iptables -A INPUT -p tcp --destination-port 52379 -j DROP
答案3
您可以尝试使用带有 -l 选项的 nc (netcat)
-l Used to specify that nc should listen for an incoming connection rather than initiate a connection to a remote host. It is an error to use this option in conjunction with the -p, -s, or -z options. Additionally, any timeouts specified with the -w option are ignored.
如在
nc -l yourport
答案4
当你不回复syn-ack时,对方可能会继续发送syn。您可以通过执行端口 9 所做的操作来捕获此问题:接受(即发送 syn-ack),然后丢弃所有其他数据包。看/etc/services
。它消耗了一个套接字。
另一种选择可能是在防火墙中阻止该 ip+端口,并在 60 分钟后删除该规则。