You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Mosquitto Broker遇畸形数据包问题,求定位源设备IP

定位Mosquitto畸形数据包来源IP的排查方案

1. 解析Wireshark抓包数据

  • 用过滤规则 mqtt 筛选抓包中的MQTT流量,再叠加条件 ip.src == 172.18.5.1 锁定异常数据包
  • 查看异常数据包的TCP源端口,结合以下方式反向追踪:
    • 执行docker ps查看所有容器的端口映射,匹配抓包中的源端口,定位对应容器
    • 若流量来自主机,执行sudo lsof -i :<异常源端口>,查看监听该端口的进程

2. 强化Mosquitto日志细节

修改mosquitto.conf,开启全量连接日志:

log_type all
connection_messages true
log_timestamp true

重启Mosquitto容器后,重点查看日志中来自172.18.5.1的连接信息,关注:

  • 连接请求的clientid字段(若客户端已配置)
  • 连接对应的TCP端口,结合容器端口映射缩小范围

3. 排查Docker网关转发的流量

网关172.18.5.1是Docker网桥的主机侧IP,异常流量可能来自主机或网桥内容器:

  • 检查主机上的MQTT相关进程:ps aux | grep mqtt,排查异常进程
  • 遍历Docker网络内所有容器的网络活动:
    # 先获取网络名称,替换下方的<your-network>
    docker network inspect <your-network> | grep -E "IPv4Address|Name"
    # 逐个检查容器的MQTT连接状态
    for container in $(docker ps -q); do
      echo "容器名: $(docker inspect $container --format '{{.Name}}') IP: $(docker inspect $container --format '{{.NetworkSettings.Networks.<your-network>.IPAddress}}')"
      docker exec $container netstat -tulpn | grep -E "ESTABLISHED|LISTEN" | grep mqtt
    done
    
  • 检查是否有容器端口映射到主机后,被异常进程占用

4. 临时隔离验证

  • 暂时停止可疑容器,观察40秒内是否仍出现错误日志,若错误消失则可确认该容器为问题来源
  • 若怀疑主机进程,可临时停止对应进程,验证错误是否终止

内容的提问来源于stack exchange,提问作者salvq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:24:26