2012-07-16 30 views
3

我正在嘗試爲簡單的端口敲入設置編寫linux客戶端腳本。我的服務器配置了iptables,需要一定的TCP SYN序列到特定的端口才能開放訪問。我能夠使用telnet或手動調用netcat(在運行該命令後立即運行Ctrl-C)成功敲除,但無法構建自動化的腳本。防止netcat中的TCP SYN重試(針對端口敲打)

我對自動化端口敲入腳本的嘗試僅由「nc -w 1 x.x.x.x 1234」命令組成,它們連接到x.x.x.x端口1234並在一秒鐘後超時。但是,問題似乎是內核(?)在執行自動SYN重試。大多數情況下,在1秒內nc嘗試連接時會發送多個SYN。我用tcpdump檢查過了。

那麼,有沒有人知道如何防止SYN重試,並使netcat只發送每個連接/敲門嘗試一個SYN?其他解決方案也是受歡迎的。

回答

1

是啊,我查你可以使用nc的太!:

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

的魔力來自(-z:零I/O模式)...

0

您無法阻止TCP/IP堆棧執行明確設計的任務。

0

試試這個(根):

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

或本:

int sc = 1; 
setsockopt(sock, IPPROTO_TCP, TCP_SYNCNT, &sc, sizeof(sc)); 
0

您可以使用端口nmap的敲門(SYN)。只是高管:

for p in 1000 2000 3000; do 
    nmap -Pn --max-retries 0 -p $p example.net;  
done