抓包一看究竟 - tcpdump
.. _linux_tcpdump_beginner:
.. note::
知人者智,自知者明。
《老子》
网络诡异时,光 ping/netstat 不够,往往要低头看报文。tcpdump 是命令行抓包老工具:指定网卡、过滤表达式,把路过的包打印出来或落盘成文件,再用 Wireshark 细看也行。
(此文件曾误贴成 touch 内容,现已按命令名纠正。)
官方定义为:
tcpdump - dump traffic on a network
命令格式
1 | $ tcpdump [选项] [表达式] |
常用选项:
-i eth0:指定网卡(也可用any)-n:不反查主机名,输出更快更干净-c 数字:抓满若干包就停-w 文件.pcap:写入文件-r 文件.pcap:回放已抓文件-v/-vv:更啰嗦的解码
多数发行版抓非本机相关流量需要 root:
1 | $ sudo tcpdump ... |
看某块网卡上的包
1 | $ sudo tcpdump -i eth0 -n -c 20 |
-c 20 抓二十个就停,避免刷屏停不下来。
按主机或端口过滤
1 | $ sudo tcpdump -i eth0 -n host 192.168.1.10 |
表达式语法接近 BPF;引号包住复杂条件,免得被 shell 拆碎。
落盘再分析
1 | $ sudo tcpdump -i eth0 -n -w /tmp/ssh.pcap port 22 |
机房排障时先 -w 抓一段,再拿回笔记本慢慢看,比盯着终端滚日志省心。