tcpdump(二)命令行参数讲解(一)

tcpdump实战详解

bash 复制代码
1、我们做'抓包',一般都需要指定'条件',保证对系统的'CPU、内存、磁盘'资源不会产生过大的响应

备注: 遇到过tcpdump'持续抓包'导致系统'挂了'

2、条件:

   1) tcpdump的 '基础命令选项参数'

   2) 真正的 '过滤条件'

抓包工具tcpdump用法说明

① 参数学习思路

bash 复制代码
思路: 掌握'常用'的'选项参数',其它遇到了'再学习'

备注: 由于是'科普'类的文章,本文视图尽可能的'详细'罗列每个参数

附加: man tcpdump

② 抓包应用场景

bash 复制代码
说明: 关注'2'、'4'、'5'

③ tcpdump工作原理

④ 面试题

bash 复制代码
目的: 考察'tcpdump'的工作原理

命令行选项参数

bash 复制代码
注意: 一些'默认'的'老6'行为

① tcpdump的组成

bash 复制代码
背景: 参数的'不确定性',让大多数人对 tcpdump 的学习始终'无法'得其'精髓'

目的: 便于理解'每个位置'的'顺序'和'含义'
bash 复制代码
sudo tcpdump -vvnni any port 80   --> '看到HTTP详细信息'

② 网络接口

bash 复制代码
1、lvs配置'多业务'网卡,需要采用'-i any'

2、只配置了一个业务网卡[例如:eth0],可以使用-i eth0.
bash 复制代码
常见: '无参'、'-i 网卡'、'-i any'

无参: 如果不指定网络接口,tcpdump 在运行时会选择'编号最低'的网络接口,一般情况下是 eth0

补充: any 这一'特定'的网络接口名用来让 tcpdump 监听'所有'的接口

-i:   'interface'  --> 抓取流经指定'网卡'所有网络接口,'限定'网络接口
bash 复制代码
说明: 一般通过'tcpdump -D'查询'网络接口',然后'tcpdump -i' 获取指定'网卡'流量

③ -n

bash 复制代码
优化: 设置'不解析域名'提升速度

-n:  不把ip转化成'域名',直接显示 ip,避免执行 'DNS lookups' 的过程,速度会快很多

-nn: 不把'协议'和'端口号'转化成'名字',速度也会快很多  --> "常用"

思考: 'CDN' 场景,是否需要把'ip'解析为'域名'?
bash 复制代码
端口'与'服务名称解析

  linux'端口号'与'相应服务'的对应关系存放在'/etc/services'文件中,可以找到'大部分'端口
 
  备注: 使用netstat命令'显示的服务名称'也是从'这个文件'中找的

  附加: /etc/services关于'服务、协议、端口'关联

④ host、src、dst 基于ip地址过滤

bash 复制代码
数据包的 ip 可以再细分为'src 源ip'和'dst 目标ip'两种

++++++++++++++++++ "分割线"  ++++++++++++++++++
​
如果没有指定'类型',默认是'host'

等价: tcpdump -ni eth0 src 10.1.1.2
bash 复制代码
遗留: 'src'和'dst'通过'逻辑符号'可以同时使用

⑤ net 基于网段过滤

bash 复制代码
说明: 网段'同样'可以再细分为'源'网段和'目标'网段

tcpdump src net 192.168.1.0/24  -->  根据'源网段'进行过滤

⑥ port portrange 基于端口号过滤

bash 复制代码
1、tcpdump port 8088             --> 指定'特定端口'进行过滤

2、tcpdump port 80 or port 8088  --> 同时指定'两个'端口

简写: tcpdump port 80 or 8088

3、tcpdump src port 8088         --> 根据'源端口'进行过滤

4、tcpdump portrange 8000-8080   --> 想抓取的是一个端口'范围'

5、tcpdump src port http

备注: 对于一些'常见协议'的'默认'端口,我们还可以直接使用'协议名',而不用具体的端口号

附加: http == 80、https == 443 

⑦ proto基于协议进行过滤

bash 复制代码
常见的'网络协议'有:tcp、udp、icmp、http、ip、ipv6 等

强调: 旧版本有'proto'关键字,新版本没有,这里'Centos7.7' 默认的'4.9.2'没有

补充: 不指定'协议类型',则抓取'所有'协议类型的包

⑧ tcpdump输出结构

bash 复制代码
说明: tcpdump '输出的内容'虽然多,却'很规律'  --> '后续重点掌握'

请求: http://other.wzj.com/index.yml '为例'来看一下
bash 复制代码
第一列: 时分秒毫秒 

第二列: 网络协议 IP

第三列: '发送方'的ip地址+端口号,其中172.20.20.1是 ip,而15605 是'端口号'

第四列:  箭头 >, 表示'数据流向'

第五列: '接收方'的ip地址+端口号,其中 172.20.20.2 是 ip,而5920 是端口号

第六列:  冒号

第七列:  数据包内容

备注: 包括Flags 标识符,seq 号,ack 号,win 窗口,'数据长度' length

附加: 其中 '[P.]' 表示 'PUSH 标志位为 1'

说明: 分列是为了与'awk'结合提取'有用'的信息
相关推荐
我也要当昏君2 小时前
6.3 文件传输协议 (答案见原书 P277)
网络
Greedy Alg2 小时前
Socket编程学习记录
网络·websocket·学习
刘逸潇20053 小时前
FastAPI(二)——请求与响应
网络·python·fastapi
Mongnewer4 小时前
通过虚拟串口和网络UDP进行数据收发的Delphi7, Lazarus, VB6和VisualFreeBasic实践
网络
我也要当昏君4 小时前
6.5 万维网(答案见原书P294)
网络
嶔某5 小时前
网络:传输层协议UDP和TCP
网络·tcp/ip·udp
文火冰糖的硅基工坊5 小时前
[嵌入式系统-154]:各种工业现场总线比较
网络·自动驾驶·硬件架构
以己之5 小时前
详解TCP(详细版)
java·网络·tcp/ip
Ronin3056 小时前
【Linux网络】封装Socket
linux·网络·socket·网络通信
Brianna Home6 小时前
博客安全攻防演练:从攻击者视角构筑铜墙铁壁
网络·数据库·安全·oracle