Если сеть на Windows-инфраструктуре и платить не жалко — SolarWinds NTM или UVexplorer.
Для домашней лаборатории или небольшого офиса — LanTopoLog, он ставится за пять минут и не требует базы данных.
Для мультивендорных сетей с контейнерами и виртуалками — Scanopy, у него отдельный L2-вид прямо из коробки.
1. Диагноз
Добавил свитч в сеть в 2019. Позже еще пять в 2021. Схему рисовал в Visio один раз, в день установки. С тех пор в стойке поменялось всё, а файл лежит на рабочем столе уволившегося админа. Знакомо?
Вот с этого обычно начинается любой инцидент, где нужна карта сети L2: физическая топология коммутаторов, портов и MAC-адресов, которую никто не поддерживает руками, потому что руками её поддерживать невозможно.
Разбираем шесть инструментов, которые строят эту карту автоматически по SNMP, CDP и LLDP. Каждый — с реальными плюсами и реальными местами, где он сломается. В конце — пошаговая установка одного из них, того, который проще всего оправдывает свою бесплатность.
Что получишь на выходе:
- Понимание, чем L2-карта отличается от обычной сетевой диаграммы
- Сравнение 6 программ по реальным критериям, а не по маркетингу
- Рабочую установку NetDisco с нуля на Ubuntu, с проверкой и типовыми граблями
- Краткие рецепты для остальных пяти вариантов
- Чеклист безопасности для SNMP, который часто игнорируют
- Что делать, если карта строится, но связи между свитчами не находятся
- Как выбрать инструмент под свой размер сети и бюджет
Займет минут 40 на чтение и часа полтора на первую рабочую установку. Нужен linux-хост или VM для NetDisco, доступ к SNMP на коммутаторах и терпение — LLDP на старых свитчах включается не всегда с первого раза.
2. Причины, почему у тебя до сих пор нет карты L2
| Причина | Почему она ломает документацию |
|---|---|
| Рисовали вручную один раз | Сеть меняется каждую неделю, диаграмма устаревает быстрее, чем её сохраняют в PDF |
| SNMP выключен «из соображений безопасности» | Без SNMP или SSH-коллектора никакой инструмент не увидит MAC-таблицы и CDP/LLDP соседей |
| Свитчи от трёх разных вендоров | Cisco говорит CDP, MikroTik и большинство остальных — только LLDP, и не каждый инструмент дружит с обоими сразу |
| Нет выделенного сервера под мониторинг | NetDisco и Scanopy требуют постоянно работающий хост, а не разовый скан с ноутбука |
| Легаси-свитчи 2010 года без LLDP вообще | Топология достраивается только по MAC-таблицам, и тут инструмент либо умеет угадывать связи, либо нет |
| Порт management VLAN закрыт ACL | SNMP-запросы просто не долетают до агента, скан висит и таймаутится |
Всё не так плохо как ты думаешь. Всё намного хуже: часть этих причин работает одновременно, и карта не строится не из-за одной проблемы, а из-за трёх сразу.
3. Рецепт: ставим NetDisco и строим первую карту L2
Беру NetDisco как основной рецепт не случайно. Это open source, живёт с 2003 года, до сих пор поддерживается, и делает ровно то, что нужно для L2: SNMP-опрос, сбор CDP/LLDP-соседей, MAC-таблицы, ARP, и всё это — в PostgreSQL с веб-мордой поверх.
Системные требования
| Компонент | Версия / требование |
|---|---|
| ОС | Ubuntu 22.04 / 24.04 или любой современный Linux |
| NetDisco | 2.079.x и выше (стабильная ветка) |
| PostgreSQL | 13 и выше |
| Perl | ставится автоматически через cpanm, руками не трогай |
| RAM | от 2 ГБ для сети до 200 устройств, от 4 ГБ для более крупной |
Таблица портов
| Порт | Протокол | Назначение | Доступен снаружи? |
|---|---|---|---|
| 161/UDP | SNMP | Опрос коммутаторов и роутеров | Нет, только из VLAN мониторинга |
| 162/UDP | SNMP Trap | Приём trap-уведомлений (опционально) | Нет |
| 5432/TCP | PostgreSQL | Хранилище данных NetDisco | Нет, только localhost или внутренняя сеть |
| 5000/TCP | HTTP | Веб-интерфейс NetDisco | По необходимости, лучше через VPN |
Архитектура
Подготовка: включаем SNMP и LLDP на коммутаторах
Без SNMP и LLDP/CDP на стороне свитча NetDisco видит только IP-адрес и всё. Сначала подготовь среду.
snmp-server community netdisco_ro RO
cdp run
cdp timer 30
cdp holdtime 90
/snmp community
add name=netdisco_ro read-access=yes write-access=no
/snmp
set enabled=yes contact="admin@it-apteka.com" location="server-room"
/ip neighbor discovery-settings
set discover-interface-list=all
Шаг 1. Ставим зависимости
Обновляем пакеты, ставим PostgreSQL и системные библиотеки, без которых Perl-модули не соберутся.
sudo apt update && sudo apt upgrade -y
sudo apt install -y postgresql postgresql-contrib build-essential libsnmp-dev snmp git curl
Результат: должна подняться служба postgresql, проверь командой systemctl status postgresql.
Шаг 2. Создаём пользователя и базу
NetDisco не работает под root. Заводим отдельного пользователя системы и отдельного пользователя PostgreSQL — это не только требование инструкции, это база безопасности.
sudo adduser netdisco
sudo -u postgres createuser -DRSP netdisco
sudo -u postgres createdb -O netdisco netdisco
При запросе пароля для роли netdisco задай надёжный, не дефолтный. Результат: команда psql -U netdisco -d netdisco -h localhost должна пустить внутрь без ошибок доступа.
Шаг 3. Устанавливаем NetDisco
Ставим через cpanm в домашнюю директорию пользователя netdisco, без засорения системных путей.
su - netdisco
curl -L http://cpanmin.us/ | perl - --notest --verbose --local-lib ~/perl5 App::Netdisco
mkdir ~/bin
ln -s ~/perl5/bin/{localenv,netdisco-*} ~/bin/
Установка займёт минут 15-20 — тянутся десятки Perl-модулей. Не перепутай: если процесс встал молча дольше пяти минут, это не зависание, а компиляция XS-модулей, жди.
Шаг 4. Конфигурация
mkdir ~/environments
cp ~/perl5/lib/perl5/auto/share/dist/App-Netdisco/environments/deployment.yml ~/environments/
nano ~/environments/deployment.yml
В файле задай подключение к базе и SNMP community, которую настроил на коммутаторах:
database:
name: netdisco
user: netdisco
pass: твой_пароль_из_шага_2
host: localhost
snmp:
community_ro:
- netdisco_ro
Шаг 5. Запускаем и добавляем сети на скан
~/bin/localenv netdisco-daemon start
~/bin/localenv netdisco-web
Результат: веб-интерфейс поднимется на порту 5000. Заходишь в раздел Admin → Device Discovery, добавляешь диапазон management-сети (например 10.10.0.0/24) как seed для сканирования.
Первый скан покажет соседей по CDP/LLDP и построит первичный граф. Полная карта с портами и MAC-адресами появится после второго-третьего цикла опроса — так работает discovery, он итеративный, не жди мгновенной идеальной картинки с первого запуска.
4. Проверка
Три команды, которыми убеждаешься что всё реально работает, а не просто крутится процесс.
~/bin/localenv netdisco-daemon status
Результат: статус worker’ов discovery, macsuck, arpnip — все должны быть «running» или «idle», не «dead».
sudo -u postgres psql -d netdisco -c "SELECT count(*) FROM device;"
Результат: число больше нуля — значит устройства реально попали в базу, а не просто пинговались.
tail -f ~/perl5/var/log/netdisco/daemon.log
Смотри на строки с SNMP timeout — если их много, community-строка не та или ACL режет трафик с хоста NetDisco.
5. Осложнения
| Ошибка | Причина | Решение |
|---|---|---|
| Устройство в базе, но связи с соседями нет | LLDP или CDP выключены на порту, либо порт trunk без разрешённого management VLAN | Включи LLDP/CDP на порту, проверь VLAN командой ниже |
| SNMP timeout на все устройства сразу | ACL на management VLAN режет UDP 161 с хоста NetDisco | Открой 161/UDP входящий с IP сервера NetDisco |
| Карта строится, но MAC-адреса не резолвятся в устройства | Не прошёл macsuck — воркер ещё не собрал forwarding-таблицы | Подожди следующий цикл или запусти вручную netdisco-macsuck |
| NetDisco не видит MikroTik в списке соседей | RouterOS до версии 7 отдаёт LLDP не по всем интерфейсам по умолчанию | Проверь discover-interface-list=all и обнови RouterOS |
| Веб-интерфейс не открывается после перезагрузки сервера | netdisco-web не добавлен в автозапуск, поднимался вручную | Заверни в systemd unit или добавь в cron @reboot |
show interface FastEthernet0/1 switchport
Ну и запросы у вас — сказала база данных и повисла, когда я в первый раз скормил ей сеть из 400 свитчей без правильно настроенного connection pool. Это не шутка ради шутки — реально проверяй max_connections в PostgreSQL, если сеть большая.
6. Альтернативы
NetDisco — не единственный вариант, и не всегда лучший под конкретную задачу. Вот остальные пять, коротко и по делу.
LanTopoLog
Shareware для Windows и Linux, топология строится бесплатно даже без покупки лицензии. Ставится за пять минут, не требует базы данных отдельно, работает с любым свитчем через SNMP. Показывает VLAN, STP, LACP прямо на карте. Берёшь, если сеть небольшая (до сотни портов) и разворачивать полноценный сервер под NetDisco избыточно. Официальная страница: lantopolog.com.
Scanopy
Более молодой инструмент, но L2-вид у него отдельный и честный — каждый свитч, порт и линк по SNMP+LLDP, плюс отдельные виды под L3, workloads и зависимости приложений. Self-hosted через Docker или облачная версия. Хорош, если у тебя не просто сеть, а сеть плюс контейнеры плюс виртуалки, и всё это хочется видеть в одном месте. Официальный сайт: scanopy.net.
SolarWinds Network Topology Mapper
Платный, Windows-инструмент, дискавери через ICMP, SNMP, WMI, CDP, VMware, Hyper-V. Умеет экспортировать карту прямо в Visio — если в компании уже завязана документация на Visio, это огромный плюс. Дороже остальных вариантов из списка, зато поддержка и compliance-отчёты (PCI, HIPAA) из коробки. Официальная страница: solarwinds.com/network-topology-mapper.
ManageEngine OpManager
Не чистый инструмент под L2-карты, а часть большой системы мониторинга. Строит Layer 2 Maps через CDP, LLDP, ARP, FDB, три вида отображения на выбор. Логично брать, если тебе всё равно нужен полноценный NMS, а карта L2 — это бонус, а не самоцель. Раздел про сетевые карты: manageengine.com/network-monitoring.
UVexplorer
Windows-инструмент, детальная топология вплоть до порта, включая беспроводную и виртуальную инфраструктуру. Экспорт в Visio, Lucidchart, PRTG. Важный момент на верификацию: UVnetworks (разработчик) в этом году куплен Paessler, компанией за PRTG — интеграция с PRTG теперь официальная и глубже, чем раньше. Официальный сайт: uvexplorer.com.
Сравнительная таблица
| Программа | Тип | Платформа | Когда выбирать |
|---|---|---|---|
| NetDisco | Open Source | Linux | Нужна точность, бюджет ноль, готов держать выделенный сервер |
| LanTopoLog | Shareware (топология бесплатна) | Windows / Linux | Малая сеть, нужен быстрый старт без сервера |
| Scanopy | Open Source + Cloud | Self-hosted / Cloud | Сеть плюс контейнеры плюс виртуалки в одном виде |
| SolarWinds NTM | Платный | Windows | Экспорт в Visio, compliance-отчётность, бюджет есть |
| ManageEngine OpManager | Платный | Windows / Linux | Нужен полноценный NMS, карта L2 как часть системы |
| UVexplorer | Платный | Windows | Уже используешь PRTG, нужна детализация вплоть до порта |
7. Профилактика
Карта L2 умирает не в момент построения, а через полгода без обслуживания. Три вещи, которые держат её живой.
- Мониторинг: настрой алерт на падение daemon-процесса NetDisco (или аналогичного worker’а), иначе карта тихо перестанет обновляться и никто не заметит
- Бэкап: дамп базы PostgreSQL раз в сутки, хранить минимум 14 дней — карта плюс история изменений топологии это ценность сама по себе
- Автозапуск: заверни демон и веб-интерфейс в systemd unit с Restart=on-failure, чтобы сервер пережил перезагрузку без ручного вмешательства
- Регулярный ресканинг: раз в 24 часа минимум, иначе новые свитчи появляются в сети раньше, чем в карте
- Отдельный SNMP-пользователь только на чтение, никогда не read-write, это не паранойя, это база
- Ограничение доступа к веб-интерфейсу карты по IP или VPN — карта топологии в чужих руках это готовая разведка сети
- Ревизия community-строк раз в квартал, особенно после увольнений в команде
8. FAQ
Почему карта L2 не строится после настройки NetDisco?
В 90% случаев проблема в SNMP: либо community-строка не совпадает, либо ACL режет UDP 161. Проверь логи daemon.log на timeout и убедись что порт открыт с хоста NetDisco в сторону management VLAN.
Как проверить что построение карты работает правильно?
Зайди в раздел Device Search и найди коммутатор по IP — если видны его порты, MAC-таблица и соседи по LLDP/CDP, discovery отработал корректно. Пустой список соседей при живом устройстве — сигнал проверить LLDP на порту.
Что делать если LLDP включён, а связи между свитчами всё равно нет?
Проверь что LLDP включён именно на trunk-порту между свитчами, а не только на access-портах. Часть вендоров по умолчанию отключает LLDP на аплинках ради безопасности — это нужно включать руками.
Чем NetDisco отличается от LanTopoLog?
NetDisco — серверное решение с базой данных, для сетей от полусотни устройств и выше, требует Linux-хост. LanTopoLog — десктопное приложение под Windows, ставится за минуты, но хуже масштабируется и не хранит историю изменений так глубоко.
9. Прогноз
Поставил NetDisco (или любой из альтернатив, если под твою сеть подошёл другой) — теперь карта L2 обновляется сама, раз в сутки, без твоего участия. Больше не нужно вспоминать, куда воткнут тот самый сервер в третьей стойке — набираешь MAC-адрес в поиске и получаешь порт коммутатора за пять секунд.
Дальше остаётся только не забыть про профилактику из раздела выше — мониторинг демона и бэкап базы. Карта, которая падает молча, хуже, чем её отсутствие: она создаёт ложное чувство, что документация есть, пока ты не полез разбираться в инциденте и не обнаружил, что данные не обновлялись три месяца.
Если не заработало — пиши в комментарии, разберёмся.
Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.
Подписаться на IT-Аптеку →


