Ubuntu

還有什麼可以丟棄/延遲連接,但 iptables

  • July 17, 2017

在辦公室中,我們遇到了一個有趣的情況:在任何電腦與我們的測試伺服器(託管在 AWS 上)建立連接(即使只是網頁刷新)之後,另一台電腦將在一段時間內無法再連接(約 30 秒)。

第一台電腦仍然能夠連接,並且來自第二台電腦的所有已經打開的連接仍然可以工作(如 SSH)。

僅當兩台電腦位於同一網路/外部 IP 地址時才會發生這種情況。例如,如果第二台電腦使用 VPN - 它就可以連接。

顯然,這遠非最佳。

我試圖找出問題所在。iptables 規則表是完全空的,除了一條規則,我添加了一條規則來記錄到 SSH 的傳入連接(用於調試目的):

iptables -I INPUT -p tcp --dport 22 --syn -j LOG --log-prefix "22 SSH: "

這表明,雖然第二台電腦無法連接到 SSH,但數據包仍在到達伺服器(並由 iptables 記錄,其數據如下:“LEN=48 TOS=0x00 PREC=0x00 TTL=49 ID=18889 DF PROTO =TCP SPT=54750 DPT=22 視窗=65535 RES=0x00 SYN URGP=0")。

我還能檢查什麼來嘗試找出這種奇怪行為的原因?

找到了。sysctl tcp_tw_recycle 設置為 1。顯然,這會導致 NAT 後面的客戶端出現問題(參考:https ://stackoverflow.com/questions/8893888/dropping-of-connections-with-tcp-tw-recycle )

引用自:https://serverfault.com/questions/862599