前言
- 网络运维离不开两件事:监控要知道设备现在怎么样,日志要知道设备过去发生了什么。前者靠管理站主动查询,后者靠设备主动上报。
- 围绕这两个需求,常用协议有SNMP(UDP 161/162)、Syslog(UDP 514),以及 NetFlow、NTP 等。其中 SNMP 和 Syslog 最基础,也最容易被混淆。
- 本文先讲清 SNMP 与 Syslog 的理论区别,再以华为设备为例给出 SNMPv1/v2c/v3 和 Syslog 的配置、验证与排错步骤。一句话记忆:UDP 514 管“日志”,UDP 161 管“管理”。
理论部分
一、UDP 161
1.1 基本定义
- 所属协议:SNMP 简单网络管理协议
- 核心功能:网络管理,管理站主动查询或设置设备参数
- 通信方向:管理站 ⇄ 设备(请求 / 响应,双向)
1.2 工作模式
- 代表设备上的 SNMP代理(Agent)所监听的端口
- 管理站向设备的 161 端口发送GetRequest(查询)或SetRequest(设置)命令
- 设备处理后再返回响应
1.3 补充:UDP 162
- SNMP 的另一个常用端口
- 专门用于接收设备主动发送的告警信息(Trap)
- 可看作 SNMP 体系里的“异步通知”机制
二、UDP 514
2.1 基本定义
- 所属协议:Syslog 系统日志协议
- 核心功能:网络日志的集中传输与收集
- 通信方向:设备 → 日志服务器(单向推送)
2.2 主要用途
- 集中收集来自服务器、路由器、防火墙等设备的事件通知和日志信息
- 方便管理员统一监控、排错和安全审计
2.3 支持的设备
支持 UDP 514 日志传输的设备(部分)
| 设备类型 | 具体型号 / 系列 |
|---|---|
| Dell 交换机 | S4820T、S6100-ON、Z9100-ON、S4048-ON、S3048-ON、S6000-ON、Z9500、S4810、MXL、S3148、S3100 系列等 |
| Dell SONiC 交换机 | E3200-ON、N3200-ON、S5200 系列、Z9264F-ON、Z9332F-ON、Z9432F-ON |
| Extreme Networks | SLX-OS 设备(默认 UDP 514,支持 TLS 6514) |
| Ubiquiti EdgeRouter | 所有 EdgeRouter 型号(EdgeOS 固件,端口不可自定义) |
| Brocade 交换机 | Brocade 4100 系列(OS v6)已验证 |
| 华为交换机 | S5700、S6700 系列(V200R024C10) |
| Cisco 安全设备 | ASA 系列(默认 Syslog 端口)、Secure Firewall 3100/4200/6100 |
| 安防对讲设备 | 2N IP 系列(IP 对讲/门禁) |
如何确认设备是否支持
- 在设备手册中搜索 “Syslog” 或 “logging host”
- 在 CLI / Web 界面查看是否有配置日志服务器地址和端口的选项
- 若端口默认为 514,通常就支持 UDP 传输
2.4 补充:安全性提醒
- UDP 无连接、不可靠,网络拥堵时可能丢日志
- 数据明文传输,缺乏认证,易被窃听或伪造
- 建议:安全要求高时改用 TCP + TLS(如 RFC 5425),或通过防火墙限制访问来源
三、核心区别与对比
3.1 UDP161 和 UDP514 的区别
| 特性 | UDP 161 | UDP 514 |
|---|---|---|
| 所属协议 | SNMP(简单网络管理协议) | Syslog(系统日志) |
| 核心功能 | 网络管理:管理站主动查询或设置设备参数 | 日志传输:设备主动发送事件和日志信息 |
| 通信方向 | 管理站 ⇄ 设备(请求/响应,双向) | 主要是 设备 → 日志服务器(单向推送) |
| 可靠性 | 同样基于 UDP,但有超时和重传机制 | 默认尽力而为,不保证送达 |
| 角色比喻 | “被询问者”——等待查询并回应 | “广播员”——主动播报事件 |
3.1 UDP161 和 UDP162 的区别
UDP是无连接,不需要建立连接,两个端口流量方向相反,这就是能收到Trap、查询超时的根本原因。
| 端口 | 监听位置 | 流量方向 | 角色 | 用途 |
|---|---|---|---|---|
| UDP 161 | 网络设备(交换机/路由器) | 网管主机 → 设备 | 设备被动监听端口 | 网管主动查询/修改设备数据:Get / GetNext / GetBulk / Set 👉 你现在超时就是这条流量不通,数据包到不了交换机161端口 |
| UDP 162 | 网管/监控主机 | 设备 → 网管主机 | 网管被动监听端口 | 设备主动上报告警Trap(接口down、配置变更等事件) 交换机主动发包推给网管162端口,不需要网管提前发起请求 |
一句话记忆:
161:设备被查;162:设备主动发告警。
Trap:交换机出方向流量;SNMP查询:去往交换机入方向流量。ACL/防火墙可以分开控制进出方向,所以会出现单通。
3.2 SNMP v1 / v2c / v3 对比
| 项目 | SNMPv1 | SNMPv2c | SNMPv3 |
|---|---|---|---|
| 认证方式 | 明文团体字community | 明文团体字community | 用户名 + 认证 + 加密(无团体字) |
| 报文支持 | Get、GetNext、Set、Trap | v1全部 +Get-Bulk(批量读取) | 支持Get-Bulk,支持Inform(带确认的告警) |
| 加密 | ❌ 无加密,抓包能看到团体字 | ❌ 无加密,抓包能看到团体字 | ✅ 可选加密(AES/DES),生产推荐 |
| 安全等级 | 低 | 低 | 高(企业生产首选) |
| 适用场景 | 老旧设备、简单实验 | 实验室、中小型监控 | 生产环境、安全要求高场景 |
备注:行业里说的SNMPv2一般指SNMPv2c(带团体字版本),原始SNMPv2几乎不用。
SNMPv3 3种安全级别
noAuthNoPriv:不认证、不加密(仅用户名,测试用,不安全)authNoPriv:身份认证,报文不加密authPriv:身份认证 + 报文加密(推荐)
操作部分
一、华为设备配置 snmp-agent
前置前提:全局开启
snmp-agent,网络层面放行UDP 161入方向流量,否则无论哪个版本都会查询超时!
1.1 SNMPv1 配置
system-view # 开启SNMP全局开关 snmp-agent # 启用v1版本 snmp-agent sys-info version v1 # 配置只读、读写团体字 snmp-agent community read dumima snmp-agent community write xiemima验证命令
display snmp-agent sys-info # 查看启用的SNMP版本 display snmp-agent community # 查看团体字 display snmp-agent statistics # 查看收发SNMP报文计数(判断包有没有到达交换机)网管设置:版本SNMPv1,Read community=dumima,端口161;v1不支持Get-Bulk
1.2 SNMPv2c 配置
推荐实验环境使用。
system-view snmp-agent # 同时开启v1+v2c,兼容更好,也可以只写 version v2c snmp-agent sys-info version v1 v2c # 团体字和v1共用,不用重新创建 snmp-agent community read dumima snmp-agent community write xiemima验证命令
display snmp-agent sys-info display snmp-agent community display snmp-agent statisticssudopacman-Snet-snmp snmpwalk-v2c-cdumima192.168.200.1 sysNameSNMPv2-MIB::sysName.0 = STRING: LSW1网管设置:版本SNMPv2,Read community=dumima,端口161;支持Get-Bulk,默认参数0/10无需修改
1.3 SNMPv3 配置
authPriv 认证+加密,推荐生产环境使用。
system-view snmp-agent snmp-agent sys-info version v3 # 创建MIB视图,开放全部MIB节点 snmp-agent mib-view included iso-view iso # 创建用户组,安全级别privacy(authPriv) snmp-agent group v3 snmp-group privacy read-view iso-view # 创建v3用户 snmp-agent usm-user v3 snmpuser group snmp-group snmp-agent usm-user v3 <用户名> <用户组名> # 旧版本 # 设置认证算法SHA,输入密码≥8位 snmp-agent usm-user v3 snmpuser authentication-mode sha # 设置加密算法AES128,输入加密密码≥8位 snmp-agent usm-user v3 snmpuser privacy-mode aes128验证命令
display snmp-agent sys-info display snmp-agent usm-user # 查看v3用户 display snmp-agent group v3 # 查看v3用户组 display snmp-agent statistics网管配置:版本SNMPv3,用户名snmpuser,安全等级authPriv,SHA+AES128,填写认证/加密密码,端口161
1.4 SNMPv3 Trap配置
可选,告警上送网管UDP162
# 替换为你的网管主机IP snmp-agent target-host trap address udp-domain 网管IP udp-port 162 params securityname snmpuser v3 privacy snmp-agent trap enable1.5 通用排错验证步骤
重点!你当前故障排查流程
display snmp-agent statistics- 发包测试后,收到报文计数不变:UDP161报文根本没到达交换机,网络拦截(ACL/接口traffic-filter)
- 计数上涨:报文到达交换机,排查版本/团体字/v3用户名密码错误
- 检查接口ACL:
display this interface Vlanif X,看是否存在traffic-filter inbound acl,入方向ACL会拦截访问交换机CPU的UDP161报文 - 抓包确认
- 网管电脑Wireshark:
udp.port ==161,看查询报文是否发出 - 交换机抓包:
display capture-packet interface Vlanif X udp port 161,确认报文是否抵达交换机
- 网管电脑Wireshark:
1.6 常见坑总结
- SNMPv1不能使用Get-Bulk,只有v2c/v3支持。
- 所有版本的查询请求,都使用UDP 161端口。
- Trap使用UDP162,流量方向相反,容易出现单通(能收告警,不能查询)。
- SNMPv3修改engine-id会清空所有v3用户,不要随意修改。
- v3密码必须≥8字符,否则配置报错。
二、华为设备配置 Syslog
| 项目 | 内容 |
|---|---|
| 设备型号 | Quidway S5700-28C-HI |
| 软件版本 | VRP 5.110 (S5700 V200R001C00) |
| 设备主机名 | LSW1 |
| 管理地址 | 192.168.200.1 |
| 日志服务器 | 192.168.200.254 (Arch Linux) |
该版本属于早期 VRP,部分新命令(如
transport tcp、ssl-policy)不支持,配置时需注意向下兼容。
2.1 交换机侧配置
2.1.1 使能信息中心
system-view info-center enable缺省情况下信息中心是开启的,但建议显式确认。
2.1.2 配置日志主机
info-center loghost 192.168.200.254注意:不配置
local-time参数时,设备发送的日志时间为UTC 时间。如需本地时间,使用info-center loghost 192.168.200.254 local-time。
系统最多可配置 8 个日志主机(IPv4 + IPv6)。
2.1.3 配置日志输出规则(可选)
info-center source default channel 2 log level informational缺省情况下,向 2 号通道(loghost 方向)输出日志的状态为
on,最低级别为informational。如需调整过滤级别,可显式配置。
2.1.4 保存配置
save2.2 rsyslog服务端配置
本次使用的发行版是ArchLinux
2.2.1. 安装 rsyslog
sudopacman-Srsyslogsudosystemctlenable--nowrsyslog2.2.2 启用 UDP514 端口监听
编辑/etc/rsyslog.conf,确保以下行未被注释:
module(load="imudp") input(type="imudp" port="514")CentOS/RHEL 系旧版配置语法为
$ModLoad imudp+$UDPServerRun 514。Arch 上使用新版module()/input()语法。
2.2.3 限制可信来源(可选)
$AllowedSender UDP, 192.168.200.0/24防止日志洪水或伪造攻击,
$AllowedSender必须放在输入模块加载之后、规则之前才生效。
2.2.4 重启 rsyslog
sudosystemctl restart rsyslog2.2.5 查看日志文件
默认远程日志通常写入/var/log/messages或/var/log/syslog:
sudotail-f/var/log/messages2.3 验证方法
方式一:服务器侧 tcpdump 抓包
sudotcpdump-iany-nport514-Asudotcpdump-iany-nhost192.168.200.1 and port514-A参数说明:
| 参数 | 作用 |
|---|---|
-i any | 监听所有接口 |
-n | 不解析主机名和端口名 |
-A | 以 ASCII 形式打印日志正文 |
预期输出示例:
00:37:31.740584 IP 192.168.200.1.38514 > 192.168.200.254.514: SYSLOG local7.notice, length: 151 E....................r....2.<189>Sep 22 2026 08:37:30 LSW1 %%01SHELL/5/CMDRECORD(l)[11]:Record command information. (Task=VT0 , Ip=192.168.200.254, User=admin, Command="shutdown")源端口 38514 是华为交换机默认的 Syslog 源端口。
方式二:交换机侧确认
检查日志主机配置:
display info-center重点确认Log host:字段下是否列出了目标 IP。
查看本地日志缓冲区:
display logbuffer display logbuffer brief确认交换机本身在记录日志。
方式三:手动触发日志
选一个空闲端口,执行shutdown再undo shutdown,会产生PORT_DOWN/PORT_UP日志:
system-view interface GigabitEthernet0/0/2 shutdown undo shutdown然后观察 tcpdump 是否捕获到新报文。
2.4 日志格式解读
华为 Syslog 格式:
<优先级> 时间 主机名 模块/级别/事件: 具体描述以实际抓到的日志为例:
<189>Sep 22 2026 08:37:30 LSW1 %%01SHELL/5/CMDRECORD(l)[11]:Record command information. (Task=VT0 , Ip=192.168.200.254, User=admin, Command="shutdown")| 字段 | 含义 |
|---|---|
<189> | Syslog 优先级,数值越小越严重 |
Sep 22 2026 08:37:30 | 日志时间(注意:未配local-time时为 UTC,比本地时间慢 8 小时) |
LSW1 | 设备主机名 |
%%01SHELL/5/CMDRECORD | 模块SHELL,级别5(notice),事件CMDRECORD |
(l)[11] | 日志序列号 |
Task=VT0 | 操作来源(VTY 0 终端) |
Ip=192.168.200.254 | 操作来源 IP |
User=admin | 操作用户 |
Command="shutdown" | 执行的命令 |
2.5 常见日志类型速查
| 模块/事件 | 含义 |
|---|---|
SHELL/5/CMDRECORD | 命令审计记录(谁在什么时候执行了什么命令) |
DS/4/DATASYNC_CFGCHANGE | 配置变更通知(每次修改配置触发) |
L2IF/6/PORT_DOWN | 端口状态变为 Down |
L2IF/6/PORT_UP | 端口状态变为 Up |
2.6 安全提醒
- Syslog 默认走 UDP,无认证、无加密、不保证送达。关键环境建议评估是否支持 TCP 传输(取决于 VRP 版本)。
- 限制来源 IP:在 rsyslog 侧配置
$AllowedSender,防止日志伪造或洪水攻击。 - 时间同步:建议先配置 NTP,确保交换机和日志服务器时间一致,否则日志时间戳难以用于追溯。
- 日志轮转:rsyslog 侧配置
logrotate,防止日志文件无限增长占满磁盘。
结语
UDP 514 管“日志”,UDP 161 管“管理”
协议本身不复杂,难的是排错时能分清“谁主动、往哪走、被谁拦”。SNMP 查询是管理站去往设备 161 的入方向流量,Trap 是设备去往网管 162 的出方向流量,Syslog 是设备去往服务器 514 的单向推送——方向不同,ACL、防火墙和排错思路就不同。建议在实验环境中先用display snmp-agent statistics和tcpdump把正常流量跑通,再上生产。