在 Ubuntu 24.04 LTS 上搭建 SNMP (Simple Network Management Protocol) 服务,是进行服务器和网络设备监控的常见需求。本文将指导您完成从安装、配置到验证的全过程,涵盖基础内网监控与企业级安全部署两种典型场景。
一、基础安装与验证
1. 更新系统包(可选但推荐)
建议在安装新服务前更新软件包列表,以确保获取最新的版本和安全补丁。
sudo apt update && sudo apt upgrade -y
2. 安装 SNMP 核心组件
我们需要安装 snmpd 守护进程(服务端)以及 snmp 客户端工具包(用于测试和查询)。
sudo apt install -y snmpd snmp
安装完成后,snmpd 服务会自动启动。您可以通过以下命令检查其运行状态:
sudo systemctl status snmpd
正常的输出应显示 active (running)。
二、核心配置详解
SNMP 的主配置文件位于 /etc/snmp/snmpd.conf。默认配置仅允许本地访问且使用不安全的默认社区字符串,必须根据实际环境进行调整。
1. 备份原始配置
修改前进行备份是一个好习惯。
sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
2. 编辑配置文件
使用文本编辑器(如 vim 或 nano)打开配置文件:
sudo vim /etc/snmp/snmpd.conf
请根据您的监控需求,参考以下任一场景进行配置。
场景一:基础内网监控 (SNMPv2c)
此配置适用于小型机房或内部网络监控,通过社区字符串进行认证,配置简单。
# 1. 监听地址(默认监听所有IPv4和IPv6本地地址,若需限制可指定IP)
agentAddress udp:161,udp6:[::1]:161
# 2. 安全配置(务必修改默认的社区字符串‘public’)
# rocommunity: 只读权限,推荐用于监控;rwcommunity: 读写权限,慎用。
rocommunity MySecureCommString 192.168.0.0/24 # 仅允许指定网段访问
rocommunity MySecureCommString 127.0.0.1 # 允许本机访问
# 3. 定义系统标识信息(可选,便于识别)
sysLocation “数据中心 - 服务器机架A”
sysContact admin@example.com
# 4. 启用MIB视图以监控核心系统指标(如CPU、内存、磁盘)
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
view all included .1 # 允许访问所有MIB对象
# 5. 务必注释或删除原有的不安全默认配置行,例如:
# rocommunity public default -V systemonly
场景二:企业级安全部署 (SNMPv3,推荐)
对于生产环境,强烈建议使用 SNMPv3,它提供用户认证和数据加密,安全性远超 SNMPv2c。
# 1. 监听地址
agentAddress udp:161,udp6:[::1]:161
# 2. 创建SNMPv3用户(请替换为自己的强密码)
# 格式:createUser <用户名> MD5 <认证密码> DES <加密密码>
createUser snmpv3user MD5 “MyAuthPass123!” DES “MyPrivPass456!”
# 3. 为用户授权访问权限
# rouser: 只读用户;authPriv: 要求认证并加密传输。
rouser snmpv3user authPriv
# 4. 系统信息
sysLocation “企业生产环境”
sysContact netops@example.com
# 5. 定义MIB视图
view all included .1
3. 重启服务使配置生效
完成配置编辑后,重启 snmpd 服务以加载新配置,并确保其开机自启。
sudo systemctl restart snmpd
sudo systemctl enable snmpd
三、防火墙配置
Ubuntu系统 24.04 默认使用 ufw 管理防火墙。必须放行 SNMP 服务使用的 161/UDP 端口,否则远程主机无法访问。作为一项基础的运维技能,正确配置防火墙对服务可达性至关重要。
# 放行指定内网网段访问161/UDP端口(更安全)
sudo ufw allow from 192.168.0.0/24 to any port 161 proto udp
# 如需临时测试或特定场景(不推荐生产环境公网开放),可直接放行:
# sudo ufw allow 161/udp
# 重载防火墙规则使更改生效
sudo ufw reload
四、服务可用性验证
配置完成后,请务必进行测试,确保服务按预期工作。
1. 本地测试 (SNMPv2c 配置)
使用 snmpwalk 命令从本机查询系统基本信息。
snmpwalk -v 2c -c MySecureCommString 127.0.0.1 .1.3.6.1.2.1.1
成功执行将返回类似以下信息:
SNMPv2-MIB::sysDescr.0 = STRING: Linux ubuntu-server 6.8.0-xxx-generic ...
SNMPv2-MIB::sysLocation.0 = STRING: 数据中心 - 服务器机架A
2. 本地测试 (SNMPv3 配置)
使用更复杂的命令参数来测试 SNMPv3 的认证和加密功能。
snmpwalk -v 3 -u snmpv3user -a MD5 -A “MyAuthPass123!” -x DES -X “MyPrivPass456!” -l authPriv 127.0.0.1 .1.3.6.1.2.1.1
3. 远程测试
从网络中的另一台监控主机或工作站进行测试,这是最终的验证步骤。
# 测试 SNMPv2c
snmpwalk -v 2c -c MySecureCommString <你的Ubuntu服务器IP> .1.3.6.1.2.1.25.2.3.1
# 测试 SNMPv3
snmpwalk -v 3 -u snmpv3user -a MD5 -A “MyAuthPass123!” -x DES -X “MyPrivPass456!” -l authPriv <你的Ubuntu服务器IP> .1.3.6.1.2.1.1
如果远程测试成功,表明 SNMP 服务已在 Ubuntu 24.04 上完成安装和配置,可以接入Zabbix、Prometheus或PRTG等监控系统进行集中管理。