Динамические зоны на сервере имен DNS

Команда named поддерживает динамическое обновление информации. Необходимо настроить файлы конфигурации и базы данных named таким образом, чтобы клиенты могли выполнять обновление. Область может быть задана как динамическая или как статическая. По умолчанию применяются статические области.

Для создания динамической области нужно добавить ключевое слово allow-update в раздел zone файла /etc/named.conf. Вместе с ключевым словом allow-update задается список IP-адресов хостов, которым разрешено отправлять запросы на обновление. Более подробная информация и пример файла conf содержится в разделе Формат файла named.conf для TCP/IP книги Справочник по файлам . В приведенном ниже примере обновлять динамическую область разрешено всем хостам:

zone "abc.aus.century.com" IN {
    type master;
    file "named.abc.data";
    allow-update { any; };
};

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

Флаг Описание
Unsecured Всем разрешено в любой момент обновлять любую информацию в области.
Внимание: Не рекомендуется использовать этот режим. Применение данного режима может привести к потере данных, их перехвату и неполадкам в работе пользователей. Рекомендуется задать четкий список IP-адресов хостов, которым разрешено обновлять незащищенную область.
Controlled Разрешено создание новой и замена существующей информации. Это, вероятно, самый удобный режим для защищенной среды передачи. В данном режиме все поступающие обновления должны снабжаться меткой времени поступления и зашифрованной подписью.
Presecured Все обновления существующей информации должны заменяться аналогичной информацией. Не позволяет создавать новую информацию. В данном режиме все поступающие обновления должны снабжаться меткой времени поступления и зашифрованной подписью.

По умолчанию для динамических областей применяется незащищенный режим (unsecured). Для применения другого режима укажите слово controlled or presecured после ключевого слова update-security в разделе zone файла /etc/named.conf. Это слово сообщает серверу named , какой уровень защиты он должен использовать при работе с этой областью. Например:

zone "abc.aus.century.com" IN {
    type master;
    file "named.abc.data";
    allow-update { any; };
    update-security controlled;
};

После выбора режима нужно изменить существующие файлы данных в соответствии с текущим уровнем защиты. В незащищенном режиме файлы данных используются "как есть". В управляемом режиме и режиме с предварительной защитой для каждого хоста области необходимо создать пару ключей главного сервера и хоста. Это можно сделать с помощью команды nsupdate с параметром -g. Данная команда создает пару ключей (личный ключ и общий ключ). Эти ключи используются для создания идентификационных меток обновления. После создания всех ключей для списка имен областей, добавьте их в файл данных. Запись KEY имеет следующий формат:

Индекс    ttl    Класс     Тип     Ключевые-флаги     Протокол     Алгоритм     Ключевые-данные

где:

Флаг Описание
Индекс Определяет имя, используемое для обращения к данным в области.
ttl Задает для этих данных время хранения в кэше (TTL). Это необязательное поле.
Класс Определяет класс данных. Он зависит от области, но обычно имеет значение IN.
Тип Задает тип записи. В данном случае запись имеет тип KEY.
Флаги Задает для named информацию о ключе. 0x0000 определяет запись обычного ключа, использующегося для хоста. 0x0100 определяет запись ключа, связанную с именем области.
Протокол Задает используемый протокол. В данный момент применяется только протокол 0.
Алгоритм Задает алгоритм ключа. В данный момент применяется только алгоритм 1. Это способ идентификации MD5 с личным/общим ключом.
Данные Задает ключ в формате base64. Команда nsupdate создает как общие, так и личные ключи в формате base64. Общий ключ указывается в конце файла вывода.

Например, для того чтобы убедиться, что для имени хоста в динамической области установлена защита, необходимо добавить следующую строку в определение области, в которую входит данный хост:

bears    4660    IN    KEY    0x0000    0    1    AQOtg......

В этом примере для хоста bears определена запись KEY. Каждый, кто захочет обновить bears, должен будет подписать свое обновление личным ключом, соответствующим общему ключу, хранящемуся в базе данных. Для того чтобы команда nsupdate была успешно выполнена, необходимо разместить общий ключ в файле ключей клиента (по умолчанию, /etc/keyfile). Записи этого файла имеют следующий формат:

 имя-хоста       имя-главного-сервера   base64         ключ

Аналогичную запись KEY необходимо указать в разделе описания области. Ключ области должен быть указан и для режима presecured, и для режима controlled. В противном случае будет применяться незащищенный режим. Это можно сделать так же, как в примере с bears, но личный ключ должен быть оставлен администратору для его применения в команде nsupdate при работе в административном режиме.

  1. Для создания пары ключей с помощью команды nsupdate введите:
    nsupdate -g -h имя-области -p имя-сервера -k файл-ключей
    При этом создается ключ для области. В этом примере команда nsupdate связана с командой nsupdate4. Это можно сделать с помощью следующей команды:
    ln -fs /usr/sbin/nsupdate4 /usr/sbin/nsupdate
  2. Укажите последний ключ из пары в начале раздела описания области следующим образом:
    IN     KEY     0x0100  0  1  Ключ
    Запись для файла named.abc.data выглядит следующим образом:
    $TTL 3h    ;3 hour
    
    @ IN    SOA     venus.abc.aus.century.com. gail.zeus.abc.aus.century.com. (
                    1       ;serial
                    3600    ;refresh
                    600     ;retry
                    3600000 ;expire
                    86400   ;negative caching TTL
    )
            IN      NS      venus.abc.aus.century.com.
            IN      KEY     0x0100  0 1 AQPlwHmIQeZzRk6Q/nQYhs3xwnhfTgF/
                            8YlBVzKSoKxVKPNLINnYW0mB7attTcfhHaZZcZr4u/
                            vDNikKnhnZwgn/
    venus        IN    A        192.9.201.1
    earth        IN    A        192.9.201.5
    mars         IN    A        192.9.201.3
    
  3. Теперь можно загрузить область, обновив сервер имен. Поместите файл AdminKeyFile в систему клиента или на сервер DHCP, обновляющий область. Ключ области из файла AdminKeyFile может применяться для применения обновлений и выполнения операций обслуживания на сервере имен.