linux命令之tcpdump

网络抓包,我们肯定不会陌生。

常见的(我用过的)抓包工具有:
Chrome控制台Network面板, Fiddler, Wireshark.
然而都是windows下的工具, 在服务器上工作, 我们还需要一些命令行的抓包工具, 比如tcpdump.

tcpdump简单来说就是一个命令行抓包工具, 可以指定网卡, 端口, IP等, 功能非常强大.
如果没有安装,可以通过yum install -y tcpdump执行安装(Redhat系列)

实验环境:

  • Linux: CentOS release 6.10 (Final)
    IP: 192.168.31.42

  • Windows:
    IP: 192.168.31.106

在 Linux上的8080端口开了一个http服务,Windows中发起请求

下面是一些常用选项及使用截图.

  • -D 列出哪些网卡可以抓包

    [root@gerrylon dev-scripts]# tcpdump -D
    1.eth0
    2.docker0
    3.nflog (Linux netfilter log (NFLOG) interface)
    4.nfqueue (Linux netfilter queue (NFQUEUE) interface)
    5.usbmon1 (USB bus number 1)
    6.any (Pseudo-device that captures on all interfaces)
    7.lo
    
  • -i xx 抓取经过网卡xx的数据包
    如 抓取经过eth0的数据包:
    tcpdump -i eth0

  • -c num 最多抓取几个包就停止
    上面的tcpdump -i eth0包实在太多了,已经“刷屏”了,加上-c 5指定最多抓取5个包就停止
    tcpdump -i eth0 -c 5

  • -n Don’t convert host addresses to names. This can be used to avoid DNS lookups.
    不把主机地址转换成名字. 就是可以避免DNS查询。

  • -nn Don’t convert protocol and port numbers etc. to names either
    不会将协议和端口号转换为名字
    比如上面有个tcpdump -i eth0 -c 5, ssh连接端口显示的是ssh, 加上-nn就会显示成22.
    如下图(注意标红位置):
    tcpdump -i eth0 -c 5 -nn

  • 只抓取指定协议的数据包, 如tcpdump -i eth0 icmp 只抓取icmp的数据包
    icmp最著名的两个应用pingtraceroute
    以traceroute为例子看看:
    tcpdump -i eth0 icmp
    tcpdump -i eth0 icmp

    traceroute www.yandex.ru
    traceroute www.yandex.ru

  • port 8080 指定端口

  • host 192.168.31.42 指定IP(只抓取和显示与192.168.31.42有关的包)

  • port 8080 and host 192.168.31.42 同时指定端口和IP

  • src 192.168.31.42 只抓取源IP为192.168.31.42的包

  • dst 192.168.31.42 只抓取目标IP为192.168.31.42的包

  • 多条件 tcpdump -i eth0 'port 8080 and (src 192.168.31.106 or src 192.168.31.42)' (注意要加单引号,否则语法有错)

  • -A Print each packet (minus its link level header) in ASCII. Handy for capturing web pages.
    以ACSII形式打印出每一个包,对抓web页面非常方便

  • -X 以十六进制打印出包内容

  • -t 不要打印时间戳

  • -w test.pcap 保存成文件

  • tcpdump -nn -r test.pcap (从文件读取, src等过滤规则同样适用)
    tcpdump -nn -c 5 -r test.pcap port 8080 (port 8080这种表达式要写在后面,写在-r前面会报错)

保存下来的 test.pcap 文件用wiresharek也可以打开观察.
如:

# 抓包将信息存储到test.cap
tcpdump -i eth0 -nn 'port 8080' -w test.cap

在windows请求"http://192.168.31.42:8080/", 也就是linux上的8080端口http服务
Ctrl+C停止tcpdump抓包

用Wireshark打开test.cap:
用Wireshark打开test.cap

这样观看是不是感觉特别直观呢?

总结:
命令选项非常多,但是掌握常用的就可以胜任大部分工作了,不要看见一大堆选项就不想学了。

欢迎补充指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值