問題:我想要監控TCP連接活動(如,建立連接的三次握手,以及斷開連接的四次握手)。要完成此事,我只需要捕獲TCP控制包,如SYN,ACK或FIN標記相關的包。我怎樣使用tcpdump來僅僅捕獲TCP SYN,ACK和/或FYN包?
作為業界標准的捕獲工具,tcpdump提供了強大而又靈活的包過濾功能。作為tcpdump基礎的libpcap包捕獲引擎支持標准的包過濾規則,如基於5重包頭的過濾(如基於源/目的IP地址/端口和IP協議類型)。
Linux網絡十分有用的兩個命令ip和TcpDump http://www.linuxidc.com/Linux/2012-11/74823.htm
Linux下抓包工具TcpDump使用 http://www.linuxidc.com/Linux/2012-11/75080.htm
Linux TcpDump命令詳解 http://www.linuxidc.com/Linux/2012-12/75666.htm
Linux操作系統TcpDump抓包分析詳解 http://www.linuxidc.com/Linux/2013-07/87309.htm
Tcpdump的用法及使用案例 http://www.linuxidc.com/Linux/2013-11/93200.htm
Linux運維工程師利器:Nmap和TCPdump http://www.linuxidc.com/Linux/2014-02/96993.htm
tcpdump/libpcap的包過濾規則也支持更多通用分組表達式,在這些表達式中,包中的任意字節范圍都可以使用關系或二進制操作符進行檢查。對於字節范圍表達,你可以使用以下格式:
“proto”可以是熟知的協議之一(如ip,arp,tcp,udp,icmp,ipv6),“expr”表示與指定的協議頭開頭相關的字節偏移量。有我們熟知的直接偏移量如tcpflags,也有取值常量如tcp-syn,tcp-ack或者tcp-fin。“size”是可選的,表示從字節偏移量開始檢查的字節數量。
使用這種格式,你可以像下面這樣過濾TCP SYN,ACK或FIN包。
只捕獲TCP SYN包:
只捕獲TCP ACK包:
只捕獲TCP FIN包:
之捕獲TCP SYN或ACK包: