nsupdate: динамический редактор зон DNS
nsupdate: динамический редактор зон DNS.
Содержание
1 Общая информация
- nsupdate используется для внесения изменений в динамический DNS без необходимости редактирования файлов зоны и перезапуска DNS-сервера.
2 Обновление зоны по ключу
2.1 Создание ключа
- Создадим ключ для зоны
example.com
:mkdir -p /etc/named/keys tsig-keygen -a HMAC-SHA256 example.com > /etc/named/keys/example.com.key
- Файл
/etc/named/keys/example.com.key
будет иметь следующий вид:key "example.com" { algorithm hmac-sha256; secret "KbWuOipDOQ80ZoCiSWxhJmulLmaWSNgw43v9KkUQZBY="; };
2.2 Настройка DNS Bind
- Настройка происходит в файле
/etc/named.conf
. - Ключ скопируем на хост с DNS-сервером (если это другой сервер).
- Поместим его в файл
/etc/named/keys/example.com.key
. - Подключим ключ:
include "/etc/named/keys/example.com.key";
- Разрешим обновление зон:
zone "example.com" IN { type master; file "local.zone.db"; allow-update { key "example.com"; }; }; zone "0.168.192.in-addr.arpa" IN { type master; file "192.168.0.db"; allow-update { key "example.com"; }; };
- Поправим права доступа:
chown -R named:named /var/named chown -R named:named /etc/named find /var/named -type d -exec chmod 770 {} \; find /var/named -type f -exec chmod 660 {} \;
3 Использование nsupdate
3.1 Вызов nsupdate
- При запуске
nsupdate
вы попадете в базовую среду командной строки для отправки команд обновления в DNS. - Опции запуска:
-v
: связь с DNS должна осуществляться по протоколу TCP, а не UDP;-k
: указывает на файл ключа.
- Вызов
nsupdate
:nsupdate -v -k /etc/named/keys/example.com.key
- Чтобы выйти из сеанса nsupdate, просто нажмите
CTRL-D
или введитеquit
и нажмитеRETURN
.
3.2 Удаление записи
- Безоговорочное удаление записи DNS (например, записи CNAME www.example.com).
- В командной строке
nsupdate
введите:> update delete www.example.com cname > send
- Когда вы вводите
send
и нажимаетеRETURN
, запрос на обновление создаётся, подписывается и отправляется на соответствующий DNS-сервер. - Если ключ был авторизован для выполнения запроса, DNS обновит свою базу данных, обновит файлы журнала, увеличит серийный номер записи SOA и отправит уведомление об изменении всем подчиненным DNS.
- Подчинённые устройства запустят AXFR (или IXFR) для сбора обновлений с главного DNS.
3.3 Несколько обновлений
- Чтобы сэкономить время и уменьшить DNS-трафик, можно одновременно отправить несколько запросов на обновление в одном пакете:
> update delete www.example.com cname > update delete www1.example.com a > update delete www2.example.com a > update delete www3.example.com a > send
- Все обновления в одном пакете
send
должны относиться к одной и той же зоне. - Особенности реализации: из-за фиксированного входного буфера более 2000 запросов за раз иногда не проходят.
3.4 Добавление записей
- Добавим записи
A
,CNAME
иPTR
. При добавлении необходимо указатьTTL
— время жизни записи в секундах:> update add www1.example.com 86400 a 172.16.1.1 > update add www.example.com 600 cname www1.example.com. > send > update add 1.1.16.172.in-addr.arpa 86400 ptr www1.example.com. > send
3.5 Неинтерактивное использование
- Неинтерактивный запуск: можно указать файл, содержащий пакет команд, или просто передать их по STDIN.
3.5.1 С помощью файла
- Например, создадим файл
batch.txt
:update delete www.example.com cname update delete www1.example.com a update delete www2.example.com a update delete www3.example.com a send
- Запустите его, выполнив:
nsupdate -v -k /etc/named/keys/example.com.key batch.txt
3.5.2 Удалить все записи A, начинающиеся с www, в зоне example.com
- Удалить все записи
A
, начинающиеся сwww
, в зонеexample.com
:( host -t a -l example.com | grep -i '^www' | awk '{ print "update delete "$1" a" }' ; echo send ) | nsupdate -v -k /etc/named/keys/example.com.key
3.5.3 Добавить хост
- Добавим хост
www.example.com
:echo -e "update add www.example.com 86400 a 192.168.1.1\nshow\nsend" | nsupdate -v -k /etc/named/keys/example.com.key
4 Материалы
- Скрипт для упрощения использования nsupdate
- Репозиторий: https://github.com/perryflynn/nsupdate-interactive