tcpdump的使用
监控80端口的http 请求并显示详细信息
tcpdump -i eth0 -A -s 0 'port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
实战:基础用法
我们先通过几个简单的示例来介绍 tcpdump 基本用法。
1. 不加任何参数,默认情况下将抓取第一个非 lo 网卡上所有的数据包
$ tcpdump
2. 抓取 eth0 网卡上的所有数据包
$ tcpdump -i eth0
3. 抓包时指定 -n
选项,不解析主机和端口名。这个参数很关键,会影响抓包的性能,一般抓包时都需要指定该选项。
$ tcpdump -n -i eth0
4. 抓取指定主机 192.168.1.100
的所有数据包
$ tcpdump -ni eth0 host 192.168.1.100
5. 抓取指定主机 10.1.1.2
发送的数据包
$ tcpdump -ni eth0 src host 10.1.1.2
6. 抓取发送给 10.1.1.2
的所有数据包
$ tcpdump -ni eth0 dst host 10.1.1.2
7. 抓取 eth0 网卡上发往指定主机的数据包,抓到 10 个包就停止,这个参数也比较常用
$ tcpdump -ni eth0 -c 10 dst host 192.168.1.200
8. 抓取 eth0 网卡上所有 SSH 请求数据包,SSH 默认端口是 22
$ tcpdump -ni eth0 dst port 22
9. 抓取 eth0 网卡上 5 个 ping 数据包
$ tcpdump -ni eth0 -c 5 icmp
10. 抓取 eth0 网卡上所有的 arp 数据包
$ tcpdump -ni eth0 arp
11. 使用十六进制输出,当你想检查数据包内容是否有问题时,十六进制输出会很有帮助。
$ tcpdump -ni eth0 -c 1 arp -X
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
12:13:31.602995 ARP, Request who-has 172.17.92.133 tell 172.17.95.253, length 28
0x0000: 0001 0800 0604 0001 eeff ffff ffff ac11 ................
0x0010: 5ffd 0000 0000 0000 ac11 5c85 _..........
12. 只抓取 eth0 网卡上 IPv6 的流量
$ tcpdump -ni eth0 ip6
13. 抓取指定端口范围的流量
$ tcpdump -ni eth0 portrange 80-9000
14. 抓取指定网段的流量
$ tcpdump -ni eth0 net 192.168.1.0/24