Построение карты сети L2: 6 программ, которые сами найдут все связи между коммутаторами

построение карты сети L2


Быстрый ответ
Если нужна карта L2 бесплатно и без танцев с бубном — ставь NetDisco, он собирает CDP/LLDP, MAC-таблицы и ARP по SNMP и рисует физическую топологию сам.
Если сеть на 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 ГБ для более крупной
Проверь свежую версию
На момент публикации актуальна ветка NetDisco 2.079.x. Перед установкой зайди на официальный репозиторий и проверь свежий релиз — Perl-проект живёт активно, версии выходят регулярно.

Таблица портов

Порт Протокол Назначение Доступен снаружи?
161/UDP SNMP Опрос коммутаторов и роутеров Нет, только из VLAN мониторинга
162/UDP SNMP Trap Приём trap-уведомлений (опционально) Нет
5432/TCP PostgreSQL Хранилище данных NetDisco Нет, только localhost или внутренняя сеть
5000/TCP HTTP Веб-интерфейс NetDisco По необходимости, лучше через VPN

Архитектура

NetDisco демон

SNMP опрос коммутаторов

CDP и LLDP соседи

MAC таблица портов

ARP таблица маршрутизатора

PostgreSQL база

Веб интерфейс карты L2

Подготовка: включаем SNMP и LLDP на коммутаторах

Без SNMP и LLDP/CDP на стороне свитча NetDisco видит только IP-адрес и всё. Сначала подготовь среду.

Cisco IOS
Включаем SNMP только для чтения и CDP на устройстве. Community-строку меняй на свою, дефолтную «public» не оставляй никогда.

snmp-server community netdisco_ro RO
cdp run
cdp timer 30
cdp holdtime 90
MikroTik RouterOS
Включаем LLDP-соседство (у MikroTik это часть Neighbor Discovery) и SNMP на чтение. С учётом что у тебя на блоге уже есть материал про ARP-таблицы MikroTik — эта часть логично идёт следом.

/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-строк раз в квартал, особенно после увольнений в команде
Из жизни
Капля никотина убивает лошадь. Одна открытая наружу community-строка SNMP с правами на запись — весь L2-сегмент, потому что через SNMP можно не только читать топологию, но и менять конфигурацию порта.

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-адрес в поиске и получаешь порт коммутатора за пять секунд.

Дальше остаётся только не забыть про профилактику из раздела выше — мониторинг демона и бэкап базы. Карта, которая падает молча, хуже, чем её отсутствие: она создаёт ложное чувство, что документация есть, пока ты не полез разбираться в инциденте и не обнаружил, что данные не обновлялись три месяца.

Если не заработало — пиши в комментарии, разберёмся.

Андрей А.
Author: Андрей А.

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх