基于 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 接收端需配置正确
- 生产网慎用主动扫描