NAT網絡環境下,部分客戶端無法連接Server的解決方法
客戶端通過NAT連接上網,有的客戶端可以訪問server端,有的不可以,通過訪問固定請求的URL抓包排查和解決問題。
1、http contains "/frontend" 過濾出來客戶端請求的這個URL。
2、跟蹤一下流(follow stream),看請求是否正常。
3、打開客戶端的包,發現請求失敗的是重傳包,過濾一下 tcp.analysis.retransmission
可以看到有四次請求重傳
思考:
A、不是雲盾攔截,因為雲盾攔截是基於ip的
B、檢查係統內沒有雲鎖之類的軟件,iptables也沒開
C、檢查係統參數 system –p (-a打印所有)看到有timestamp
成功的timestamp都很大,修改/etc/sysctl.conf文件裏麵得net.ipv4.tcp_timestamps=0即可
timestamp擴展:
同時開啟timestamp(時間戳)和tw_recycle(快速回收),會導致在一個MSL時間內隻響應timestamp遞增的請求,對於時間戳較小的請求都拋棄了。(不響應ack)
MSL擴展: RFC793中規定MSL為2分鍾,也就是說2分鍾內同一個ip的請求的時間戳要求遞增,不是遞增的話服務器不予響應
最後更新:2017-06-14 21:06:23