- PVSM.RU - https://www.pvsm.ru -

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

Уважаемое читатели, позвольте представить вашему вниманию на мой взгляд очень полезный инструмент — Netdot [1] (Network Documentation Tool). Поиск по Хабру не выдал ни одного упоминания этого интересного инструмента. Русскоязычные информационные ресурсы тоже обошли его стороной. Я надеюсь, что мой небольшой обзор станет полезным сетевым администраторам.

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

Вкратце опишу как я стал использовать этот инструмент. Передо мной и моими коллегами стояла довольно простая задача — выбрать инструмент для управления ip-адресами. Из таблицы на википедии [2] мы отобрали несколько инструментов и попытались их сравнить. Ключевыми параметрами для отбора были: активное развитие, открытость, кроссплатформенность, наличие инструментов управления DNS-записями, графическое представление адресного пространства.
Каждая из опробованных систем обладает своими преимуществами и недостатками. Из всего опробованного мы остановились на Netdot. Он активно развивается, имеет богатый функционал, система открытая, написана на Perl (я программирую на Perl и мне проще настраивать что-либо под свои нужды), имеет довольно приятный и неперегруженный интерфейс.
Конечно, есть и некоторые недостатки, но для нас они не актуальны: пока что поддерживается только DNS сервер BIND (мы используем именно его, к тому же, никто не мешает написать свой скрипт синхронизации), графики топологии получаются довольно запутанными (я уверен, что со временем этот недочет устранят), не умеет строить L3-топологию, негибкая система управления правами.
Таким образом, в процессе поиска одного небольшого инструмента мы открыли для себя более масштабный и функциональный инструмент. Ведь это очень удобно — иметь всю информацию об инфраструктуре сети в одном месте, а также возможность управлять ею, создавать логические связи, управлять правами.
Мы также пробовали использовать систему NOC [3] (Обзорная статья [4] на 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 http://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 http://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 [5]. Имя пользователя и пароль по умолчанию: “admin”.
Более детальное описание установки вы найдете в официальной документации — https://osl.uoregon.edu/redmine/projects/netdot/files [6]

Интерфейс

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

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

Устройства можно добавлять несколькими способами:
• Опросить устройства с помощью скрипта в командной строке:
~# /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
• Опросить или добавить устройство через веб-интерфейс:

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

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

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

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

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

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

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

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

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

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

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

IP-адрес может принимать одно из следующих состояний:

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

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

Резюме

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

Автор: banzayats

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/network/38071

Ссылки в тексте:

[1] Netdot: https://osl.uoregon.edu/redmine/projects/netdot

[2] таблицы на википедии: http://en.wikipedia.org/wiki/IP_address_management

[3] NOC: http://redmine.nocproject.org/

[4] Обзорная статья: http://habrahabr.ru/post/125034

[5] http://ваше_имя_хоста.домен/netdot: #

[6] https://osl.uoregon.edu/redmine/projects/netdot/files: https://osl.uoregon.edu/redmine/projects/netdot/files

[7] Источник: http://habrahabr.ru/post/185660/