proto 类过滤器:根据协议进行过滤 , 可识别的关键词有:upd, udp, icmp, ip, ip6, arp, rarp,ether,wlan, fddi, tr, decnettype 类过滤器:可识别的关键词有:host, net, port, portrange , 这些词后边需要再接参数 。 direction 类过滤器:根据数据流向进行过滤 , 可识别的关键字有:src, dst , 同时你可以使用逻辑运算符进行组合 , 比如 src or dstproto、type、direction 这三类过滤器的内容比较简单 , 也最常用 , 因此我将其放在最前面 , 也就是 第三节:常规过滤规则一起介绍 。 而 option 可选的参数非常多 , 有的甚至也不经常用到 , 因此我将其放到后面一点 , 也就是 第四节:可选参数解析当你看完前面六节 , 你对 tcpdump 的认识会上了一个台阶 , 至少能够满足你 80% 的使用需求 。 你一定会问了 , 还有 20% 呢?其实 tcpdump 还有一些过滤关键词 , 它不符合以上四种过滤规则 , 可能需要你单独记忆 。 关于这部分我会在 第六节:特殊过滤规则 里进行介绍 。 理解 tcpdump 的输出2.1 输出内容结构tcpdump 输出的内容虽然多 , 却很规律 。 这里以我随便抓取的一个 tcp 包为例来看一下21:26:49.013621 IP 172.20.20.1.15605 > 172.20.20.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48从上面的输出来看 , 可以总结出:
- 第一列:时分秒毫秒 21:26:49.013621
- 第二列:网络协议 IP
- 第三列:发送方的ip地址+端口号 , 其中172.20.20.1是 ip , 而15605 是端口号
- 第四列:箭头 > ,表示数据流向
- 第五列:接收方的ip地址+端口号 , 其中 172.20.20.2 是 ip , 而5920 是端口号
- 第六列:冒号
- 第七列:数据包内容 , 包括Flags 标识符 , seq 号 , ack 号 , win 窗口 , 数据长度 length , 其中 [P.] 表示 PUSH 标志位为 1 , 更多标识符见下面
2.2 Flags 标识符使用 tcpdump 抓包后 , 会遇到的 TCP 报文 Flags , 有以下几种:
[S] : SYN(开始连接)[P] : PSH(推送数据)[F] : FIN (结束连接)[R] : RST(重置连接)[.] : 没有 Flag , 由于除了 SYN 包外所有的数据包都有ACK , 所以一般这个标志也可表示 ACK
常规过滤规则3.1 基于IP地址过滤:host使用
host 就可以指定 host ip 进行过滤数据包的 ip 可以再细分为源ip和目标ip两种# 根据源ip进行过滤$ tcpdump -i eth2 src 192.168.10.100# 根据目标ip进行过滤$ tcpdump -i eth2 dst 192.168.10.2003.2 基于网段进行过滤:net若你的ip范围是一个网段 , 可以直接这样指定$ tcpdump net 192.168.10.0/24网段同样可以再细分为源网段和目标网段# 根据源网段进行过滤$ tcpdump src net 192.168# 根据目标网段进行过滤$ tcpdump dst net 192.1683.3 基于端口进行过滤:port使用
port 就可以指定特定端口进行过滤$ tcpdump port 8088端口同样可以再细分为源端口 , 目标端口# 根据源端口进行过滤$ tcpdump src port 8088# 根据目标端口进行过滤$ tcpdump dst port 8088如果你想要同时指定两个端口你可以这样写$ tcpdump port 80 or port 8088但也可以简写成这样$ tcpdump port 80 or 8088如果你的想抓取的不再是一两个端口 , 而是一个范围 , 一个一个指定就非常麻烦了 , 此时你可以这样指定一个端口段 。 $ tcpdump portrange 8000-8080$ tcpdump src portrange 8000-8080$ tcpdump dst portrange 8000-8080对于一些常见协议的默认端口 , 我们还可以直接使用协议名 , 而不用具体的端口号比如 http == 80 , https == 443 等$ tcpdump tcp port http3.4 基于协议进行过滤:proto常见的网络协议有:tcp, udp, icmp, http, ip,ipv6 等若你只想查看 icmp 的包 , 可以直接这样写$ tcpdump icmpprotocol 可选值:ip, ip6, arp, rarp, atalk, aarp, decnet, sca, lat, mopdl, moprc, iso, stp, ipx, or netbeui3.5 基本IP协议的版本进行过滤当你想查看 tcp 的包 , 你也许会这样子写$ tcpdump tcp这样子写也没问题 , 就是不够精准 , 为什么这么说呢?ip 根据版本的不同 , 可以再细分为 IPv4 和 IPv6 两种 , 如果你只指定了 tcp , 这两种其实都会包含在内 。 那有什么办法 , 能够将 IPv4 和 IPv6 区分开来呢?很简单 , 如果是 IPv4 的 tcp 包, 就这样写(友情提示:数字 6 表示的是 tcp 在ip报文中的编号 。 )$ tcpdump 'ip proto tcp'# or$ tcpdump ip proto 6# or$ tcpdump 'ip protochain tcp'# or $ tcpdump ip protochain 6而如果是 IPv6 的 tcp 包, 就这样写$ tcpdump 'ip6 proto tcp'# or$ tcpdump ip6 proto 6# or$ tcpdump 'ip6 protochain tcp'# or $ tcpdump ip6 protochain 6关于上面这几个命令示例 , 有两点需要注意:
推荐阅读
-
-
-
-
米饭|?女人过了45岁就别留黑长直了,显老!试试这4种减龄发型,真洋气
-
低开|午评:三大指数低开高走创指涨2.4% 生物疫苗表现亮眼
-
令政谈|做了娱乐圈小透明多年后,终于乘风破浪,暖心可爱的万茜
-
『印度』终于露出真面目!印度大军无视警告开战,重兵出击打死120人
-
【枪炮之事|美国的《开放天空条约》将损害安全,俄罗斯表示】
-
小龙爱武时尚显清新,踏出你的少女心,闺蜜们都在穿的小白鞋
-
央视新闻客户端|美国密歇根州84所学校出现新冠肺炎确诊病例
-
库蒂尼奥|库蒂尼奥回归遇尴尬! 7号被格列兹曼抢占,球迷:梅西让出10号
-
-
科技犬(建哥) Duet 3i;Yoga Duet 7i国外发布,联想发布IdeaPad
-
烹饪|秋季,遇到这菜我从不还价,比韭菜鲜也比芹菜香,包饺子太好吃了
-
-
【中超】下午4点,中超大反转!曝多位外援可走绿色通道,月底回中国比赛
-
第一财经|中国连锁经营协会会长裴亮:疫情加速餐饮与食品业两大趋势
-
-
-
考研准备出国或去香港,雅思和GMAT都想考,应该怎样准备