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 Материалы


Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие