Pull to refresh

Network Documentation Tool — система для ведения документации сети

Reading time 5 min
Views 42K
Уважаемое хабрасообщество, позвольте представить вашему вниманию на мой взгляд очень полезный инструмент — Netdot (Network Documentation Tool). Поиск по Хабру не выдал ни одного упоминания этого интересного инструмента. Русскоязычные информационные ресурсы тоже обошли его стороной. Я надеюсь, что мой небольшой обзор станет полезным сетевым администраторам.


Почему мы выбрали Netdot

Вкратце опишу как я стал использовать этот инструмент. Передо мной и моими коллегами стояла довольно простая задача — выбрать инструмент для управления ip-адресами. Из таблицы на википедии мы отобрали несколько инструментов и попытались их сравнить. Ключевыми параметрами для отбора были: активное развитие, открытость, кроссплатформенность, наличие инструментов управления DNS-записями, графическое представление адресного пространства.
Каждая из опробованных систем обладает своими преимуществами и недостатками. Из всего опробованного мы остановились на Netdot. Он активно развивается, имеет богатый функционал, система открытая, написана на Perl (я программирую на Perl и мне проще настраивать что-либо под свои нужды), имеет довольно приятный и неперегруженный интерфейс.
Конечно, есть и некоторые недостатки, но для нас они не актуальны: пока что поддерживается только DNS сервер BIND (мы используем именно его, к тому же, никто не мешает написать свой скрипт синхронизации), графики топологии получаются довольно запутанными (я уверен, что со временем этот недочет устранят), не умеет строить L3-топологию, негибкая система управления правами.
Таким образом, в процессе поиска одного небольшого инструмента мы открыли для себя более масштабный и функциональный инструмент. Ведь это очень удобно — иметь всю информацию об инфраструктуре сети в одном месте, а также возможность управлять ею, создавать логические связи, управлять правами.
Мы также пробовали использовать систему NOC (Обзорная статья на Habrahabr). Ее функционал намного богаче, но нам она показалась менее удобной. Быть может, пройдет время и мы пересмотрим свои взгляды.

Возможности

Итак, Netdot — как видно из названия (Network Documentation Tool), данное программное обеспечение помогает вести документацию, а именно:
  • находить и опрашивать устройства с помощью SNMP;
  • строить и отображать L2 топологию используя различные источники: CDP, LLDP, STP, таблицы коммутации;
  • вести учет оборудования (Asset Management);
  • вести учет адресного пространства (IPAM);
  • управлять DNS-записями;
  • управлять DHCP;
  • вести учет кабельной инфраструктуры: комнаты, стойки, розетки, соединения внутри и между зданиями и прочее;
  • учет контактов (администраторы, операторы, подразделения, продавцы, поставщики и т.д.)
  • экспортировать настройки для внешних систем: Nagios, RANCID, Cacti, BIND, DHCPD и прочее.

Структура

Опишу немного общую структуру. Netdot состоит из следующих компонентов:
  1. База данных — в настоящий момент поддерживается MySQL и PostgreSQL. В идеале, возможно использовать любую базу, которая поддерживается Perl DBI.
  2. Библиотеки — код представляет собой иерархическую структуру объектно-ориентированных классов Perl.
  3. Пользовательский интерфейс — основан на фреймворке HTML::Mason.
  4. Скрипты командной строки — различные скрипты (импорт, экспорт, обновление конфигурации и пр.). Можно запускать их с некой периодичностью с помощью CRON.

Основные элементы в Netdot – это «устройства» (коммутаторы, маршрутизаторы, точки доступа, серверы). Следует отметить, что ПК, ноутбуки, мобильные телефоны и пр. не рассматриваются как «устройства». Они заносятся в базу из ARP-таблиц и таблиц коммутации устройств, и затем их можно отслеживать по IP или MAC адресам, а также видеть какому порту коммутатора они были в прошлом подключены.

Установка

Опишу вкратце процесс установки. В качестве операционной системы я использовал CentOS 6.4.
• Загружаем последнюю версию с сайта разработчиков:
~# wget netdot.uoregon.edu/pub/dists/netdot-1.0.4.tar.gz
• Или получаем последнюю версию из GitHub:
~# git clone git://github.com/cvicente/Netdot
• Распаковываем архив:
~# tar -zxC /usr/local/src -f netdot-1.0.4.tar.gz
• Устанавливаем зависимости:
~# cd /usr/local/src/netdot-1.0.4/
~# make rpm-install
Примечание 1. У меня активирован репозиторий RPMForge и при установке у меня появилась ошибка:
Transaction Check Error:
file /usr/share/man/man3/XML::SAX::Base.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch
file /usr/share/man/man3/XML::SAX::Exception.3pm.gz conflicts between attempted installs of perl-XML-SAX-0.96-7.el6.noarch and perl-XML-SAX-Base-1.04-1.el6.rf.noarch
Для ее исправления необходимо добавить в файл /etc/yum.repos.d/rpmforge.repo строчку:
exclude=perl-XML-SAX-Base

Примечание 2. Если у вас дистрибутив, основанный на Debian, то Netdisco MIBs должны устанавливаться автоматически. В моем случае их необходимо установить вручную:
~# yum install net-snmp net-snmp-utils
~# wget kent.dl.sourceforge.net/project/netdisco/netdisco-mibs/latest-snapshot/netdisco-mibs-snapshot.tar.gz
~# tar -zxC /usr/local/src -f netdisco-mibs-snapshot.tar.gz
~# mkdir /usr/local/netdisco
~# mv /usr/local/src/netdisco-mibs /usr/local/netdisco/mibs
~# cp /usr/local/netdisco/mibs/snmp.conf /etc/snmp/

• Устанавливаем недостающие Perl модули:
~# make installdeps
• Копируем файл конфигурации:
~# cp etc/Default.conf etc/Site.conf
• Редактируем настройки:
Параметры подключения к базе данных
DB_TYPE => 'mysql'
DB_DBA => 'root',
DB_DBA_PASSWORD => 'rootpass',
DB_HOST => 'localhost',
DB_DATABASE => 'netdot',
DB_NETDOT_USER => 'netdot_user',
DB_NETDOT_PASS => 'netdot_pass',
, где DB_DBA – пользователь имеющий право создавать базы, DB_DATABASE – имя создаваемой базы данных Netdot, DB_NETDOT_USER – пользователь базы данных Netdot.
Все остальные настройки можно отредактировать позже. Следует отметить, что в дальнейшем, при изменении конфигурации следует перезапустить Apache чтобы изменения вступили в силу.
• Инициируем базу данных:
~# make installdb
• Устанавливаем непосредственно Netdot
~# make install
• Настраиваем Apache:
~# cp /usr/local/netdot/etc/netdot_apache2_local.conf /etc/httpd/conf.d/
• После установки перезапускаем Apache:
~# service httpd restart

Установка закончена. Запускаем браузер и переходим по адресу http://ваше_имя_хоста.домен/netdot. Имя пользователя и пароль по умолчанию: “admin”.
Более детальное описание установки вы найдете в официальной документации — https://osl.uoregon.edu/redmine/projects/netdot/files

Интерфейс

Интерфейс утилиты довольно прост:



Устройства можно добавлять несколькими способами:
• Опросить устройства с помощью скрипта в командной строке:
~# /usr/local/netdot.bin/updatedevices.pl -H <адрес или имя хоста> -I -c <комьюнити> — извлечь информацию из одиночного хоста
~# /usr/local/netdot.bin/updatedevices.pl -B 192.168.1.0/24 -I -c <комьюнити> — просканировать подсеть и извлечь информацию
~# /usr/local/netdot.bin/updatedevices.pl -E <мя файла> — просканировать устройства, описанные в файле
Получить полный список параметров скрипта можно с помощью команды:
~# /usr/local/netdot.bin/updatedevices.pl -h
• Опросить или добавить устройство через веб-интерфейс:



В результате мы получим список устройств:



Для каждого устройства отображается довольно подробная информация:







Напоследок приведу пример отображения информации о доступном адресном пространстве.
Общий список подсетей:



Подсеть (subnet) — это то, что видно на интерфейсе маршрутизатора. Контейнер (container) может содержать подсети и другие контейнеры. Подсеть не может содержать другие подсети и контейнеры. Контейнер трансформируется в подсеть когда он появляется на одном из интерфейсов маршрутизатора.

Карта подсети:


IP-адрес может принимать одно из следующих состояний:
  • Свободный (available) — свободный адрес
  • Статический (static) — принадлежит интерфейсу устройства
  • Обнаруженный (discovered) — обнаружен в таблице ARP
  • Динамический (dynamic) — входит в диапазон, распределяемый по DHCP
  • Зарезервированный (reserved) — адреса, которые не могут быть назначены интерфейсам




Резюме

Netdot — довольно мощная и функциональная система. Конечно, в одной статье невозможно описать все ее возможности. Если статья вас заинтересовала, буду рад продолжить.
Сайт проекта:
https://osl.uoregon.edu/redmine/projects/netdot
Tags:
Hubs:
+17
Comments 16
Comments Comments 16

Articles