tcpdump 命令格式
SYNOPSIS
tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]
[ -c count ] [ --count ] [ -C file_size ]
[ -E spi@ipaddr algo:secret,... ]
[ -F file ] [ -G rotate_seconds ] [ -i interface ]
[ --immediate-mode ] [ -j tstamp_type ] [ -m module ]
[ -M secret ] [ --number ] [ --print ] [ -Q in|out|inout ]
[ -r file ] [ -s snaplen ] [ -T type ] [ --version ]
[ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ]
[ -z postrotate-command ] [ -Z user ]
[ --time-stamp-precision=tstamp_precision ]
[ --micro ] [ --nano ]
[ expression ]
参数说明
-A ASCII方式打印每个包
-b Print the AS number in BGP packets in ASDOT notation rather thanASPLAIN notation.
-B buffer_size 设置捕获的buffer大小, 单位是KB
--buffer-size=buffer_size
-c count 在 count 个包之后退出
-D
--list-interfaces
列出系统中的网口, 以及哪些网口上可以用tcpdump进行捕获
-e 打印链路层的包头, 例如 MAC 地址,用于 Ethernet IEEE 802.11.
-i interface 指定网口
--interface=interface
-K 不校验checksums
--dont-verify-checksums
-l Make stdout line buffered. Useful if you want to see the data while capturing it. E.g.,
-n 不做地址到hostname的转换, 输出原始地址和端口
-Q direction 选择方向, `in', `out' 和 `inout'.
--direction=direction
-r file 读取用 -w 参数生成的文件
-S 打印tcp序号的绝对值而不是相对值
--absolute-tcp-sequence-numbers
-s snaplen 对每个包, 取指定大小的数据, 而不是默认的 262144 字节, 如果设为0, 就用默认的 262144 字节
--snapshot-length=snaplen
-w file 写入文件而不是显示到stdout
-x hex格式输出包头
-xx hex格式除了输出包头, 还输出数据
常用方法
# 从 sundown 这个主机来往的所有包
tcpdump host sundown
# 监听 wg0 网口上的icmp包
tcpdump -i wg0 icmp
# 监听 eth0 网口上, 走 3333 端口的 udp 包, 比 -v 更详细的信息
tcpdump -i eth0 udp port 3333 -vv
# 打印本机所有的包, 不解析hostname, 限制默认256K大小
sudo tcpdump -n -s0
# 打印本机所有的包, 限制默认256K大小, 打印 MAC 地址
sudo tcpdump -en -s0
# 打印本机所有的包, 限制默认256K大小, 打印 MAC 地址, 过滤 dd:cc:ff:ad:c6:bd 这个主机 来往的所有包
sudo tcpdump -en -s0 ether host not dd:cc:ff:ad:c6:bd
在OpenWrt上的安装
opkg update
opkg install tcpdump