4

我正在尝试为简单的端口敲击设置编写 linux 客户端脚本。我的服务器将 iptables 配置为需要特定端口的 TCP SYN 序列才能打开访问权限。我能够使用 telnet 或手动调用 netcat(在运行命令后立即按 Ctrl-C)成功敲门,但无法构建自动敲门脚本。

我对自动端口敲门脚本的尝试仅包含“nc -w 1 xxxx 1234”命令,这些命令连接到 xxxx 端口 1234 并在一秒钟后超时。然而,问题似乎是内核(?)进行自动 SYN 重试。大多数情况下,在 nc 尝试连​​接的 1 秒内发送了多个 SYN。我已经用 tcpdump 进行了检查。

那么,有谁知道如何防止 SYN 重试并使 netcat 每次连接/敲门尝试只发送一个 SYN?也欢迎其他可以完成这项工作的解决方案。

4

4 回答 4

2

是的,我检查过你也可以使用 nc!:

$ nc -z example.net 1000 2000 3000; ssh example.net

魔法来自(-z:零I/O模式)......

于 2015-10-19T18:29:02.750 回答
1

您可以使用 nmap 进行端口敲击 (SYN)。只需执行:

for p in 1000 2000 3000; do 
  nmap -Pn --max-retries 0 -p $p example.net;     
done
于 2015-10-19T18:18:46.307 回答
0

您无法阻止 TCP/IP 堆栈执行其明确设计的任务。

于 2012-07-18T22:22:35.597 回答
0

试试这个(作为根):

echo 1 >  /proc/sys/net/ipv4/tcp_syn_retries

或这个:

int sc = 1;
setsockopt(sock, IPPROTO_TCP, TCP_SYNCNT, &sc, sizeof(sc));
于 2013-10-10T13:55:06.983 回答