文章目录
- 7. 选项 -r
- 8. 主机选项
- 9. 逻辑运算符
- 10. 关键字 net
- 11. 关键字 ether
- 12. 关键字 ip6
- 总结
本文主要介绍了如何使用tcpdump
来捕获和查看网络数据包。
7. 选项 -r
如果你已经走到了这一步并且写入了一个.pcap
文件,你知道你不能使用简单的文本编辑器来读取文件内容。因此,你应该使用-r file.pcap
选项。它读取现有的捕获文件并将其打印为输出。
# tcpdump -i any port 8080 -w 8080.pcap -v
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
^C14 packets captured
28 packets received by filter
0 packets dropped by kernel# tcpdump -r 8080.pcap
reading from file 8080.pcap, link-type LINUX_SLL (Linux cooked)
15:01:09.515750 IP 10.10.10.11.51710 > 10.10.10.11.webcache: Flags [S], seq 4077166376, win 65495, options [mss 65495,sackOK,TS val 1908517405 ecr 0,nop,wscale 7], length 0
15:01:09.515760 IP 10.10.10.11.webcache > 10.10.10.11.51710: Flags [S.], seq 2501983880, ack 4077166377, win 65483, options [mss 65495,sackOK,TS val 1908517405 ecr 1908517405,nop,wscale 7], length 0
15:01:09.515768 IP 10.10.10.11.51710 > 10.10.10.11.webcache: Flags [.], ack 1, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 0
15:01:09.515816 IP 10.10.10.11.51710 > 10.10.10.11.webcache: Flags [P.], seq 1:172, ack 1, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 171: HTTP: POST /hello HTTP/1.1
15:01:09.515819 IP 10.10.10.11.webcache > 10.10.10.11.51710: Flags [.], ack 172, win 511, options [nop,nop,TS val 1908517405 ecr 1908517405], length 0
15:01:09.516091 IP 10.10.10.11.webcache > 10.10.10.11.51710: Flags [P.], seq 1:18, ack 172, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 17: HTTP: HTTP/1.0 200 OK
15:01:09.516102 IP 10.10.10.11.51710 > 10.10.10.11.webcache: Flags [.], ack 18, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 0
15:01:09.516119 IP 10.10.10.11.webcache > 10.10.10.11.51710: Flags [P.], seq 18:53, ack 172, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 35: HTTP
15:01:09.516122 IP 10.10.10.11.51710 > 10.10.10.11.webcache: Flags [.], ack 53, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 0
15:01:09.516145 IP 10.10.10.11.webcache > 10.10.10.11.51710: Flags [P.], seq 53:90, ack 172, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 37: HTTP
15:01:09.516147 IP 10.10.10.11.51710 > 10.10.10.11.webcache: Flags [.], ack 90, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 0
15:01:09.516176 IP 10.10.10.11.webcache > 10.10.10.11.51710: Flags [F.], seq 90, ack 172, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 0
15:01:09.516196 IP 10.10.10.11.51710 > 10.10.10.11.webcache: Flags [F.], seq 172, ack 91, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 0
15:01:09.516199 IP 10.10.10.11.webcache > 10.10.10.11.51710: Flags [.], ack 173, win 512, options [nop,nop,TS val 1908517405 ecr 1908517405], length 0
8. 主机选项
如果你想过滤特定主机的流量,你可以使用host ip
或host name
来捕获特定主机的数据包。
# tcpdump host redhat.com -i any -c4
你可以使用src
或dst
关键字来告诉tcpdump
捕获的数据包应该包含源地址或目的地址中的主机,例如,你可以尝试运行tcpdump -i any src host localhost
或tcpdump -i any dst host redhat.com
。
9. 逻辑运算符
tcpdump
支持and
/or
/not
运算符作为关键字,例如:tcpdump -i eth0 "host redhat.com and (port 80 or port 443)"
。将复杂表达式用引号括起来是明智的,这样bash就不会尝试解释括号。
# tcpdump -i eth0 "host 10.10.10.11 and (port 22 or port 8080)"
10. 关键字 net
net
关键字可以用来通过CIDR表示法指定捕获哪个网络的流量。你可以使用src
和dst
网络CIDR
与逻辑运算符结合,更精确地过滤数据包。
# tcpdump -i any -n "src net 192.168.0.0/16 and not dst net 10.0.0.0/8" -c4
11. 关键字 ether
可以使用ether host
关键字应用过滤器,将流量捕获限制在MAC地址上。使用-e
选项在每个转储行上打印链路层头。这可以用于打印诸如以太网和IEEE 802.11
等协议的MAC
层地址。以下示例捕获了第2层广播流量:
# tcpdump ether host ff:ff:ff:ff:ff:ff -i eth0 -e -c4
12. 关键字 ip6
可以使用ip6
关键字捕获IPv6流量。以下是一个示例:
# tcpdump -i any ip6 host google.com -c4
总结
在第二部分中,你学习了六个新的选项,用于使用tcpdump
在网络上管理数据包捕获。这篇文章建立在第一部分所涵盖的信息之上。在最后一篇中,你将看到另外六个帮助过滤tcpdump
结果的标志。