Налаштування dynamic dns на базі bind9 і nsupdate, stepanoff home network

Налаштування dynamic dns на базі bind9 і nsupdate, stepanoff home network

На обох машинах повинен бути встановлений bind9.

dnssec-keygen -a hmac-md5 -b 128 -n USER dnsupdater

Перейдемо до налаштування сервера, в директорії з файлами bind9 (зазвичай це або / etc / bind. / Etc / namedb. / Var / named)

Я налаштовував сервер на Лінуксі, там це була директорія / etc / bind, я буду використовувати її в цьому керівництві.

Створіть файл dnskeys.conf в директорії / etc / bind, потім впишіть туди дані про наш ключі, створеному на машині клієнта

dnsupdater. IN KEY 0 3 157 YmEIxrGd1w1dT6Kyo9CQtQ ==

Так виглядає наш ключ, нам потрібна тільки частина після цифри 157, а саме YmEIxrGd1w1dT6Kyo9CQtQ == (вона щоразу нова, у вас буде інша)

У файл /etc/bind/dnskeys.conf впишіть наступне (замініть ім'я ключа і secret на ваші)

key dnsupdater <
algorithm hmac-md5;
secret «YmEIxrGd1w1dT6Kyo9CQtQ ==«;
>;

Потім в файл /etc/bind/named.conf впишіть в самий кінець файлу

Після цього виконайте команду rndc reload для застосування налаштувань.

Невеликий відступ, якщо у вас встановлена ​​операційна система Ubuntu або Debian, або у вас в системі використовується apparmor то вам необхідно переналаштувати його, так як користувач від якого працює DNS сервер bind9 не має права запису в каталог з файлами конфігурації / etc / bind. а віддалене оновлення зон якраз вимагає можливості запису в цей каталог від користувача bind. Виправити це можна відредагувавши конфігураційний файл apparmor для обмеження bind, знайти його можна в директорії /etc/apparmor.d/. ім'я файлу usr.sbin.named. Відредагуйте файл як показано в прикладі нижче

Значення за замовчуванням:
/ Etc / bind / ** r,

Повинно бути:
/ Etc / bind / ** rw,

Після цього перезапустіть apparmor і bind9.

Тепер сервер готовий до віддаленого оновлення зон, перейдемо до кінцевої налаштування клієнта.

Створимо простий скрипт який буде парсити файл з командами для поновлення зон, в ньому нам знадобиться шлях до другого ключа, з розширенням .private. ви можете покласти його в директорію / etc / bind. і не забудьте змінити ім'я ключа в скрипті на ваше.

#! / Bin / bash
/ Usr / bin / nsupdate -k /etc/bind/Kdnsupdater.+157+31204.private -v $ 1

Збережемо даний скрипт з ім'ям zonechange.sh і зробимо його виконуваним командою chmod + x zoneupdate.sh

server ns.example.com
zone 0.168.192.in-addr.arpa
update delete 15.0.168.192.in-addr.arpa. 10800 IN PTR somedomain.example.com.
update add 1.0.168.192.in-addr.arpa. 10800 IN PTR somedomain123.example.com.
send
zone example.com
update add test.example.com. 10800 IN A 192.168.0.254
send

Як бачите, необхідно записи для зворотного зони і піддоменів вказувати повністю, і перед зміною зони відправляти оновлення для попередньої. Так само необхідно вказувати TTL для кожного запису. Збережіть файл з ім'ям changes. або будь-яким вам зручним, в директорії зі скриптом zonechange.sh.

Перевіримо працездатність скрипта, виконайте наведену нижче команду для відправки запиту на оновлення наших зон на сервер

Якщо все пройшло успішно ніякого висновку не піде, на сервері в логах можна буде побачити подробиці зміни зон. У мене на сервері записи в файлах внесені віддалено з'являються тільки після рестарту bind9, але працювати починають відразу після відправки поновлення з клієнта, так що перевіряйте роботу оновлення не по наявності запису в файлах зон, а за запитом цього запису з сервера за допомогою nslookup або dig.

Тепер можна перейти до налаштування поновлення записів зон за допомогою dhcp сервера. Налаштування DNS ми міняти не будемо, вони описані вище, тому ми будемо користуватися ними. Ключі так само візьмемо із прикладів вище. Налаштування описана для DHCP сервера isc dhcp3

У глобальні опції DHCP сервера внесіть наступні правки (файл конфігурації dhcpd.conf)

Зверніть увагу, записи про зонах і ключі вносяться так само як в конфіги bind, але БЕЗ лапок, в іншому випадку у вас буде помилка синтаксису.

Потім йде приклад для групи хостів, або секції group в dhcpd.conf