Обнаружил некорректное поведение.
Устройства:
System Description=Cisco IOS Software, s2t54 Software (s2t54-IPSERVICESK9-M), Version 15.0(1)SY2, RELEASE SOFTWARE (fc4) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2012 by Cisco Systems, Inc. Compiled Tue 10-Jul-12 13:35 by prod_rel_team
SNMP Object ID=.1.3.6.1.4.1.9.1.896)
На устройствах настроены адреса на подобии 192.168.0.1/32 на интерфейсах loopback.
Данные адреса доступны для netxms.
Отдельно существует этот же сегмент с маской /24.
При динамическом сканировании этой подсети создаются дубликаты данных устройств.
Причем при каждом сканировании.
Как можно бороться с подобным поведением?
А как выглядит список интерфейсов в NetXMS для этих устройств?
Да так же как и у остальных...
Особых отличий кроме интерфейсов lo - нет.
А можно его прислать? Возможно я все-таки увижу что-то подозрительное.
Выслал приватным сообщением результаты запросов:
select * from nodes N
left JOIN OBJECT_PROPERTIES O_N on O_N.OBJECT_ID = N.id
where N.PRIMARY_NAME in (':1',':2',':3');
select * from nodes N
left JOIN INTERFACES I on N.ID = I.NODE_ID
left JOIN OBJECT_PROPERTIES O_I on O_I.OBJECT_ID = I.id
where N.PRIMARY_NAME in (':1',':2',':3');
Происходит это так: NetXMS исключает loopback интерфейсы из топологии (что вроде как правильно). Loopback интерфейс определяется по адресу (из 127.0.0.0/8) или по типу (24 - software loopback). При дисковери проверяется, есть ли уже найденный IP адрес в системе. Поскольку loopback интерфейсы исключены из топологии, адрес не находится - создается новая нода. И так далее. Если таких устройств немного - можно добавить их адреса в фильтр discovery. Какой правильное решение - пока не знаю, возможно добавить конфигурационный параметр, который разрешит учет loopback в топологии если у них адреса не из 127.0.0.0/8?
По большому счету, данная ситуация - нарушение rfc.
Можно ли будет генерировать системный алерт на такое событие?
Девайсов не много, всего 30 или 40 маршрутизаторов. Буду добавлять в фильтр и ругатся с сетевиками...
Можно сделать такой configuration poll hook скрипт:
foreach(i : GetNodeInterfaces($node))
{
if ((i->ifType == 24) && !AddrInSubnet(i->ipAddr, "127.0.0.1", "255.0.0.0"))
{
PostEvent($node, "BAD_LOOPBACK_CONFIG", null, i->name);
}
}
Он будет посылать событие с именем BAD_LOOPBACK_CONFIG на каждый найденный интерфейс с типом 24 и адресом не из 127.0.0.0/8. Естественно, событие должно быть сначала создано. В %1 попадет имя интерфейса.