2024年4月27日发(作者:)
Snmpv3实现方案
为实现对snmpv3的支持,主要的代码修改及实现如下:
1 需要在falsh中增加保存交换机重启次数
修改后的数据结构修改:
typedef struct flashConfigArgTag
{
/*系统mac地址*/
char szMac[6];
/*出厂mac地址*/
char szDefaultMac[6];
/*管理员密码,为了四字节对齐增加了3个字节*/
char szAdminPassword[36];
/*保存OEM的版本号*/
int oemNumber;
ulong_t bootTime;
/*保留内容,由于将来扩充由bootrom处理的内容*/
char szReserved[248];
}FLASH_CONFIG;
2 将trap或inform源地址接口改为可配置。 原来3026为使用系统ip,如果是3526将采用
出口ip。现改为启动时,3526默认接口1, 如果配置接口无ip 采用出口ip,3026仍使用
系统ip
命令行实现:
指定发送Trap的源地址
snmp-server trap-source vlan-interface vlan_id
取消发送Trap的源地址
no snmp-server trap-source
mib实现:
mib节点:snmpTrapSource
3 实现des-cbc加密解密
在srcgbnplatformepiloguecommondesfakedesfake.c中加入实现des-cbc加密解密代码
加入函数略
4 实现将口令散列为密钥
在srcgbnplatformepiloguecommoncommonlibmd5.c中增加接口函数
bits8_t * passoword_to_md5_local_user_key(MD5_CTX *mdContext, bits8_t *password,
bits32_t passwordLen)
bits8_t *passoword_to_md5_user_key(MD5_CTX *mdContext, bits8_t *password, bits32_t
passwordLen)
在srcgbnplatformepiloguecommoncommonlibsha.c中增加接口函数
bits8_t * passoword_to_sha_local_user_key(SHA_CTX *sha_info, bits8_t *password, bits32_t
passwordLen)
bits8_t *passoword_to_sha_user_key(SHA_CTX *sha_info, bits8_t *password, bits32_t
passwordLen)
5 实现引擎配置
本地引擎的配置
命令行实现:
snmp-server engineID {local engineid-string }
只允许一个本地snmp引擎,初始化其值为
0
。只允许通过命令行对其
值进行修改设置。本地引擎不可被删除,只能修改其id值。
远程引擎的配置
命令行实现:
snmp-server engineID { remote ip-address [udp-port port-number] engineid-string}
允许配置最多32个远程snmp引擎以实现trap及inform报文的接收,初始时没有远程引擎。
不输入port-number将默认输入162
删除一个已有的远程引擎id
no snmp-server engineID remote ip-address [udp-port port-number] engineid-string
不输入port-number将默认输入162
Mib实现:
mib表snmpRemoteEngineTable
1 snmpRemoteTAddress
2 snmpRemoteEngineID
显示引擎配置
命令行实现:
show snmp engineID [local | remote]
同时去掉原代码中对不可识别远程引擎的自动添加
6 实现用户配置
命令行实现:
增加一个用户或更新其密钥
snmp-server user username [remote host [udp-port port]] [ auth { md5 | sha } { authpassword
{encrypt-authpassword authpassword | authpassword } | authkey {encrypt-authkey authkey |
authkey } } [ priv des { privpassword {encrypt-privpassword privpassword | privpassword } |
privkey {encrypt-privkey privkey | privkey } } ]
系统初始化时存在3个本地引擎的用户:
initialmd5(要求md5鉴别)
initialsha(要求sha鉴别)
initialnone(不要求鉴别)
删除一个用户
no snmp-server user username [remote host [udp-port port]]
显示用户
show snmp user
限制用户数最大为64
7 实现组配置
增加一个组
snmp-server group groupname { 1 | 2c | 3 [auth | noauth | priv]}] [read readview]
[write writeview] [notify notifyview] [context context-name]
系统初始化时存在组:
安全模型为v3,安全级别为鉴别的组initial
安全模型为v3,安全级别为鉴别加密的组initial
本地设备默认上下文为NULL
删除一个组
no snmp-server group groupname {1 | 2c | 3 [auth | noauth | priv]} [context context-name]
显示已存在组
show snmp group
限制组数最大为32
8 实现视图配置
命令行实现:
增加一个视图
snmp-server view view-name oid-tree { included | excluded }
系统初始化时存在视图:
internet
sysview
删除一个视图或视图中的一个子树
no snmp-server view view-name [ oid-tree ]
限制最大视图数为64
9 实现远程trap/inform主机配置
命令行实现:
增加发送trap或inform的远程主机
snmp-server host host-addr [version {1 | 2c | 3 [auth | noauth | priv]}]
[udp-port port] [ notify-type [ notifytype-list ] ]
删除发送trap或inform的远程主机
no snmp-server host ip-address community-string { 1 | 2c | 3 }
配置团体名及对应视图
snmp-server community community-name { ro | rw } { deny | permit } [ view view-name ]
不输入视图将默认添加视图internet
10 配置通告发送方式及是否能被发送
命令行实现:
允许发送指定的通告类型
snmp-server enable traps [
notificationtype-list
]
发送方式为trap
snmp-server enable informs [
notificationtype-list
]
发送方式为inform
不允许发送指定的通告类型
no snmp-server enable traps/informs [
notificationtype-list
]
11 配置安全名
命令行实现:
将一个安全名加入到一个组中
snmp-server security-name
securityname groupname { 1 | 2c | 3 }
将一个安全名从组中删除
no snmp-server security-name securityname groupname { 1 | 2c | 3 }
12 设置交换机重启次数
在调试模式下有如下命令:
snmp-server reboot-time
可设置交换机已重启次数,每次重启时将自动加1


发布评论