工业通信

SNMP 监控与诊断配置教程

Wireshark、Nmap、SNMP OID、LSNMP_GET/GETBULK 与 PLC 轮询程序的实用配置。

基于 05_SNMP.md 中 2 条对话内容整理 对话涵盖:工业网络工程师工具、OID 交换机端口检测


一、工业网络工程师工具清单#

1. 必备工具组合#

场景 推荐工具 用途
抓包分析 Wireshark 分析 Modbus TCP、S7comm、EtherNet/IP、SNMP 等协议
命令行抓包 tcpdump / tshark 远程/长时间抓包,保存 pcap
SNMP 测试 Net-SNMP snmpwalk、snmpget、snmpset、snmptrapd
SNMP 图形化 iReasoning MIB Browser / Paessler SNMP Tester 加载 MIB,查 OID,测试 SNMP
Modbus 主站 Modbus Poll / QModMaster / pymodbus 读写线圈、保持寄存器、验证通信
Modbus 从站 Modbus Slave 模拟被读取的设备
EtherNet/IP EIPScanner / pycomm3 设备发现,CIP 显式消息
PROFINET PRONETA / SINEC PNI 设备扫描、拓扑、IO 检查
设备发现 Nmap(生产网慎用) 查找 IP、端口、服务
链路带宽 iperf3 测吞吐、丢包、抖动

2. Wireshark 常用过滤器#

Modbus TCP:    mbtcp 或 tcp.port == 502
S7:            s7comm 或 tcp.port == 102
EtherNet/IP:   enip 或 cip 或 tcp.port == 44818
SNMP:          snmp
PROFINET:      pn-dcp 或 pn-rt
NTP:           ntp

3. Nmap 工控网安全用法#

# 谨慎扫描(仅扫必要端口)
nmap -Pn -sT -p 80,443,502,102,161,44818 192.168.1.10

# 常用工控协议端口
Modbus TCP:   TCP 502
S7comm:       TCP 102
SNMP:         UDP 161
EtherNet/IP:  TCP/UDP 44818, UDP 2222
HTTP/HTTPS:   TCP 80/443
NTP:          UDP 123

二、SNMP 交换机端口状态检测#

1. 基础原理#

组件 说明
SNMP Agent 交换机(XM408/XB208)提供 SNMP 服务
SNMP Manager S7-1215 PLC 作为 SNMP Manager
OID 对象标识符,定位具体数据
MIB 管理信息库,OID 的"字典"

2. 关键 OID#

端口运行状态

OID: 1.3.6.1.2.1.2.2.1.8.<ifIndex> (ifOperStatus)
返回值:
  1 = up(链路正常)
  2 = down(链路断开)
  3 = testing

端口描述

OID: 1.3.6.1.2.1.2.2.1.2.<ifIndex> (ifDescr)
# 用于建立端口号与 ifIndex 的对应关系

端口流量统计

OID: 1.3.6.1.2.1.2.2.1.10.<ifIndex> (ifInOctets)
OID: 1.3.6.1.2.1.2.2.1.16.<ifIndex> (ifOutOctets)
# 64 位计数器:ifHCInOctets / ifHCOutOctets
# 通过采样间隔差值计算实时流量

3. 排查顺序#

1. 先扫描接口名称,建立端口索引表
   snmpwalk -v2c -c public 192.168.1.10 1.3.6.1.2.1.2.2.1.2

2. 读取各端口状态
   snmpwalk -v2c -c public 192.168.1.10 1.3.6.1.2.1.2.2.1.8

3. 端口号与 ifIndex 不一定一致,需先确认映射关系

4. LSNMP_GET / LSNMP_GETBULK 配置(PLC 侧)#

LSNMP_GET

参数 说明
REQ 触发上升沿
ID 连接参数 ID
IP_ADDR 目标交换机 IP
OIDs 请求的 OID 字符串
DONE/BUSY/ERROR 块执行状态
STATUS 块状态码
VALUE 返回值数组

LSNMP_GETBULK

  • 一次读取连续多个 OID
  • 通过 CONNPARAM / LSNMP_typeConnParam 配置连接
  • 在一个 DB 中放多个连接结构,用数组索引切换目标设备
  • 适用于一次读多个接口条目

5. PLC 轮询程序建议#

  • 使用 Main/OB1 轮询
  • 状态机控制:当前设备索引 + 当前端口索引
  • 上升沿触发,监控 BUSY/DONE/ERROR
  • TP 定时脉冲控制轮询间隔
  • 将 SNMP 结果复制到统一数组供 HMI 显示

6. 注意事项#

  • 端口号与 ifIndex 不一定一致 → 先扫描接口名称
  • XM408 和 XB208 的私有 OID 可能受固件版本影响
  • SNMP Trap 接收端需配置正确
  • 生产网慎用主动扫描