Tcp

是否可以從 linux 的命令行中查看連接呼叫中的 tcp 連接數據包?

  • December 23, 2018

基本上我想做類似 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

截圖

tcpdump 顯示可用介面

tcpdump 擷取顯示數據包

所以我發現了我的問題,原來是一個腳本生成了很多 iptables 丟棄規則。我猜它被阻止的其中一個ip位於兩台機器之間的一條路由上,所以它是間歇性的。刪除 iptables 規則使問題消失。

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