监控和日志的网络协议

前言

  • 网络运维离不开两件事:监控 要知道设备现在怎么样,日志要知道设备过去发生了什么。前者靠管理站主动查询,后者靠设备主动上报。
  • 围绕这两个需求,常用协议有 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 对讲/门禁)

如何确认设备是否支持

  1. 在设备手册中搜索 "Syslog " 或 "logging host"
  2. 在 CLI / Web 界面查看是否有配置日志服务器地址和端口的选项
  3. 若端口默认为 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种安全级别

  1. noAuthNoPriv:不认证、不加密(仅用户名,测试用,不安全)
  2. authNoPriv:身份认证,报文不加密
  3. 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 statistics
shell 复制代码
sudo pacman -S net-snmp
snmpwalk -v 2c -c dumima 192.168.200.1 sysName
output 复制代码
SNMPv2-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 enable

1.5 通用排错验证步骤

重点!你当前故障排查流程

  1. display snmp-agent statistics
    • 发包测试后,收到报文计数不变:UDP161报文根本没到达交换机,网络拦截(ACL/接口traffic-filter)
    • 计数上涨:报文到达交换机,排查版本/团体字/v3用户名密码错误
  2. 检查接口ACL:display this interface Vlanif X,看是否存在 traffic-filter inbound acl,入方向ACL会拦截访问交换机CPU的UDP161报文
  3. 抓包确认
    • 网管电脑Wireshark:udp.port ==161,看查询报文是否发出
    • 交换机抓包:display capture-packet interface Vlanif X udp port 161,确认报文是否抵达交换机

1.6 常见坑总结

  1. SNMPv1不能使用Get-Bulk,只有v2c/v3支持。
  2. 所有版本的查询请求,都使用UDP 161端口。
  3. Trap使用UDP162,流量方向相反,容易出现单通(能收告警,不能查询)。
  4. SNMPv3修改engine-id会清空所有v3用户,不要随意修改。
  5. 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 使能信息中心
plaintext 复制代码
system-view
info-center enable

缺省情况下信息中心是开启的,但建议显式确认。

2.1.2 配置日志主机
plaintext 复制代码
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 配置日志输出规则(可选)
plaintext 复制代码
info-center source default channel 2 log level informational

缺省情况下,向 2 号通道(loghost 方向)输出日志的状态为 on,最低级别为 informational。如需调整过滤级别,可显式配置。

2.1.4 保存配置
plaintext 复制代码
save

2.2 rsyslog服务端配置

本次使用的发行版是ArchLinux

2.2.1. 安装 rsyslog
bash 复制代码
sudo pacman -S rsyslog
sudo systemctl enable --now rsyslog
2.2.2 启用 UDP514 端口监听

编辑 /etc/rsyslog.conf,确保以下行未被注释:

plaintext 复制代码
module(load="imudp")
input(type="imudp" port="514")

CentOS/RHEL 系旧版配置语法为 $ModLoad imudp + $UDPServerRun 514。Arch 上使用新版 module()/input() 语法。

2.2.3 限制可信来源(可选)
plaintext 复制代码
$AllowedSender UDP, 192.168.200.0/24

防止日志洪水或伪造攻击,$AllowedSender 必须放在输入模块加载之后、规则之前才生效。

2.2.4 重启 rsyslog
bash 复制代码
sudo systemctl restart rsyslog
2.2.5 查看日志文件

默认远程日志通常写入 /var/log/messages 或 /var/log/syslog:

bash 复制代码
sudo tail -f /var/log/messages

2.3 验证方法

方式一:服务器侧 tcpdump 抓包
bash 复制代码
sudo tcpdump -i any -n port 514 -A
sudo tcpdump -i any -n host 192.168.200.1 and port 514 -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 源端口。

方式二:交换机侧确认

检查日志主机配置:

plaintext 复制代码
display info-center

重点确认 Log host: 字段下是否列出了目标 IP。

查看本地日志缓冲区:

plaintext 复制代码
display logbuffer
display logbuffer brief

确认交换机本身在记录日志。

方式三:手动触发日志

选一个空闲端口,执行 shutdown 再 undo shutdown,会产生 PORT_DOWN / PORT_UP 日志:

plaintext 复制代码
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 安全提醒

  1. Syslog 默认走 UDP,无认证、无加密、不保证送达。关键环境建议评估是否支持 TCP 传输(取决于 VRP 版本)。
  2. 限制来源 IP :在 rsyslog 侧配置 $AllowedSender,防止日志伪造或洪水攻击。
  3. 时间同步:建议先配置 NTP,确保交换机和日志服务器时间一致,否则日志时间戳难以用于追溯。
  4. 日志轮转 :rsyslog 侧配置 logrotate,防止日志文件无限增长占满磁盘。

结语

UDP 514 管"日志",UDP 161 管"管理"

协议本身不复杂,难的是排错时能分清"谁主动、往哪走、被谁拦"。SNMP 查询是管理站去往设备 161 的入方向流量,Trap 是设备去往网管 162 的出方向流量,Syslog 是设备去往服务器 514 的单向推送------方向不同,ACL、防火墙和排错思路就不同。建议在实验环境中先用 display snmp-agent statistics 和 tcpdump 把正常流量跑通,再上生产。

相关推荐
为啥全要学1 小时前
PyTorch 中网络剪枝、梯度剪裁、梯度累积
网络·pytorch·剪枝
lupai1 小时前
SSL 证书落地应用与网站安全加固指南
网络协议·安全·ssl
wiliam_luky2 小时前
RTMP和RTSP+RTP+RTCP
网络
zxanz12 小时前
SSL 证书有哪些类型,怎么选择适合自己使用的?
网络·网络协议·ssl
通信数码研究院2 小时前
2026户外监控选什么?TOP5场景适配榜单:五类安装环境与产品选型参考
网络
谢亮_vipxieliang2 小时前
容器日志收集与管理:从 stdout 规范到 ELK/Loki 落地
运维·网络·人工智能·elk·docker·容器
QYRdata2 小时前
年复合增长率19.6% 数据隐私安全软件赛道领跑新兴科技
网络·科技·服务发现
半仙白桑3 小时前
内核篇第十三讲:system-V消息队列
java·linux·网络
XUEYUAN52123 小时前
路由跳数与地理位置校验:为什么 IP 归属地和实际出口位置不一致
网络·网络协议·tcp/ip