現象就是在客戶端發出syn包的時候,服務器端對客戶端的syn包不做任何迴應。
在網上逛了逛,終於找到有人也發生了這樣的情況,發生的原因解釋如下:
當客戶端發出的syn包帶有時間戳的情況下,經過NAT轉換後,如果使用的端口被之前使用過,而且時間戳大於本次syn包中的時間戳。系統將會直接丟棄。造成本次鏈接無法正常完成TCP/IP的3次握手。【該功能和rfc1323有關,後面有鏈接】
解決的方法很簡單,分爲兩種:
在客戶端:關閉rfc1323
在服務端:設置sysctl.conf裏面tcp_timestamps=0也可以只用命令sysctl -w net.ipv4.tcp_timestamps=0
靠,我就差一點就定位到時間戳