应用场景:
Linux系统中,配置PKI NE的snmp协议,验证snmp v3能从网元walk回数据。
配置文件:
vi /usr/local/certifier/conf/engine.conf
把security-name配置为你设置的用户名;
security-passphrase密码通过命令把明文变为密文(在PKI网元上执行该命令),配置到上述文件中:
[[email protected] bin]# echo 明文密码 | bin/ssh-encrypt -E -s -x -c aes-cbc
e.g.:
[[email protected] ~]# echo testtest | /usr/local/certifier/bin/ssh-encrypt -E -s -x -c aes-cbc
6b1c33cb6daa9834ce6e2dd57100495b
[[email protected] ~]#
发现问题:
工作中,在Linux上执行SNMP V3的命令:
[[email protected] bin]# snmpwalk -v 3 -u testtest -l authPriv -a MD5 -A testtest -x DES -X testtest 10.68.179.158
snmpwalk: Unknown user name (Sub-id not found: (top) -> sysDescr)
反复使用创建用户的命令,snmpwalk返回结果一样。
找到原因:
找到snmpd.conf文件,如下执行:
[[email protected] net-snmp]# locate snmpd.conf
/etc/snmp/snmpd.conf
/etc/snmp/snmpd.conf.gq20140224
/etc/snmp/snmpd.conf.sj20140221
/usr/local/net-snmp/share/snmp/snmpd.conf
/usr/share/man/man5/snmpd.conf.5.gz
/var/lib/net-snmp/snmpd.conf
[[email protected] net-snmp]#
/var/lib/net-snmp/snmpd.conf这个文件里面应该保存解析后的账号信息,但是由于读写有问题,导致文件里面一直保存的最原始的信息,没有转换。所以每次snmpwalk会提示找不到用户Unknown user name。信息如下:
[[email protected] net-snmp]# cat /var/lib/net-snmp/snmpd.conf
createUser testtest MD5 "testtest" DES testtest
解决办法:
1、启动snmpd进程
[[email protected] ~]# service snmpd restart
2、删除/var/lib/net-snmp/snmpd.conf文件
[[email protected] ~]# rm /var/lib/net-snmp/snmpd.conf
3、关闭snmpd进程,检查是否自动生成/var/lib/net-snmp/snmpd.conf文件,并且权限为600
[[email protected] ~]# service snmpd stop
关闭snmpd成功,没有/var/lib/net-snmp/snmpd.conf文件自动生成。该文件应该会在第4步执行创建用户命令后才生成。
4、创建snmp用户
[[email protected] bin]# locate net-snmp*
/usr/bin/net-snmp-create-v3-user
/usr/share/man/man1/net-snmp-create-v3-user.1.gz
使用/usr/bin/net-snmp-create-v3-user脚本执行以下命令(在789node04上执行):
/usr/bin/net-snmp-create-v3-user -A username -X password -a MD5 -x DES username
e.g.:
/usr/bin/net-snmp-create-v3-user -A testtest -X testtest -a MD5 -x DES testtest
5、删除/etc/snmp/snmpd.conf里多余的rwuser
6、启动snmp,检查message是否打开/var/lib/net-snmp/snmpd.conf失败的信息,如果没有就基本成功了,可以在看看/var/lib/net-snmp/snmpd.conf里面的信息是否被编译。
[[email protected] ~]# service snmpd start
[[email protected] ~]# vi /var/lib/net-snmp/snmpd.conf
engineBoots 18
oldEngineID 0x80001f8804636572746966696572
若是被编译,那么snmpd.conf文件的最后就会出现以上内容。
7、使用snmpwalk测试,是否可以抓取信息。
[[email protected] ~]# snmpwalk -v 3 -u testtest -l authPriv -a MD5 -A testtest -x DES -X testtest 10.68.179.158
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (827528) 2:17:55.28
SNMPv2-MIB::sysContact.0 = STRING: syscoco
SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain
SNMPv2-MIB::sysLocation.0 = STRING: sysloco
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD-MIB::snmpMPDMIBObjects.3.1.1
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
出现以上信息就是可以正常抓取信息了。
SNMP V3常见问题Troubleshooting:
1. snmpwalk: Timeout (Sub-id not found: (top) -> sysDescr)
通常使用SNMP协议版本v3时会遇到这类错误,可能的原因有:
a、IP地址访问不到?
您可以使用 ping, traceroute/tracert 测试该IP。
b、端口访问不到?
您可以 netstat 查看该端口是否正常监听, Linux下 ps 查看 snmpd 进程是否允许, windows 下看服务是否开启。
c、防火墙没有开放该端口?
尝试关掉防火墙试试,如果关掉防火墙能成功,则说明是防火墙的问题,具体防火墙配置的方法请查询防火墙相关资料。
2. snmpwalk: Authentication failure (incorrect password, community or key) (Sub-id not found: (top) -> sysDescr)
通常使用SNMP协议版本v3时会遇到这类错误,可能的原因有:
a、密码填写错误?
b、加密方法 (MD5/SHA) 填写错误?
3. snmpwalk: Unknown user name (Sub-id not found: (top) -> sysDescr)
通常使用SNMP协议版本v3时会遇到这类错误,可能的原因有:
a、用户名填写错误
b、还是使用初始的用户名,执行上文操作步骤解决。