找回密码
 立即注册
首页 业界区 业界 抓包经验

抓包经验

颓哀 2025-7-6 21:42:13
对讲终端脱机抓包通用分析指南

目录


  • 抓包准备阶段
  • 抓包操作步骤
  • Wireshark分析关键点
  • 常见问题解决方案
  • 高级分析技巧
  • 无法解决时的进一步操作
1. 抓包准备阶段

1.1 确定抓包位置


  • 关键接口:在服务器上抓取与问题终端通信的网卡流量(通常是对讲系统使用的业务网卡)
  • 辅助接口:若服务器有多个网卡(如管理网卡、业务网卡),需确认目标终端连接的物理端口或VLAN
1.2 安装Wireshark


  • Windows服务器

    • 官网下载安装包:https://www.wireshark.org/
    • 安装时勾选 Npcap(WinPcap的替代品,支持现代Windows)

  • Linux服务器
    1. # Ubuntu/Debian
    2. sudo apt update
    3. sudo apt install wireshark
    4. sudo usermod -aG wireshark $USER  # 将当前用户加入wireshark组
    5. newgrp wireshark                 # 刷新组权限             # 刷新组权限
    复制代码
1.3 配置镜像端口(如需跨设备抓包)


  • 若问题终端与服务器不在同一设备

    • 在交换机上配置端口镜像,将目标终端的流量镜像到服务器网卡
    • 示例命令(华为交换机):
      1. observe-port 1 interface GigabitEthernet0/0/1  # 镜像到服务器所连端口
      2. interface GigabitEthernet0/0/2                  # 问题终端所连端口
      3. port-mirroring to observe-port 1 both           # 镜像进出双向流量
      复制代码

2. 抓包操作步骤

2.1 启动Wireshark并选择网卡
  1. sudo wireshark  # Linux需提权,Windows直接打开
复制代码

  • 选择服务器与终端通信的网卡(如 eth0 或 192.168.1.x 对应的接口)
2.2 设置抓包过滤器(减少噪声)


  • 基础过滤(根据终端IP):
    1. ip.addr == 192.168.1.100  # 替换为目标终端的IP
    复制代码
  • 协议过滤(常见对讲协议):
    1. udp.port == 5060 || udp.port == 10000-20000  # SIP+语音端口范围
    2. || tcp.port == 80 || udp.port == 5061        # HTTP/HTTPS/SIPS
    复制代码
2.3 开始抓包并重现问题


  • 点击 鲨鱼鳍图标 开始捕获
  • 立即操作:从问题终端发起一次呼叫(触发"目标脱机"提示)
  • 问题复现后,点击 红色停止按钮 结束抓包
2.4 保存抓包数据


  • File > Save As 保存为 广播服务器_目标脱机.pcapng
3. Wireshark分析关键点

3.1 检查目标终端可达性


  • ARP解析:搜索目标终端IP的ARP请求(过滤 arp)

    • 若无ARP响应 → 终端离线或网络隔离

  • ICMP检测(若允许ping):
    1. icmp && ip.addr == 目标终端IP
    复制代码

    • 无ICMP Reply → 网络层不通

3.2 分析呼叫信令流程


  • SIP协议分析(常见对讲系统协议):

    • 过滤:sip 或 sip.Call-ID contains "会话ID"
    • 正常流程:INVITE → 100 Trying → 180 Ringing → 200 OK → ACK
    • 异常场景

      • INVITE 无响应 → 目标终端未收到请求(防火墙拦截/终端离线)
      • INVITE 返回 404 Not Found → 终端未注册到服务器
      • INVITE 返回 503 Service Unavailable → 服务器路由错误


3.3 检查终端注册状态


  • 过滤终端IP的注册请求:
    1. sip.Method == "REGISTER" && ip.src == 目标终端IP
    复制代码
  • 若最后一次 REGISTER 过期(查看 Expires 头),服务器会标记终端为离线
3.4 排查防火墙/中间设备干扰


  • 查找 TCP RSTICMP Destination Unreachable 数据包:
    1. tcp.flags.reset == 1 || icmp.type == 3
    复制代码
  • 此类包表明流量被中间设备(防火墙、路由器)拦截
3.5 分析会话超时


  • 若呼叫建立后突然断开:

    • 检查 SIP BYE 发起方(终端主动退出?)
    • 查看 RTP流(语音流)是否中断:

      • Telephony > RTP > Stream Analysis → 检查丢包率和抖动


4. 常见问题解决方案

问题根因解决方案目标终端未注册1. 检查终端网络配置
2. 确认终端到服务器的5060/5061端口可达
3. 抓取终端侧日志SIP信令被防火墙拦截1. 在服务器/防火墙上放行UDP 5060-5080端口
2. 关闭服务器临时防火墙:sudo ufw disable(测试用)NAT穿透失败1. 服务器配置STUN/TURN服务
2. 修改SIP Contact 头为公网IP(如FreeSWITCH中设置external_sip_ip)终端心跳超时1. 延长SIP注册有效期(修改 Expires 值)
2. 配置OPTIONS心跳检测服务器路由表错误1. 检查SIP服务器配置(如FreeSWITCH的 dialplan)
2. 确认目标终端在注册数据库中的状态5. 高级分析技巧


  • 绘制呼叫流程图
    Statistics > Flow Graph → 选择 "Limit to display filter"
  • 追踪特定会话
    右键SIP数据包 → Follow > UDP Stream
  • 解码自定义协议
    若使用私有协议,通过 Analyze > Decode As 指定端口和协议类型
  • 时间分析
    在问题时间点右键标记 → Set Time Reference,计算响应延迟
6. 无法解决时的进一步操作


  • 交叉验证

    • 目标终端侧抓包,对比服务器流量
    • 交换机镜像口抓包,确认流量是否到达网络设备

  • 收集日志

    • 服务器日志(如FreeSWITCH的 /var/log/freeswitch/freeswitch.log)
    • 终端日志(联系设备厂商获取)

  • 协议模拟测试
    使用 sipsak 或 sipp 工具模拟呼叫,隔离终端故障:
    1. sipsak -s sip:目标终端IP -v -U 问题终端IP
    复制代码
最后更新日期:2025年7月6日

来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册