Как установить указанный идентификатор движка для SNMP4J для отправки ловушки V3
Когда я хочу создать пользователя SNMPv3 в NMS, необходимо ввести идентификатор механизма, который является строкой идентификатора с сервера агента SNMP для каждого пользователя, поэтому я ввожу случайный идентификатор. Например:
createUser -e "0x80001370017f000101" "mytrapuser1" SHA "user1authpass" AES "user1encypass"
authUser log,execute,net mytrapuser1
И я могу успешно отправить ловушку с сервера агента на NMS, используя следующую команду:
snmptrap -v 3 -a SHA -A user1authpass -x AES -X user1encypass -l authPriv -u mytrapuser1 -e 0x80001370017f000101 {NMS-server-ip} 39 12.0.4.0
Теперь все выглядит хорошо.
Но когда я хочу использовать java SNMP4j для отправки прерывания с созданным пользователем mytrapuser1 на сервер агента, я не знаю, как указать идентификатор механизма запроса как 0x80001370017f000101, из-за которого прерывание было отправлено на агент, или запрошенный идентификатор механизма не может быть сопоставленным на NMS.
Мои вопросы:
1. Должен ли я установить указанный идентификатор движка для SNMP4j для отправки ловушки?
2. Если № 1 нет, как я могу заранее получить идентификатор механизма сервера агента, тогда я могу использовать его для создания пользователя на сервере NMS?
3. Если я что-то не так понимаю или ошибаюсь?
Может ли кто-нибудь помочь мне, большое спасибо.
1 ответ
OctetString использует другое строковое представление, чем NET-SNMP. Таким образом, вам нужно указать свой идентификатор двигателя следующим образом
OctetString.fromString("8000000001020304", 16)
Итак, вы должны сделать две вещи
snmp.getUSM().addUser(
new OctetString("username"),
OctetString.fromString("8000000001020304", 16),
new UsmUser(new OctetString("secname"), AuthSHA.ID, new OctetString("authphrase"),
PrivAES128.ID, new OctetString("privphrase"))
);
и
snmp.setLocalEngine(OctetString.fromString("8000000001020304", 16).getValue(), 0, 0);
твой
snmptrapd.conf
должно выглядеть так
createUser -e 0x8000000001020304 username SHA authphrase AES privphrase
authUser log,execute,net username
snmpTrapdAddr udp:1166
Хорошо, так что давайте посмотрим.
Как я видел это, установка выглядит следующим образом:
Приложение создает идентификатор механизма, который оно использует для отправки ловушек. Этот идентификатор механизма соответствует приложению и может использоваться в качестве идентификатора для вашего приложения.
Поэтому, чтобы ответить на вопрос № 1, я считаю, что вы действительно должны установить конкретный идентификатор движка. Который также отвечает на вопрос № 2.
Что касается рабочего процесса, я считаю, что это так:
- Ваше приложение получает идентификатор двигателя.
- NMS создает пользователя с идентификатором двигателя, который вы определили в своем приложении.
- Я бы предложил настроить идентификатор движка так, чтобы его можно было легко изменить без перекомпиляции всего проекта.
- Ваше приложение отправляет ловушку в NMS, которая проверит, что аутентификация, шифрование и идентификатор механизма соответствуют пользователю в NMS.
- Ловушка обрабатывается на NMS