1 环境
ubuntu 16.04
2. 安装
sudo apt-get install snmpd snmp snmp-mibs-downloader
3. 配置
sudo vi /etc/snmp/snmpd.conf
(1)、配置允许网络访问
找到
【AGENT BEHAVIOUR】
,如下图所示:
修改如下:添加"
agentAddress udp:161
"配置项,如下图所示:
(2)、选择v2c SNMP协议的版本
找到
【ACTIVE MONITORING】
,如下图所示:
修改如下:
(3)、设置访问权限
找到【
ACCESS CONTROL
】如下图所示:
找到【
rocommunity public default -V systemonly
】,把 -V systemonly去掉,这是设置访问权限的,去掉后能访问全部,如下图所示:
(4)、保存snmpd.conf后退出
按下键盘左上角上的【
Esc
】键退出vi编辑器的编辑模式,然后输入命令":wq"保存文件并退出,如下图所示:
经过以上的4个步骤,针对SNMP的snmpd.conf文件的配置工作算是全部完成了。
4. 操作命令
(1)启动snmp服务
由于我们刚才修改SNMP的snmpd.conf文件,所以在启动snmp服务之前,先使用命令
停止服务:
sudo service snmpd stop
查看snmp的服务是否启动:
netstat -an |grep 161
启动snmp服务:
sudo service snmpd start
备注:
snmpd.conf 路径 /etc/snmp/snmpd.conf
mib 路径
执行命令 net-snmp-config --snmpconfpath
(2)、测试SNMP
MIB结构:
这里以.iso.org.dod.internet.mgmt.mib-2.system为例,其Oid为:.1.3.6.1.2.1.1。结构如下:
………system .1.3.6.1.2.1.1
|——sysDescr .1.3.6.1.2.1.1.1
|——sysObjectID .1.3.6.1.2.1.1.2
|——sysUpTimeInstance .1.3.6.1.2.1.1.3
|——sysContact.0 .1.3.6.1.2.1.1.4
|——sysName.0 .1.3.6.1.2.1.1.5
|——sysLocation.0 .1.3.6.1.2.1.1.6
获取本机的系统名字:
snmpget -v 2c -c public localhost SNMPv2-MIB::sysName.0
或者
snmpget -v 2c -c public 本机的ip地址 SNMPv2-MIB::sysName.0
或者
snmpget -v 2c -c public 本机的ip地址 1.3.6.1.2.1.1.5.0
执行以下的几个命令都可以获取到本机的系统名字:
snmpget -v 2c -c public localhost SNMPv2-MIB::
sysName.0
snmpget -v 2c -c public 127.0.0.1 SNMPv2-MIB::
sysName.0
snmpget -v 2c -c public 192.168.1.229 SNMPv2-MIB::
sysName.0
snmpget -v 2c -c public localhost .1.3.6.1.2.1.1.5.0
snmpget -v 2c -c public 127.0.0.1 .1.3.6.1.2.1.1.5.0
snmpget -v 2c -c public 192.168.1.229 .1.3.6.1.2.1.1.5.0
如下图所示:
能够正常返回系统的名字就说明SNMP安装配置成功了。也可以使用命令"snmpget --version"查看当前的安装版本号来验证是否安装成功,如果安装成功,则显示当前的安装版本号,如下图所示:
(3)、开启UDP 161端口的访问权限
完成snmpd的配置并且SNMP测试通过之后,要确保Linux的iptables防火墙对外开放了udp 161端口的访问权限,可以使用"
sudo iptables -L -
n"查看当前iptables规则,如下图所示:
可以看到,目前iptables防火墙并没有对外开放udp 161端口的访问权限,也就是说,此时外面的计算机是无法访问Linux下的SNMP服务的,可以使用"
sudo
iptables -I INPUT -p udp --dport 161 -j ACCEPT
"命令添加UDP 161端口到iptables防火墙中,然后执行"
sudo
iptables-save
"命令保存防火墙的更改,如下图所示: