應用場景:
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、還是使用初始的使用者名,執行上文操作步驟解決。