其实所谓共同体,把它理解为一个密码就行了,前面我们在使用snmpwalk命令获取主机的信息时,有一个-c public的参数,其实就是指定了这个共同体为public,这是默认的配置,当然在实际中,我们不可能使用默认的值,因此需要把它修改一下。
修改配置文件/etc/snmp/snmpd.conf,大概在52行,将下面的两行:
rocommunity public default -V systemonly
rocommunity6 public default -V systemonly
修改为:
rocommunity xplinuxidc123 default -V systemonly
rocommunity6 xplinuxidc123 default -V systemonly
那么这里就把共同体修改为xplinuxidc123了,重启snmp服务,通过命令观察一下:
ubuntu@linuxidc:/etc/snmp$ snmpwalk -v 2c -c public localhost memTotalReal.0
Timeout: No Response from localhost
ubuntu@linuxidc:/etc/snmp$ snmpwalk -v 2c -c xplinuxidc123 localhost memTotalReal.0
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB
可以看到第一次获取信息不成功,因为我们已经更新了共同体,旧的public将不能再使用,否则认证失败就无法获取snmp提供的主机信息。
(4)允许远程主机访问
默认情况下,snmp服务只是对本地开启,是无法通过远程获取该主机的snmp信息的:
ubuntu@linuxidc:/etc/snmp$ sudo netstat -antup | grep 161
udp 0 0 127.0.0.1:161 0.0.0.0:* 11615/snmpd
可以看到,161端口只对本机开放(161端口号是snmp服务的端口号),我们需要修改一下,让snmp服务对外开放。
修改/etc/snmp/snmpd.conf配置文件,大概在15行,将下面一行注释掉:
agentAddress udp:127.0.0.1:161
同时去掉下面这一行的注释:
#agentAddress udp:161,udp6:[::1]:161
重新启动snmp服务,再通过命令观察:
ubuntu@linuxidc:/etc/snmp$ sudo netstat -antup | grep 161
udp 0 0 0.0.0.0:161 0.0.0.0:* 11656/snmpd
udp6 0 0 ::1:161 :::* 11656/snmpd
可以看到服务已经对外开放了,并且同时支持IPv4和IPv6。
这样之后,我们就能在远程主机进行测试。
--------------------------------------------------------------------------------
3.启动
其实前面的操作我们一直都启动着snmp服务,不过这里还是要确保一下:
ubuntu@linuxidc:~$ sudo service snmpd start
ubuntu@linuxidc:~$ sudo netstat -antup | grep 161
udp 0 0 0.0.0.0:161 0.0.0.0:* 11656/snmpd
udp6 0 0 ::1:161 :::* 11656/snmpd
--------------------------------------------------------------------------------
4.(远程)测试
在服务器本地我们已经做过测试,并且没有问题,下面我们要做的是在远程主机进行测试。
我另一台远程主机上的操作系统也是Ubuntu 15.04,并且已经安装了snmp客户端软件和mib库下载软件,同时配置了MIB库,下面就直接进行远程的测试:
xplinuxidc@linuxidc:~$ snmpwalk -v 2c -c xplinuxidc123 115.159.*.* memTotalSwap.0
UCD-SNMP-MIB::memTotalSwap.0 = INTEGER: 1950716 kB
xplinuxidc@linuxidc:~$ snmpwalk -v 2c -c xplinuxidc123 115.159.*.* memTotalReal.0
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8093524 kB
xplinuxidc@linuxidc:~$ snmpwalk -v 2c -c xplinuxidc123 115.159.*.* .1.3.6.1.4.1.2021.9.1.6.1
UCD-SNMP-MIB::dskTotal.1 = INTEGER: 8123832
可以看到,测试完全没有问题!并且获取的值和前面有服务器本地得到的一样。
当然,如果你发现还是获取不了的,那么你就需要考虑一下在服务器的主机上防火墙的设置有没有问题了。
--------------------------------------------------------------------------------
5.有什么用