网络抓包工具——tcpdump &&icmpv6抓包

之前没了解过这个工具,遇到一个开发问题,需要查看NS和NA的行为,确保不会因为太频繁导致网络堵塞

【0】icmpv6的ns na rs ra报文

首先介绍一下icmpv6的ns na rs ra报文是干什么的?

😀上来让你抓包,首先需要知道这些包到底是什么

ICMPv6中的NS、NA、RS、RA是IPv6邻居发现协议(NDP)的四种核心报文类型,用于IPv6网络的地址解析、路由器发现等功能:

1. NS (Neighbor Solicitation - 邻居请求报文)

  1. 功能 :用于解析IPv6地址对应的链路层地址(类似IPv4的ARP请求)
  2. 用途 :

地址解析:查询某个IPv6地址对应的MAC地址

重复地址检测(DAD):检查自己想要使用的IPv6地址是否已被使用

邻居不可达检测(NUD):验证邻居是否仍然可达

发送方式 :通常以多播或单播形式发送

  1. 功能 :对NS报文的响应,通告自己的IPv6地址和链路层地址
  2. 用途 :

回应NS报文的地址解析请求

主动通告地址变化(如链路层地址改变时)

确认地址唯一性(DAD响应)

发送方式 :通常是单播回应NS,也可能在地址变更时多播通告

3. RS (Router Solicitation - 路由器请求报文)

  1. 功能 :主机启动时发送,请求路由器发送RA报文
  2. 用途 :

快速获取网络配置信息

在网络变化时触发路由器重新发送RA

发送方式 :发送到所有路由器多播地址(FF02::2)

  1. 功能 :路由器周期性发送或响应RS,通告网络配置信息
  2. 用途 :

前缀信息:提供IPv6地址前缀供主机自动配置地址

默认网关信息:指定默认路由器

MTU大小:通告链路最大传输单元

跳数限制:建议的IPv6默认跳数

发送方式 :通常以多播形式发送到所有节点多播地址(FF02::1)

工作流程示例 :

  1. 主机启动后发送RS请求配置信息

  2. 路由器回应RA,提供前缀、默认网关等信息

  3. 主机使用前缀生成IPv6地址,然后发送NS进行DAD检测

  4. 如果没有冲突,主机设置地址;如果有其他节点已使用该地址,会回应NA冲突信息

  5. 当主机需要与其他IPv6节点通信时,发送NS查询目标的MAC地址

  6. 目标节点回应NA,提供MAC地址

  7. 通信建立后,主机会定期发送NS进行邻居可达性检测

这些报文共同构成了IPv6网络的基础发现和配置机制,替代了IPv4中的ARP协议和DHCP的部分功能。

【1】tcpdump基本介绍

TCPdump是一个功能强大的命令行网络数据包分析工具,主要用于在Linux和Unix系统上捕获和分析TCP/IP及其他网络协议的数据包。它常用于:

网络故障诊断和问题排查

网络安全审计和监控

网络流量分析和协议研究

应用程序调试和性能优化

【2】基本语法格式

tcpdump [选项] [过滤表达式]

【3】常用选项详解

1、接口与捕获选项

|---------|----------------------------------------|
| 选项 | 说明 |
| 网络接口 -i | 指定要监听的网络接口,如 -i eth0 、 -i enp1s0.1069 |
| 数量 -c | 限制捕获的数据包数量,如 -c 10 只捕获10个包 |
| 长度 -s | 设置数据包快照长度, -s 0 表示捕获完整数据包 |
| 文件名 -w | 将捕获的数据包保存到文件中(二进制格式),如 -w capture.pcap |
| 文件名 -r | 从保存的文件中读取数据包进行分析,如 -r capture.pcap |

2、显示格式选项

|-------|--------------------------------|
| -n | 不解析主机名,以IP地址显示,加快处理速度 |
| -nn | 不解析主机名和端口名称,以数字形式显示,如 -nn |
| -v | 详细输出模式,显示更多数据包信息 |
| -vv | 更详细的输出模式,显示完整的协议信息 |
| -A | 以ASCII格式显示数据包内容,适用于分析HTTP等文本协议 |
| -x | 以十六进制和ASCII格式显示数据包内容 |
| -e | 显示链路层头部信息,包括MAC地址 |
| -t | 不显示时间戳 |
| -tttt | 以可读的时间格式显示时间戳 |

【4】过滤表达式

1、基本过滤选项

|---------|--------------------------------------------------|
| 过滤类型 | 说明 |
| host | 基于主机名或IP地址过滤,如 host 192.168.1.1 |
| net | 基于网段过滤,如 net 192.168.0.0/24 |
| port | 基于端口号过滤,如 port 80 |
| src/dst | 基于源/目标地址/端口过滤,如 src host 192.168.1.1 dst port 80 |
| 协议名称 | 基于协议类型过滤,如 tcp 、 udp 、 icmp 、 icmp6 |

2、逻辑运算符

and 或 && :逻辑与

or 或 || :逻辑或

not 或 ! :逻辑非

3、特殊协议过滤

对于ICMPv6等特殊协议,使用更精确的过滤,如 过滤NS、NA、RS、RA、ping请求ping响应:

'icmp6 and (ip6[40] == 133 or ip6[40] == 134 or ip6[40] == 135 or ip6[40] == 136 or ip6[40] == 128 or ip6[40] == 129)' \

【5】使用示例

1、基础使用

抓取指定接口的所有流量:抓取eth0的所有流量:sudo tcpdump -i eth0

不解析主机名和端口,提高处理速度:sudo tcpdump -i eth0 -nn

限制捕获抓包数量:sudo tcpdump -i enp1s0.1069 -c 10

2、协议与端口过滤

捕获TCP协议的数据包:sudo tcpdump -i eth0 'tcp'

捕获HTTP流量,端口80:sudo tcpdump -i eth0 'port 80'

捕获多个端口的流量:sudo tcpdump -i eth0 'port 80 or port 443'

3、主机与地址过滤

捕获特定主机的流量:sudo tcpdump -i eth0 'host 192.168.1.1'

捕获从特定主机发出的流量:sudo tcpdump -i eth0 'src host 192.168.1.1'

捕获到特定主机的流量:sudo tcpdump -i eth0 'dst host 192.168.1.1'

4、ICMPv6相关过滤

捕获ICMPv6的邻居发现相关报文:sudo tcpdump -i enp1s0.1069 'icmp6 and (ip6[40] == 133 or ip6[40] == 134 or ip6[40] == 135 or ip6[40] == 136)' -nn -vv

  • 133: Router Solicitation (RS) - 路由器请求
  • 134: Router Advertisement (RA) - 路由器通告
  • 135: Neighbor Solicitation (NS) - 邻居请求
  • 136: Neighbor Advertisement (NA) - 邻居通告
  • 128: Echo Request (ping请求)
  • 129: Echo Reply (ping响应)
    捕获ICMPv6的ping请求和响应:sudo tcpdump -i enp1s0.1069 'icmp6 and (ip6[40] == 128 or ip6[40] == 129)' -nn -vv

5、保存与读取捕获文件

将捕获的数据包保存到文件:sudo tcpdump -i eth0 -w capture.pcap

从文件中读取并过滤数据包:tcpdump -r capture.pcap 'host 192.168.1.1'

【6】数据包分析

标准tcpdump输出格式包含以下字段:

时间戳 协议 源地址.源端口 > 目标地址.目标端口: 标志 序列号 确认号 数据长度

对于ICMPv6报文,会显示类型、代码和相关信息

03:41:09.983272 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::219:xxxx:xxxx:xxxx> fe80::xxxx:xxxx:xxxx:xxxx: [icmp6 sum ok] ICMP6, neighbor advertisement, length 24, tgt is fe80::219:xxxx:xxxx:xxxx, Flags [router, solicited]

相关推荐
tang777893 小时前
如何保护网络隐私?从理解代理IP开始
网络·tcp/ip·php
捷米研发三部7 小时前
ProfiNet转Modbus TCP协议转换网关实现西门子PLC与工控机通讯在智能交通系统的应用案例
网络·网络协议
dreamtm1238 小时前
通俗理解 TCP 拥塞控制:像 “快递员看路况调速”,避免网络 “堵车”
网络·tcp/ip·php
ASKED_201913 小时前
常用 Linux 命令大全(文件、网络、时间、进程、数据库、工具全覆盖)
linux·网络·数据库
我还可以再学点14 小时前
八股文面试攻略四:网络篇
网络·面试·职场和发展
q***766614 小时前
显卡(Graphics Processing Unit,GPU)架构详细解读
大数据·网络·架构
网安小白的进阶之路14 小时前
B模块 安全通信网络 第一门课 园区网实现与安全-1
网络·安全
dragoooon3416 小时前
[Linux网络——Lesson2.socket套接字 && 简易UDP网络程序]
linux·网络·udp