简介

tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具
tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。
tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上。
不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包。
tcpdump - dump traffic on a network

例子
不指定任何参数

监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。

tcpdump

监听特定网卡

tcpdump -i en0

监听特定主机

例子:监听本机跟主机182.254.38.55之间往来的通信包。

备注:出、入的包都会被监听。

tcpdump host 182.254.38.55

特定来源、目标地址的通信

特定来源

tcpdump src host hostname

特定目标地址

tcpdump dst host hostname

如果不指定src跟dst,那么来源 或者目标 是hostname的通信都会被监听

tcpdump host hostname

特定端口

tcpdump port 3000

监听TCP/UDP

服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包

tcpdump tcp

来源主机+端口+TCP

监听来自主机123.207.116.169在端口22上的TCP数据包

tcpdump tcp port 22 and src host 123.207.116.169

监听特定主机之间的通信

tcpdump ip host 210.27.48.1 and 210.27.48.2

210.27.48.1除了和210.27.48.2之外的主机之间的通信

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

稍微详细点的例子

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

抓http包

TODO

限制抓包的数量

如下,抓到1000个包后,自动退出

tcpdump -c 1000

保存到本地

备注:tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,才会将输出写到本地磁盘

tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap

也可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)

tcpdump常用命令示例

注:tcpdump只能抓取流经本机的数据包

1. 默认启动,不加任何参数

tcpdump

默认情况下,直接启动tcpdump将监视第一个网络接口(非lo口)上所有流通的数据包。这样抓取的结果会非常多,滚动非常快。ctrl +c 退出

2、监视指定网络接口的数据包

tcpdump -i ens33

3、监视指定主机的数据包,例如所有进入或离开node1的数据包(可以写主机名,也可以写ip)

tcpdump -i ens33  host node1

4、通过网卡ens33来监听端口80发出去的host包到192.168.73.133的报文

tcpdump -i ens33 port 80 and dst host "192.168.73.133"

5、打印node1与任何其他主机之间通信的IP数据包,但不包括与node4之间的数据包

tcpdump -i ens33 host node1 and not node4

6、截获主机node1 发送的所有数据

tcpdump -i ens33 src host node1

7、监视任意网卡目标是192.168.73.*的80端口的数据包

tcpdump any port 80 and dst host "192.168.73.*"

8、监视指定主机和端口的数据包

tcpdump -i ens33 port 8080 and host node1

9、监视指定网络的数据包,如本机与192.168网段通信的数据包,”-c 10”表示只抓取10个包

tcpdump -i ens33 -c 10 net 192.168

10、打印所有通过网关snup的ftp数据包

tcpdump 'gateway snup and (port ftp or ftp-data)'

注意,表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析

11、抓取ping包

tcpdump -c 5 -nn -i ens33 ==指定主机抓ping包==
tcpdump -c 5 -nn -i ens33 icmp and src 192.168.73.133

12、抓取到本机22端口包

tcpdump -c 10 -nn -i ens33 tcp dst port 22

13、解析包数据

[root@elk-master ~]# tcpdump -c 2 -q -XX -vvv -nn -i ens33 tcp dst port 22tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes10:29:05.724783 IP (tos 0x0, ttl 64, id 2031, offset 0, flags [DF], proto TCP (6), length 40)192.168.73.1.61453 > 192.168.73.133.22: tcp 00x0000:  000c 290b 9534 0050 56c0 0008 0800 4500  ..)..4.PV.....E.0x0010:  0028 07ef 4000 4006 1f0a c0a8 4901 c0a8  .(..@.@.....I...0x0020:  4985 f00d 0016 f675 9adb 7cab 7aa8 5010  I......u..|.z.P.0x0030:  1007 132d 0000 0000 0000 0000            ...-........10:29:05.766565 IP (tos 0x0, ttl 64, id 2032, offset 0, flags [DF], proto TCP (6), length 40)192.168.73.1.61453 > 192.168.73.133.22: tcp 00x0000:  000c 290b 9534 0050 56c0 0008 0800 4500  ..)..4.PV.....E.0x0010:  0028 07f0 4000 4006 1f09 c0a8 4901 c0a8  .(..@.@.....I...0x0020:  4985 f00d 0016 f675 9adb 7cab 7b48 5010  I......u..|.{HP.0x0030:  1006 128e 0000 0000 0000 0000            ............2 packets captured2 packets received by filter0 packets dropped by kernel

14、指定目录保存抓到的ens33网卡上的22端口包数据

tcpdump  -i ens33 tcp port 22 -w /tmp/22.pcap注:保存目录为tmp下,名字为22.pcap,后缀名是固定格式,名字可以自定义,抓到的包可以使用wireshark工具打开进行分析

15、后台滚动抓包

有的时候因为问题不是立马复现,需要后台进行抓包保存,但是如果都抓到一个包会导致数据量很大,不好分析,因此需要滚动保存包数据,以下命令就会后台执行抓包命令,并且按照时间对每个包进行命名,当不需要抓包的时候可以ps -ef|grep tcpdump 找到进程,kill掉即可

nohup tcpdump -i ens33 port 22 -s0 -G 3600 -Z root -w ssh22_%Y_%m%d_%H%M_%S.pcap &

16、后台指定包的数量,然后滚动抓包,执行完指定数量自动结束

网卡,端口,和W参数后的包数量,还有包命名,可以根据需求自己修改,其他参数可以不用修改

nohup tcpdump -i ens33 port 22 -s0 -G 3600 -W 1 -Z root -w ssh22_%Y_%m%d_%H%M_%S.pcap &

实战例子

先看下面一个比较常见的部署方式,在服务器上部署了nodejs server,监听3000端口。nginx反向代理监听80端口,并将请求转发给nodejs server(127.0.0.1:3000)。

浏览器 -> nginx反向代理 -> nodejs server

问题:假设用户(183.14.132.117)访问浏览器,发现请求没有返回,该怎么排查呢?

步骤一:查看请求是否到达nodejs server -> 可通过日志查看。

步骤二:查看nginx是否将请求转发给nodejs server。

tcpdump port 8383

这时你会发现没有任何输出,即使nodejs server已经收到了请求。因为nginx转发到的地址是127.0.0.1,用的不是默认的interface,此时需要显示指定interface

tcpdump port 8383 -i lo

备注:配置nginx,让nginx带上请求侧的host,不然nodejs server无法获取 src host,也就是说,下面的监听是无效的,因为此时对于nodejs server来说,src host 都是 127.0.0.1

tcpdump port 8383 -i lo and src host 183.14.132.117

步骤三:查看请求是否达到服务器

tcpdump -n tcp port 8383 -i lo and src host 183.14.132.117

扩展

例子:
1、最常用命令:获取eth0网卡的数据

# tcpdump -w 1.cap -i eth0 -nvvv -X -s0

2、过滤器使用-1:过滤:获取主机10.10.10.10的数据

# tcpdump -w 1.cap -i eth0 -nvvv -X -s0 host 10.10.10.10

3、过滤器使用-2:过滤:获取端口8080的数据

# tcpdump -w 1.cap -i eth0 -nvvv -X -s0 port 8080

4、过滤器使用-3:过滤:过滤源地址和目的地址

# tcpdump -w 1.cap -i eth0 -nvvv -X -s0 src 2.3.4.5
# tcpdump -w 1.cap -i eth0 -nvvv -X -s0 dst 3.4.5.6

5、滤器使用-4:过滤:过滤源地址和目的地址

# tcpdump -w 1.cap -i eth0 -nvvv -X -s0 src 2.3.4.5
# tcpdump -w 1.cap -i eth0 -nvvv -X -s0 dst 3.4.5.6

6、滤器使用-5:截获主机10.10.10.10 和主机10.10.10.11 或10.10.10.12的通信

# tcpdump -w 1.cap -i eth0  -nvvv -X -s0 host 10.10.10.10  and \ (10.10.10.11 or 10.10.10.12 \)

7、截获eth0网卡10次收发所有数据包并将抓包结果保存到test文件,再读取test抓包结果文件

tcpdump i eth0 c 10 w testtcpdump r test

8、 截获来访问80端口的所有数据包(指定端口范围portrange 1-1024)

tcpdump port 80

9、截获所有来自主机114.254.151.51的进出所有数据包

tcpdump host 114.254.151.51

10、截获ip包中源地址是114.254.151.51的(目的是dst)

tcpdump src 114.254.151.51

11、截获主机114.254.151.51和主机114.254.151.52的通信

tcpdum host 114.254.151.51 and 114.254.151.52

12、截获tcp协议并且源地址114.254.151.51来访问80的端口

tcpdump tcp and src 114.254.151.51 and port 80

13、截获主机114.254.151.51除了和114.254.151.52之外的所有ip包

tcpdump ip host 114.254.151.51 and ! 114.254.151.52

14、截获长度大于1000数据包,对于DDOS攻击时,可以使用

tcpdump -i eth0 greater 1000

15、

16、

17、

Linux基础急速入门:用 TCPDUMP 抓包 : https://mp.weixin.qq.com/s/KGtzqGp7M64WDiDVgfHfjg

参考连接 :
作者:程序猿小卡_casper
链接:https://juejin.im/post/5a421fd56fb9a0450f223253
https://mp.weixin.qq.com/s/IhDcO66bmjOMOoE38LHVgg

https://www.2cto.com/article/201511/450531.html

Linux基础急速入门:用 TCPDUMP 抓包相关推荐

  1. 在 Linux 命令行中使用 tcpdump 抓包

    tcpdump抓包时,如果-i选项指定为一个网卡地址,那么抓取的数据包数据链路层是以太网头部:如果指定any,则以太网头部将被替换为linux cooked capture头部 # tcpdump - ...

  2. tcpdump抓包使用小结

    前言 tcpdump 是一个很常用的网络包分析工具,可以用来显示通过网络传输到本系统的 TCP/IP 以及其他网络的数据包.tcpdump 使用 libpcap 库来抓取网络报,这个库在几乎在所有的 ...

  3. tcpdump 抓包写文件

    tcpdump使用笔记 1 tcpdump的参数和解释 [root@localhost opt]# tcpdump -help tcpdump version 4.9.2 libpcap versio ...

  4. linux tcpdump抓包命令使用详解

    一.抓包命令概述 作用:(1)捕获网络协议包  (2)分析网络协议包 分类:(1)linux命令行工具,如tcpdump(2)windows图像界面工具,wireshark  (3)手机抓包工具,Fi ...

  5. Linux Kernel TCP/IP Stack — L1 Layer — tcpdump 抓包

    目录 文章目录 目录 tcpdump CLI 关键字 常用指令选项 常规操作示例 查看哪些接口可用于捕获 过滤主机 过滤端口 过滤网络(网段) 过滤协议 复杂的逻辑表达式过滤条件 检查数据包内容 输出 ...

  6. linux tcpdump 抓包

    tcpdump是linux命令行下常用的的一个抓包工具,记录一下平时常用的方式,测试机器系统是ubuntu 12.04. tcpdump的命令格式 tcpdump的参数众多,通过man tcpdump ...

  7. 【linux】【tcpdump】linux之tcpdump抓包及wireshark分析详解

    linux的tcpdump命令主要用于网络问题的调试中,通过抓取传输过程的数据包进行分析和调试.而wireshark则是一款功能强大,使用方便的数据包分析工具,tcpdump+wireshark组合使 ...

  8. Linux tcpdump抓包

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  9. Linux网络不通Tcpdump抓包提示:ICMP host *** unreachable - admin prohibited

    现象 ping DNS通,ping 域名不通,telnet 域名端口不通 排故 tcpdump抓包显示: 114.114.114.114有回synack,判断网络层面正常. 后面显示ICMP host ...

最新文章

  1. Python join sorted sort map reduce 函数解析
  2. PAT甲级1104 Sum of Number Segments:[C++题解]数段之和,测试点2爆double,请用long double!!!
  3. 写作—开启技术成长之路
  4. override覆盖
  5. TextView does not support text selection. Selection cancelled. 。TextViews复制文本失效解决方法
  6. Mac/Ubuntu 上编译、搭建 WebRtc/licode 服务器
  7. python爬虫实际应用_如何使用python爬虫论坛?
  8. Android自定义控件学习(三)----- 自定义视图组件
  9. Windows下Python,setuptools,pip,virtualenv的安装
  10. 临时邮件、临时接收手机验证码等好用工具
  11. C Primer Plus(6) 中文版 第6章 C控制语句:循环 6.2 while语句
  12. linux文件误删除该如何恢复?
  13. ireport分页后最后多一页空白页
  14. Glyphs 2 for Mac(字体设计编辑软件)
  15. SCIPY类库——最小二乘法应用
  16. 血泪!pyinstaller打包文件过大的解决方法
  17. 电脑计算机不显示桌面了怎么办,电脑不显示桌面黑屏了 电脑黑屏不显示桌面怎么办 - 云骑士一键重装系统...
  18. 6S-7PIOS14~14.7.1密码界面越狱教程
  19. Mysql数据库远程连接的两种方式
  20. neumann级数_Neumann级数解,Neumann's series solution,音标,读音,翻译,英文例句,英语词典...

热门文章

  1. ObjC学习10-Foundation框架之内存管理
  2. Linux内核源代码分析——插入之后会发生什么?
  3. 在图片控件中应用win32显示图片总结
  4. [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)_vortex_新浪博客
  5. idea debug的时候 启动起来超级慢
  6. 使用画图软件gunplot出现的问题和解决办法
  7. 【js】js中const,var,let区别
  8. 移动视频监控摄像机分类与优势浅析
  9. 《海量日志数据分析与应用》场景介绍及技术点分析
  10. MediaPlayer生命周期