Несколько месяцев назад я написал в поддержку Mikrotik по этой теме, и мне ответили, что это известная проблема, которая будет исправлена в будущих версиях. Недавно снова проверил — проблема всё ещё не исправлена. Так что у нас сейчас есть два варианта.
Первый вариант. Можно использовать роутер с устаревшей версией RouterOS 6.39 или ниже, где SNMP-поиск устройств в Dude работает нормально. Но если выберете этот путь, будьте осторожны — эта версия уязвима. У меня были случаи, когда друзья «взламывали» мой CHR просто чтобы меня подшутить. Mikrotik присылал письмо с предупреждением, но я забыл обновить — повезло, что это были друзья, так что спасибо им за урок! В общем, можно попробовать этот вариант, но обязательно нужно заблокировать публичный доступ по Winbox или настроить хороший ограниченный фаервол для роутера.
Второй вариант. Я сделал два скрипта как альтернативное решение этой проблемы. «Скрипт 1» — для PPPoE клиентов, берет информацию из «ppp active connections» — только параметры имени и адреса. «Скрипт 2» — для клиентов со статическим IP, берет данные из «ip neighbor» — identity и адреса. Затем оба скрипта сравнивают имена устройств Dude, которые обнаружены и названы по IP, с полученной информацией. Если есть совпадение — устройство в Dude переименовывается в соответствии с данными из скриптов. Ниже оставляю сами скрипты и пример, надеюсь, будет полезно — пользуйтесь на здоровье!
#СКРИПТ 1 ОТ MIGUEL FELIX - MERCADO WISP MEXICO
{
:foreach pppuser in=[/ppp active find service=pppoe] do={\
:foreach pppip in=[/ppp active get $pppuser address] do={\
:foreach pppname in=[/ppp active get $pppuser value-name=name] do={\
:foreach dudedev in=[/dude device find] do={\
:foreach dudedevname in=[/dude device get $dudedev value-name=name] do={\
if ($dudedevname = $pppip) do={\
[/dude device set $dudedev name=$pppname]
}
}
}
}
}
}
}
#СКРИПТ 2 ОТ MIGUEL FELIX - MERCADO WISP MEXICO
{
:foreach neighbor in=[/ip neighbor find] do={\
:foreach identity in=[/ip neighbor get $neighbor value-name=identity] do={\
:foreach neighboradd in=[/ip neighbor get $neighbor address] do={\
:foreach dudedev in=[/dude device find] do={\
:foreach dudedevname in=[/dude device get $dudedev value-name=name] do={\
if ($dudedevname = $neighboradd) do={\
[/dude device set $dudedev name=$identity]
}
}
}
}
}
}
}
#ПРИМЕР Спасибо!!!