linux对外提供snmp服务
之前都是使用net-snmp去snmpwalk交换机来获取信息,今天记录一下使用snmpd来支持别人snmpwalk自己。本文主要是记录snmpd.conf的使用,snmpd程序为net-snmp默认携带的程序。
一、配置文件引用关系
当我们存储配置的时候,往往会有基本部分(这部分配置后不再变动)和配置部分(根据需要会频繁变化),而snmpd.conf本身也是支持配置引用的:
includeFile 文件路径/被引用的配置文件名例如:includeFile /opt/etc/snmpd_custom.conf
二、配置文件配置说明
(1)配置监听
agentAddress udp:161,udp6:[::]:161解释:
(1)这句话表示监控所有ipv4和ipv6接口的udp端口161
(2)如果不想支持ipv6,就把udp6那部分去掉就可以了
(3)可以指定本地网口具体地址,例如:udp:127.0.0.1:161
(2)配置视图(View)
添加你想要支持的节点,分为两类,一类是标准的,一类是私有的view defview included .1.3.6.1.2.1.1.1
view defview included .1.3.6.1.2.1.1.2
view defview included .1.3.6.1.2.1.1.5
view defview included .1.3.6.1.2.1.1.6
view defview included .1.3.6.1.2.1.2.2.1.2
view defview included .1.3.6.1.2.1.2.2.1.3
view defview included .1.3.6.1.2.1.2.2.1.6
view defview included .1.3.6.1.2.1.2.2.1.7
view defview included .1.3.6.1.2.1.2.2.1.8
view defview included .1.3.6.1.2.1.2.2.1.10
view defview included .1.3.6.1.2.1.2.2.1.16
view defview included .1.3.6.1.4.1.6866.10.6.1
view defview included .1.3.6.1.4.1.6866.10.6.2
view defview included .1.3.6.1.4.1.6866.10.6.3.1
view defview included .1.3.6.1.4.1.6866.10.6.3.2
view defview included .1.3.6.1.4.1.6866.10.6.3.3
(3)配置默认值
默认配置我主要是修改的系统信息相关的(1)系统描述: sysdescr Test sysdescr
(2)主机名: sysName localhost
(3)物理位置: sysLocation Beijing, China
(4)厂商标识: sysObjectID 1.3.6.1.4.1.6866.10.6
(4)配置v1/v2c/v3(usm)
(1)v1和v2c的配置:IPv4配置:com2sec $(安全名字) $(限制IP) $(团体名)IPv6配置:com2sec6 $(安全名字) $(限制IP) $(团体名)解释$(限制IP):default表示允许所有,支持单IP或网段,用于限制可以访问的源地址范围,有多条可配置多条。例子:com2sec secname default publiccom2sec6 secname6 default public如果要配置v1:格式:group $(组名) v1 $(引用安全名)access $(引用组名) "" v1 noauth exact $(引用读视图) none none例子:group groupv1 v1 secnamegroup groupv1 v1 secname6access groupv1 "" v1 noauth exact defview none none如果要配置v2,与上述一样格式:group $(组名) v2c $(引用安全名)access $(引用组名) "" v2c noauth exact $(引用读视图) none none例子:group groupv2c v2c secnamegroup groupv2c v2c secname6access groupv2c "" v2c noauth exact defview none none注意,access里面,当配置v1和v2c的时候,一定是noauth,最后两个none,一个是写视图,一个是通知视图,这两个我没用到,所以是none(2)v3的配置格式:group $(组名) usm $(用户名)例子:group groupv3 usm testuser格式:access $(引用组名) "" usm $(noauth | auth | priv) exact $(引用读视图) none none例子:access groupv3 "" usm auth exact defview none none解释:noauth:不认证不加密auth:认证不加密priv:认证加密对于v3的认证类型、认证密码、加密类型、加密秘密需要在/var/net-snmp/snmpd.conf配置,配置完之后,启动服务,服务会基于配置文件生成加密配置格式:createUser $(引用用户名) 认证类型 认证密码 加密类型 加密密码例子:如果前面配置的用户是不认证不加密:createUser testuser如果前面配置的用户是认证不加密:createUser testuser MD5 pwd123456如果前面配置的用户是认证加密:createUser testuser MD5 pwd123456 AES pwd12345678认证类型和加密类型的支持看你的net-snmp版本,可以通过snmpwalk -h查看,我的是5.9.1版本:认证类型:MD5 | SHA | SHA-224 | SHA-256 | SHA-384 | SHA-512加密类型:DES | AES | AES-192 | AES-256
(5)配置拓展
我的拓展是采用二进制的,我用c写了一个程序,需要什么自己些什么就可以extend .1.3.6.1.2.1.1.1 myBinary /opt/bin/hf_snsvr sysdescr
extend .1.3.6.1.4.1.6866.10.6.1 myBinary /opt/bin/hf_snsvr sysuptime
extend .1.3.6.1.4.1.6866.10.6.2 myBinary /opt/bin/hf_snsvr sysload
extend .1.3.6.1.4.1.6866.10.6.3.1 myBinary /opt/bin/hf_snsvr cpucore
extend .1.3.6.1.4.1.6866.10.6.3.2 myBinary /opt/bin/hf_snsvr cpufreq
extend .1.3.6.1.4.1.6866.10.6.3.3 myBinary /opt/bin/hf_snsvr cpuload
三、服务启动说明
(1)启动服务:snmpd -p /opt/run/snmpd.pid -c /opt/etc/snmpd.conf
-p:指向pid文件的存储路径
-c:指向snmpd.conf配置的存储路径
(2)需要注意,如果用killall snmpd,程序会正常退出,如果程序运行着,修改了/var/net-snmp/里面的snmpd.conf文件,killall snmpd的时候,程序会重写这个文件,所以要么先退了snmpd程序,再修改/var/net-snmp下的配置,要么killall -9 snmpd
本篇文章是根据我自己的实际使用来记录的,没有去解释snmpd.conf里面的没条命令每个字段的具体含义。
感谢大家参考、欢迎大家提问、期待大家指正!谢谢~