Tcp
是否可以從 linux 的命令行中查看連接呼叫中的 tcp 連接數據包?
基本上我想做類似 strace ssh user@host 之類的事情,而不是看到系統呼叫,我想在建立連接時觀察 tcp 連接數據包。
我在兩台特定機器之間遇到了這個奇怪的問題,其中 b 可以連接到 a 但 a 無法連接到 b 大部分時間,當它能夠連接時,連接速度非常慢,只需一分鐘即可獲取 ssh 問候語。
聽起來數據包被丟棄了,所以我正在尋找一種診斷方法。我知道我可以啟動wireshark或其他東西(歡迎提出建議),但我想如果有一些簡單且特定於過程的東西會很方便。
您可以完美地使用 tcpdump 進行嗅探
安裝 tcpdump
在 Debian、Ubuntu 上
apt install tcpdump
在centOS上
yum install tcpdump
監聽 tcp 數據包
首先列出你的介面
tcpdump -D
列出/擷取介面 eth0 上的數據包
tcpdump -n -i eth0
僅列出/擷取介面 eth0 上的 TCP 數據包
tcpdump -i eth0 tcp
截圖
所以我發現了我的問題,原來是一個腳本生成了很多 iptables 丟棄規則。我猜它被阻止的其中一個ip位於兩台機器之間的一條路由上,所以它是間歇性的。刪除 iptables 規則使問題消失。