Linux tcpdump命令

Linux tcpdump命令用于截获网络传输数据。

执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员。

语法

tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

参数说明

  • -a 尝试将网络和广播地址转换成名称。
  • -c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
  • -d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
  • -dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
  • -ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
  • -e 在每列倾倒资料上显示连接层级的文件头。
  • -f 用数字显示网际网络地址。
  • -F<表达文件> 指定内含表达方式的文件。
  • -i<网络界面> 使用指定的网络截面送出数据包。
  • -l 使用标准输出列的缓冲区。
  • -n 不把主机的网络地址转换成名字。
  • -N 不列出域名。
  • -O 不将数据包编码最佳化。
  • -p 不让网络界面进入混杂模式。
  • -q 快速输出,仅列出少数的传输协议信息。
  • -r<数据包文件> 从指定的文件读取数据包数据。
  • -s<数据包大小> 设置每个数据包的大小。
  • -S 用绝对而非相对数值列出TCP关联数。
  • -t 在每列倾倒资料上不显示时间戳记。
  • -tt 在每列倾倒资料上显示未经格式化的时间戳记。
  • -T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
  • -v 详细显示指令执行过程。
  • -vv 更详细显示指令执行过程。
  • -x 用十六进制字码列出数据包资料。
  • -w<数据包文件> 把数据包数据写入指定的文件。

实例

显示TCP包信息

# tcpdump -c 10  //显示指定数量包
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
17:05:25.041168 IP VM_0_15_centos.ssh > 60.12.14.214.60153: Flags [P.], seq 19152581:19152769, ack 2307723498, win 379, options [nop,nop,TS val 1362489735 ecr 1333317406], length 188
17:05:25.041801 IP VM_0_15_centos.56968 > 183.60.83.19.domain: 46258+ PTR? 214.14.12.60.in-addr.arpa. (43)
17:05:25.075840 IP 60.12.14.214.60153 > VM_0_15_centos.ssh: Flags [.], ack 0, win 2047, options [nop,nop,TS val 1333317531 ecr 1362489705], length 0
17:05:25.136716 IP 60.12.14.214.60153 > VM_0_15_centos.ssh: Flags [.], ack 188, win 2045, options [nop,nop,TS val 1333317593 ecr 1362489735], length 0
17:05:25.141198 IP 169.254.128.13 > VM_0_15_centos: ICMP echo request, id 42689, seq 19695, length 8
17:05:25.141255 IP VM_0_15_centos > 169.254.128.13: ICMP echo reply, id 42689, seq 19695, length 8
17:05:25.192565 IP VM_0_15_centos.42804 > 169.254.0.4.http: Flags [S], seq 1694524156, win 29200, options [mss 1460,sackOK,TS val 1362489886 ecr 0,nop,wscale 7], length 0
17:05:25.193156 IP 169.254.0.4.http > VM_0_15_centos.42804: Flags [S.], seq 2359713083, ack 1694524157, win 14600, options [mss 1424,nop,nop,sackOK,nop,wscale 1], length 0
17:05:25.193181 IP VM_0_15_centos.42804 > 169.254.0.4.http: Flags [.], ack 1, win 229, length 0
17:05:25.193212 IP VM_0_15_centos.42804 > 169.254.0.4.http: Flags [P.], seq 1:182, ack 1, win 229, length 181: HTTP: POST /ca_report.cgi HTTP/1.1
10 packets captured
161 packets received by filter
92 packets dropped by kernel

精简显示

# tcpdump -c 10 -q //精简模式显示 10个包
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
17:06:46.369096 IP VM_0_15_centos.ssh > 60.12.14.214.60153: tcp 188
17:06:46.369654 IP VM_0_15_centos.41202 > 183.60.83.19.domain: UDP, length 43
17:06:46.371176 IP 183.60.83.19.domain > VM_0_15_centos.41202: UDP, length 92
17:06:46.372105 IP VM_0_15_centos.49388 > 183.60.83.19.domain: UDP, length 42
17:06:46.373207 IP 183.60.83.19.domain > VM_0_15_centos.49388: UDP, length 101
17:06:46.373576 IP VM_0_15_centos.57579 > 183.60.83.19.domain: UDP, length 43
17:06:46.373699 IP VM_0_15_centos.ssh > 60.12.14.214.60153: tcp 108
17:06:46.490955 IP 60.12.14.214.60153 > VM_0_15_centos.ssh: tcp 0
17:06:46.491314 IP 60.12.14.214.60153 > VM_0_15_centos.ssh: tcp 0
17:06:46.491937 IP 60.12.14.214.60153 > VM_0_15_centos.ssh: tcp 0
10 packets captured
19 packets received by filter

转换成阅读格式

# tcpdump -d    
(000) ret   #96

转换成十进制格式

# tcpdump -ddd
1
6 0 0 96