tcp_tw_recycle和tcp_timestamps導(dǎo)致connect失敗問題

問題現(xiàn)象

一個搭建好的幾臺云服務(wù)器上面配置好了SNAT,其中某些通過公網(wǎng)訪問A服務(wù)器通,而同樣網(wǎng)絡(luò)環(huán)境下的服務(wù)器訪問訪問A服務(wù)器就不通。
服務(wù)器A測:tcp_tw_recycle與tcp_timestamps均是開啟的。
通過wireshark抓包可以看到:異常的云服務(wù)器,一直在重傳syn,而對端收到了syn,卻不響應(yīng)ack,syn。
對比正常的報文與異常的報文,發(fā)現(xiàn)異常的報文timestamp值非常小,而正常的值大很多。
異常的服務(wù)器上:

[root@iZm5e936hzsu4ygadc0vw1Z ~]# sysctl -a | grep times
kernel.sched_rr_timeslice_ms = 100
net.ipv4.tcp_timestamps = 1

參數(shù):/proc/sys/net/ipv4/tcp_timestamps - 控制timestamp選項開啟/關(guān)閉
/proc/sys/net/ipv4/tcp_tw_recycle - 減少timewait socket釋放的超時時間

根據(jù)tcp_timestamps選項的特性,

server端當(dāng)tcp_tw_recycle和tcp_timestamps都是1的時候,會檢查收到數(shù)據(jù)包TCP選項字段中的的timestamp(TS Value),當(dāng)來自同一個IP地址(任意源端口號)后來的數(shù)據(jù)包中TCP選項字段如果有timestamp且比前面的數(shù)據(jù)包中的timestamp小,
則server不做ACK響應(yīng)。

可行的處理方法如下:

1.服務(wù)器端不要將tcp_tw_recycle字段和tcp_timestamps字段同時設(shè)為1
2.客戶端把tcp_timestamps字段設(shè)0,這樣不會發(fā)送TCP選項字段中的timestamps選項

net.ipv4.tcp_timestamps = 0后能夠正常訪問。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 你所不知道的TIME_WAIT和CLOSE_WAIT 你遇到過TIME_WAIT的問題嗎? 我相信很多都遇到過這個...
    meng_philip123閱讀 2,648評論 0 14
  • Linux(centos 7)文件數(shù)限制 內(nèi)核參數(shù)fs.file-max /proc/sys/fs/file-ma...
    散裝咖啡閱讀 1,718評論 0 1
  • Transmission Control Protocol,傳輸控制協(xié)議,是一種面向連接的、可靠的、基于字節(jié)流的傳...
    PennyWong閱讀 3,312評論 1 15
  • 個人認為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,192評論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,358評論 6 174

友情鏈接更多精彩內(nèi)容