Собираем и настраиваем DNS сервер BUNDY (BIND10). Часть 1

от автора

Как то незаметно дошли руки все таки потрогать BIND10. Для начала немного истории о данном продукте.
Первый релиз BIND10 был представлен консорциумом ISC в феврале 2013. 17 апреля 2014 консорциум ISC выпустил последний релиз BIND10 1.2.0, после это передал все наработки сообществу независимых разработчиков. Данного решение было принято в связи с тем что у консорциума нет ресурсов для разработки двух альтернативных проектов. Поэтому они будут развивать только BIND9, а BIND10 полностью переходит в руки сообщества. Для уменьшения путаницы с BIND9, на GitHub был создан новый проект в который перенесли все наработки консорциума по BIND10 и данный проект получил название Bundy.

Ну что же, думаю можно приступать к эксперименту.

Создадим новый контейнер и подключаемся к нему:

$ docker run --name bundy --hostname=bundy -d -i -t sovicua:jessie $ docker attach bundy 

Как обычно обновляемся и устанавливаем нужные пакеты для сборки.

# apt-get update # apt-get upgrade # apt-get install git-core g++ make pkg-config python3-dev sqlite3 libsqlite3-dev libbotan1.10-dev liblog4cplus-dev libboost-dev python3-setproctitle dnsutils net-tools autoconf autoconf-archive automake libtool 

Получаем исходные коды проекта и выполняем сборку:

# git clone https://github.com/bundy-dns/bundy.git # cd bundy # autoreconf --install --warnings=none # ./configure --prefix=/usr --sysconfdir=/etc --without-werror --enable-experimental-resolver # make 

И получаем ошибку при сборке resolver…
Ошибку получаем из-за того что ветке master отсутствуют некоторые файлы, в частности в папки src/lib/xfr которая нужна для сборки resolver. Если собирать без этой опции то все собирается и работает. Но так как мне хотелось попробовать все, то мне пришлось загрузить исходные коды с другой ветки и собирать все снова.
Дополнительно включаем для сервера DHCP хранение базы в MySQL. В процессе инсталляции нам зададут несколько вопросов на которые думаю не сложно будет ответить.

# wget http://dev.mysql.com/get/mysql-apt-config_0.3.6-1debian8_all.deb # dpkg -i mysql-apt-config_0.3.6-1debian8_all.deb 

Выбираем самую последнюю версию (DRM — Developer milestone releases)

Configuring mysql-apt-config ----------------------------  MySQL APT Repo features MySQL Server along with a variety of MySQL components. You may select the appropriate product to choose the version that you wish to receive.  Once you are satisfied with the configuration then select last option 'Apply' to save the configuration. Advanced users can always change the configurations later, depending on their own needs.    1. Server  2. Connector-Python  3. Utilities  4. Apply  Which MySQL product do you wish to configure? 1  This configuration program will detect the current state of your system, check for any installed MySQL Server packages, and try to select the most appropriate version of MySQL Server to be installed. If you are not sure which version to choose for yourself, do not change the auto-selected version. Advanced users can always change the version later, depending on their own needs.    1. mysql-5.6  2. mysql-5.7-dmr  3. none  Which server version do you wish to receive? 2  MySQL APT Repo features MySQL Server along with a variety of MySQL components. You may select the appropriate product to choose the version that you wish to receive.  Once you are satisfied with the configuration then select last option 'Apply' to save the configuration. Advanced users can always change the configurations later, depending on their own needs.    1. Server  2. Connector-Python  3. Utilities  4. Apply  Which MySQL product do you wish to configure? 4 

Если вы решили использовать стабильную версию, то нужно выполнить команду:

# dpkg-reconfigure mysql-apt-config 

… и выбрать требуемую версию ПО которое вы хотите использовать.
После этого обновляем данные репозитория и устанавливаем MySQL сервер.

# apt-get update # apt-get install mysql-server libmysqlclient-dev libz-dev 

Запускаем сервер MySQL

# service mysql start .. [info] MySQL Community Server 5.7.7-rc is started. # service mysql status [info] MySQL Community Server 5.7.7-rc is running. 

Теперь мы готовы к повторной сборке, перед этим удаляем каталог с старыми исходниками.

# git clone --branch bundyfork --single-branch https://github.com/bundy-dns/bundy.git # cd bundy # autoreconf --install --warnings=none # ./configure --prefix=/usr --sysconfdir=/etc --without-werror --with-dhcp-mysql --enable-experimental-resolver  # make 

Итак, продолжим наши эксперименты.
После того как закончится сборка, выполняем инсталляцию:

# make install 

Подготовка к первому запуску.
По умолчанию сервисы DNS и DHCP не запускаются, их нужно отдельно активировать при помощи утилиты bundyctl. Перед этим нам нужно добавить пользователя от которого мы будем управлять сервисом.

# bundy-cmdctl-usermgr add root 

Так же стоит подготовить базу данных для DHCP сервера.

# mysql -u root -p mysql> CREATE DATABASE bundy; mysql> CONNECT bundy; mysql> SOURCE /usr/share/bundy/dhcpdb_create.mysql mysql> CREATE USER 'bundy'@'localhost' IDENTIFIED BY 'bundy'; mysql> GRANT ALL ON bundy.* TO 'bundy'@'localhost'; mysql> quit 

Ну вот и все мы готовы к запуску и посмотреть что же это за зверь такой этот BUNDY ☺

Поехали…
Из родительской системы выполняем команду запуска, для первого запуска можно даже добавить ключ —verbose

$ docker exec -i -t bundy /usr/sbin/bundy --verbose 

В контейнере подключаемся к сервису используя утилиту bundyctl которая позволяет нам управлять и настраивать все сервисы bundy.

# bundyctl Username: root Password: ["login success"] > help  usage: <module name> <command name> [param1 = value1 [, param2 = value2]] Type Tab character to get the hint of module/command/parameters. Type "help(? h)" for help on bundyctl. Type "<module_name> help" for help on the specific module. Type "<module_name> <command_name> help" for help on the specific command.  Available module names:     help        Get help for bundyctl.     config      Configuration commands.     execute     Execute a given set of commands     Stats       Stats daemon     tsig_keys   The TSIG keyring is stored here     Init        Init process     Logging     Logging options     data_sources             The sources of authoritative DNS data     Cmdctl      Interface for command and control     Msgq        The message queue > 

Как я и говорил выше, по умолчанию сервисы DNS и DHCP (и другие) не запущены, для их инициализации есть готовый скрип который выполняет инициализацию авторизированного DNS сервер. Итак, для начала посмотрим какие у нас процессы запущены до начала инициализации.

> Init show_processes [     [         18493,         "Socket creator",         null     ],     [         18494,         "msgq",         null     ],     [         18496,         "cfgmgr",         "ConfigManager"     ],     [         18498,         "bundy-stats",         "Stats"     ],     [         18499,         "bundy-cmdctl",         "Cmdctl"     ] ] 

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

> execute init_authoritative_server adding Authoritative server component adding Xfrin component adding Xfrout component adding Zone Manager component Components added. Please enter "config commit" to finalize initial setup and run the components. > config commit 

> Init show_processes [     [         18493,         "Socket creator",         null     ],     [         18494,         "msgq",         null     ],     [         18496,         "cfgmgr",         "ConfigManager"     ],     [         18498,         "bundy-stats",         "Stats"     ],     [         18499,         "bundy-cmdctl",         "Cmdctl"     ],     [         18559,         "bundy-xfrout",         "Xfrout"     ],     [         18560,         "bundy-xfrin",         "Xfrin"     ],     [         18561,         "bundy-zonemgr",         "Zonemgr"     ],     [         18562,         "bundy-auth",         "Auth"     ] ] 

Думаю, что разница заметна 🙂 У нас появились 4 новых процессов:
— bundy-xfrout
— bundy-xfrin
— bundy-zonemgr
— bundy-auth

Проверим работу DNS сервера через запрос его версии.

# dig @127.0.0.1 -c CH -t TXT version.bind  ; <<>> DiG 9.9.5-9-Debian <<>> @127.0.0.1 -c CH -t TXT version.bind ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27337 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; WARNING: recursion requested but not available  ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;version.bind.   CH TXT  ;; ANSWER SECTION: version.bind.  0 CH TXT "bundy 1.2.0"  ;; AUTHORITY SECTION: bind.   0 CH NS bind.  ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Fri Jul 03 07:39:41 UTC 2015 ;; MSG SIZE  rcvd: 79 

Ну что же нас можно поздравить — не взирая на всякие препятствия при компиляции, мы смогли запустить и инициализировать авторизированный DNS сервер BUNDY|BIND10. Думаю что на сегодня достаточно буковок.

В следующей части мы немного разберемся с модулями которые входят в bundy и кто за что отвечает, а так же продолжим настройку DHCP и других модулей.

ссылка на оригинал статьи http://habrahabr.ru/post/261719/


Комментарии

Добавить комментарий

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