最后更新时间 2021-10-05.

Linux 的命令太多,tcpdump 是一个非常强大的抓包命令。

有时候想看线上发生的一些问题:

  • nginx 有没有客户端连接过来……
  • 客户端连接过来的时候 Post 上来的数据对不对……
  • 我的 Redis 实例到底是哪些业务在使用……

tcpdump 作为网络分析神器就派上用场了!

它本身的命令和参数有点多,我也简单记录下一些常用的操作。

网上的资料其实挺多(见文末),

但真的派上用场的,可能也就是我下面列出来的这几个 :)

抓取 eth0 网卡的 80 端口:

tcpdump -nnA 'port 80' -i eth0

-A:以ASCII格式打印出所有分组,并将链路层的头最小化
-nn:显示IP地址和端口号

抓取发往 10.48.31.56 的数据包:

tcpdump -i eth0 dst host 10.48.31.56

指定网络过滤:

tcpdump -i eth0 src net 10.48

指定协议过滤:

tcpdump -i eth0 tcp

表达式过滤:

tcpdump -i eth0 '((tcp) and (port 80) and ((dst host 10.48.31.56) or (dst host 10.48.31.58)))'

参考资料

  1. 《tcpdump使用技巧》
  2. 《肝了三天,万字长文教你玩转 tcpdump,从此抓包不用愁》
  3. 《tcpdump原理及常用命令》
  4. 《Linux系统 tcpdump 抓包命令使用教程》
  5. 《聊聊 tcpdump 与 Wireshark 抓包分析》
暂无评论