最初更新工夫 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)))'
参考资料
- 《tcpdump 应用技巧》
- 《肝了三天,万字长文教你玩转 tcpdump,从此抓包不必愁》
- 《tcpdump 原理及常用命令》
- 《Linux 零碎 tcpdump 抓包命令应用教程》
- 《聊聊 tcpdump 与 Wireshark 抓包剖析》
文章来源于自己博客,公布于 2018-06-02,原文链接:https://imlht.com/archives/185/