前言

运维经常需要通过网络层抓包来诊断排查问题,可以说是运维必备技能之一。熟练使用wireshark来trouble shooting需要对各种网络协议都要有比较深的认识。本文对日常用到的一些技能技巧进行总结,方便各位看官入门,然后深入。

命令介绍

1.tcpdump

就是:dump the traffic on a network。根据命令选项对网络上的数据包进行截获、分析的工具。支持通过网络、协议、主机、端口的过滤,并提供and、or、not等逻辑操作。日常中更多的是通过该命令进行抓包,然后使用本文提到的wireshark进行分析。

#语法:
Usage: tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ][ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ][ -i interface ] [ -j tstamptype ] [ -M secret ][ -Q|-P in|out|inout ][ -r file ] [ -s snaplen ] [ -T type ] [ -w file ][ -W filecount ] [ -y datalinktype ] [ -z command ][ -Z user ] [ expression ]

一些常用的选项:

  • -v:产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。
  • -vv:产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码。
  • -vvv:产生比-vv更详细的输出。比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来
  • -w file:将原始数据包输出到指定file的文件中。可以使用-r读取。
  • -c count: 抓取指定数量的包后退出。
  • -C file_size:单位是1,000,000字节,约等于1M(如果按1M=1024KB)。将数据包写到文件前先检查文件大小是否超过file_size。如果是,则写入下一个文件。
  • -W count: 常与-C联合使用,实现循环写入count个文件。
  • -i interface: 要抓包的网卡,使用ip a可以查看网卡列表。

tcpdump的参数非常多,而且跟Linux“主命令+主参数+参数值”的模式不太类似。
主要语法如下:

tcpdump options protocol directiono type
注释:
1.options: tcpdump -h回显的那些参数;
2.protocol:可根据协议过滤,支持的关键字有:ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui
3.direction:根据数据流向过滤,支持的关键有:src、dst、src or dst
4.type:可识别的关键有host、port、net、portrange

实例:

#针对网卡eth0抓包,-C表示300M每个文件,-W表示保留4个文件循环覆盖,-w表示将抓取的数据包保存到指定路径的文件中
tcpdump -i eth0 -w /tmp/`hostname -i`.pcap -C 300 -W 4 -vvv
#根据网卡eth0和源IP地址进行过滤
tcpdump -i eth0 src host 10.10.10.10 and port 8080
#根据网段进行过滤
tcpdump net 192.168.10.0/24
#根据端口范围进行过滤
tcpdump portrange 8000-8080

2.wireshark

wireshark是一款免费开源网络包分析工具,能实现按要求捕获指定的数据包并借助强大的过滤器实现数据包分析。常用于网络问题诊断和问题分析。

2.1 wireshark抓包

功能类似于Linux 命令的tcpdump,通过“捕获”–“捕获过滤器”按条件捕获数据包。也可以通过“选项”设置捕获过滤器。因为Linux是我的主要运维方向,Windows没有遇到过很多场景需要抓取本机的流量进行分析。

2.2wireshark分析

一般从linux tcpdump获取的文件传到windows机器上(tcpdump -r跟wireshark比起来有点弱了),再通过wireshark来分析。
wireshark的工具使用很简单,难的是它的过滤器,要弄懂过滤器就不可避免要熟悉网络协议、tcp/ip七层网络模型。而这些不是一蹴而就的,得持续学习,持续精近,我还在这条路上努力着。 毫不夸张的说学习wireshark,就是学习网络协议、学习它的过滤器。
wireshark过滤器分为“捕获过滤器(capturing filter)” 和 “展示过滤器(displaying filter)”。功能不用过多解释,捕获过滤器是抓包时用的。展示过滤器则是查看(分析)数据包时用的,能按基于以下展示特定的数据包:

  • 网络协议
  • 字段
  • 字段值
  • 字段模糊值
  • ……

注意:展示过滤器只是影响的数据包的展示,数据包实际都还在捕获的文件中。

下面重点介绍下展示过滤器的一些常用用法。

过滤器一般语法:
协议[.字段1[.字段2]] 比较符 ‘值’ [逻辑运算符 协议[.字段1[.字段2]] 比较符 ‘值’]
如:
http.request.method == GET
http and http.response.code == 400

比较运算符

逻辑运算符

实例:

#筛选响应码为400的报文
http.response.code == 400
#过滤请求uri中报错“/non-std/exp/pdd/service” 字符串的数据包
http.request.uri contains "/non-std/exp/pdd/service"

2.3遇到的问题

1.pcap: File has *******-byte packet, bigger than maximum of ******)
使用wireshark打开
.pcap文件时,报如题错误.
editcap: The file “10.10.10.10_0.pcap” appears to be damaged or corrupt.
(pcap: File has 3932161-byte packet, bigger than maximum of 262144)
原因:是*.pcap文件中有过大的数据包,超过了wireshark的最大大小。
解决办法:从linux通过ftp传到Windows时,使用binary模式,可以解决这个问题。
ftp> binary
200 Switching to Binary mode.
ftp> get 10.10.10.10_0.pcap

网上还有另外一种解决方案,如下(我没有尝试过,可以参考下)

#将10.119.2.63_0.pcap  这个包改成按每10000个数据包切断。生成多个文件。
"D:\Program Files\Wireshark\editcap.exe"  -c 10000 10.119.2.63_0.pcap first10000.pcap

2.4 一些小技巧

1)当不知道怎么写过滤器语法时,怎么办?
A:打开capture file,随便找一个类似的请求,点击数据包,右键–“作为过滤器”。然后修改过滤器即可。

2)一些常用的过滤器怎么保存下来?
A:“分析”–“Display Filters”,增加,然后保存即可。下次有类似与需求时可以稍微修改一下即可

3)如何将分析结果分享给其他人?
A:将已经过滤的数据,Ctrl+A全选,“文件”–“导出特定分组”,在对话框中勾选“Selected packet”点击保存,即可将关键信息保存成文件。

tcpdump+wireshark双剑合璧相关推荐

  1. tcpdump + wireshark 抓包组合

    学习wireshark抓包随笔 一.目标地址: 239.255.255.250 239.255.255.250是多播地址,多见于路由器上开了UPnP服务,而这个服务会用SSDP(简单服务发现协议)就是 ...

  2. vim 双剑合璧,天下无敌(笔记)

    技巧 12:双剑合璧,天下无敌 参考:Vim 实用技巧 - Practical Vim 操作符 + 动作命令 = 操作 d{motion}命令可以对一个字符(dl),一个完整单词(daw),一个段落( ...

  3. IDA+OD双剑合璧=逆向无敌

    标 题: [原创]IDA+OD双剑合璧=逆向无敌 作 者: Tennn 时 间: 2015-12-12,22:25:19 链 接: http://bbs.pediy.com/showthread.ph ...

  4. mysql基于mysql-proxy和amoeba的读写分离以及tcpdump+wireshark工具验证(上)

    mysql基于mysql-proxy和amoeba的读写分离 以及tcpdump+wireshark工具验证 [实验部署准备] 1,首先对后端节点部署主从关系. 2,然后前端MySQL-proxy对后 ...

  5. MarkDown、Vim双剑合璧

    作为一名软件攻城狮(是的,我从来都以攻城狮自居! 我坚信如今的每一天,都在朝攻城狮迈进.虽然被菜鸟的肉身皮囊裹着,我依然还是怀着攻城狮的内心! 我非常讨厌别人喊我程序猿.虽然这是不争的事实!).... ...

  6. 蚂蚁金服与阿里云“双剑合璧”,加速释放金融科技时代新红利

    作为一个参加了N届云栖大会的老司机,前段时间在收到2019云栖大会的邀请后,马上就去阿里云官网"溜达"一下,看看是不是会有"剧透".不出所料,竟然发现蚂蚁金服的 ...

  7. Spring Cloud Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)

    文章目录 一. Sentinel概念 1. 什么是Sentinel? 2. Sentinel功能特性 3. Sentinel VS Hystrix 二. Docker部署Sentinel Dashbo ...

  8. OpenCL专题04:ViennaCL与Eigen双剑合璧

    前言 大家都爱用Python,很大程度是因为Python有非常丰富好用的扩展包,比如Numpy.Matplotlib.Pandas等.特别是Numpy,为科学计算提供了基础支撑,使得Python具有类 ...

  9. Kafka和Flink双剑合璧,Confluent收购Immerok引起业内广泛讨论

    2023年开年开源界就出了一个大新闻,1月6日Kafka的商业化公司Confluent创始人宣布签署了收购 Immerok 的最终协议,而Immerok是一家为 Apache Flink 提供完全托管 ...

最新文章

  1. GitHub 的微服务架构设计与实践
  2. mfc打开控制台异常关闭_vc控制台程序关闭事件时的正确处理方式
  3. VTK:字形2D用法实战
  4. 3D 立体 backface-visibility
  5. 《Excel 职场手册:260招菜鸟变达人》一第 13 招 利用数据验证给单元格添加注释,不用批注...
  6. 推荐一个CSLab------英真时代(非广告,真心的)
  7. Advanced Object Creation(JS,翻译MSDN文章)
  8. 【ZYNQ】从入门到秃头02 ZYNQ硬件介绍和Vivado开发流程
  9. 超级干货:光纤知识总结最全的文章,盘它!
  10. 联想小新24/27寸一体机 酷睿版2022款评测
  11. 数学--数论--直角三角形--勾股数---奇偶数列法则 a^2+b^2=c^2
  12. 关于删除一条动态的同时删除这条动态的所有评论
  13. ubuntu自动同步时间
  14. 易基因|综合DNA甲基化测序揭示前列腺癌死亡率的预后表观遗传生物标志物 | 文献速递
  15. linux查看文件内容常用命令
  16. 全网首发:OpenJDK如何支持字体的kerning及BUG号
  17. KINOVA公司JACO2、MICO2从安装到开发
  18. 移植ffplay媒体播放器和sdl2到Android平台
  19. 网段和子网掩码及IP个数的计算
  20. 怎么查看电脑上安装的office2013是32位还是64位?

热门文章

  1. HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者
  2. 使用TexturePacker命令行的一个坑
  3. 手撕LongAdder-add()源码
  4. 即将步入研究生,有什么建议?
  5. CentOS7没有图形化界面,怎么安装图形化界面
  6. 解决 input 输入框在 iOS 系统中无法输入内容
  7. SDOI 2009 学校食堂
  8. 李建忠讲23种设计模式笔记-上
  9. 低级语言和高级语言的区别
  10. 自动驾驶外卖上线,美团即将配送一切-1