Opened 7 years ago
Closed 7 years ago
#262 closed баг (fixed)
Не отправляются SNMP TRAP'ы
Reported by: | alx | Owned by: | alx |
---|---|---|---|
Priority: | средний | Milestone: | 1 очередь |
Component: | swd | Keywords: | |
Cc: |
Description
Обнаружено странное явление.
Есть блок, в конфиге которого сконфигурирован трапсинк test версии 1, хост kolez.com. В веб-интерфейсе заходим в свойства этого трапсинка и меняем версию на 2c, имя хоста на 192.168.0.75. после этого тестовый TRAP на хост 192.168.0.75 не приходит. Также не приходят TRAP'ы, если активировать трапсинк и сделать аварию.
Если удалить трапсинк и создать новый, в котором сразу записать v2c и хост 192.168.0.75, тестовые TRAP'ы приходят.
Change History (4)
comment:1 by , 7 years ago
comment:2 by , 7 years ago
Причина выяснена. Так как у kolez.com есть и IPv4, и IPv6 адреса, то поле ipv6
трапсинка заполнено. При смене имени хоста на 192.168.0.75 новое имя ресолвится только в адрес IPv4, а поле ipv6
так и продолжает содержать адрес предыдущего хоста. А так как IPv6 имеет приоритет перед IPv4, TRAP'ы отправляются по адресу IPv6 на старый хост.
comment:3 by , 7 years ago
Как показало расследование, в случае, если вместо имени хоста указывается IP адрес, даже если семейство адреса не соответствует семейству запроса (запрашиваем адрес IPv6, а вместо имени хоста указываем адрес IPv4), то callback-функция вызывается с успешным статусом, но struct hostent
при этом содержит ответ с семейством AF_INET
вместо ожидаемого AF_INET6
.
В результате всего этого полученный адрес записывается в trapsink->ipv4
, а в trapsink->ipv6
остается старое значение, которое и продолжает использоваться.
Проверка показала, что после изменения имени хоста тестовые TRAP'ы продолжают отправляться по старому IP адресу (то есть в данном случае на kolez.com).