дубликаты. lo/32

Started by andrey--k, June 04, 2014, 04:03:40 PM

Previous topic - Next topic

andrey--k

Обнаружил некорректное поведение.
Устройства:
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.
При динамическом сканировании этой подсети создаются дубликаты данных устройств.
Причем при каждом сканировании.
Как можно бороться с подобным поведением?

Victor Kirhenshtein

А как выглядит список интерфейсов в NetXMS для этих устройств?

andrey--k

Да так же как и у остальных...
Особых отличий кроме интерфейсов lo - нет.

Victor Kirhenshtein

А можно его прислать? Возможно я все-таки увижу что-то подозрительное.

andrey--k

Выслал приватным сообщением результаты запросов:
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');

Victor Kirhenshtein

Происходит это так: NetXMS исключает loopback интерфейсы из топологии (что вроде как правильно). Loopback интерфейс определяется по адресу (из 127.0.0.0/8) или по типу (24 - software loopback). При дисковери проверяется, есть ли уже найденный IP адрес в системе. Поскольку loopback интерфейсы исключены из топологии, адрес не находится - создается новая нода. И так далее. Если таких устройств немного - можно добавить их адреса в фильтр discovery. Какой правильное решение - пока не знаю, возможно добавить конфигурационный параметр, который разрешит учет loopback в топологии если у них адреса не из 127.0.0.0/8?

andrey--k

По большому счету, данная ситуация - нарушение rfc.
Можно ли будет генерировать системный алерт на такое событие?
Девайсов не много, всего 30 или 40 маршрутизаторов. Буду добавлять в фильтр и ругатся с сетевиками...

Victor Kirhenshtein

Можно сделать такой 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 попадет имя интерфейса.