11. Служба dns¶
11.1. Общие сведения¶
Служба dns – иерархическая и распределённая служба имён, которая обеспечивает систему именования компьютеров, служб и других ресурсов в сети Интернет или других сетях Интернет-протокола (IP). В ПАК “Фортикс” служба dns обеспечивает функциональность узла службы DNS.
11.2. Базовые настройки службы¶
Настройка службы dns ПАК “Фортикс” осуществляется по иерархическому принципу: верхний уровень является обязательными для вложенных уровней ниже.
Всего таких уровня три:
глобальный уровень конфигурации службы;
уровень конфигурации представления –
view;уровень конфигурации зоны –
zone.
Абстракция view введена для “виртуализации” функциональности сервиса DNS в рамках одного процесса. С практической точки зрения каждое представление view работает как отдельный экземпляр службы dns. Таким образом, возможно, например, описать одну и ту же зону в зависимости от сети, из которой был сделан запрос.
11.2.1. Глобальные настройки службы¶
Глобальная настройка службы dns осуществляется на следующем уровне конфигурации:
[edit service dns]
На данном уровне конфигурации доступны следующие настройки:
enable– включить службу;acl <acl-name> address <address>– задать именованный список IP-адресов и сетей для использования в других настройках в качестве подстановки, где<acl-name>– строка,<address>– IPv4-адрес в форматеA.B.C.D[/mask]или IPv6-адрес в форматеA:B:..:H[/mask];listen <address>|<acl-name>– задать список IP-адресов или списокacl, по которым служба принимает запросы, где<address>– IPv4-адрес в форматеA.B.C.Dили IPv6-адрес в форматеA:B:..:H,<acl-name>– имя существующего списка IP-адресов и сетей;dnssec-validation yes|no|auto– включить/выключить проверку dnssec, где по умолчанию –auto– автоматическая проверка подлинности DNS-данных (см. подраздел 11.3 DNSSEC);allow-query <address>|<acl-name>– задать список IP-адресов или списокaclузлов сети, с которых разрешено получение DNS-запросов, где<address>– IPv4-адрес в форматеA.B.C.Dили IPv6-адрес в форматеA:B:..:H,<acl-name>– строка;allow-transfer <address>|<acl-name>– задать список IP-адресов или списокacl, которым доступны зоны с сервера, где<address>– IPv4-адрес в форматеA.B.C.Dили IPv6-адрес в форматеA:B:..:H,<acl-name>– строка;allow-recursion <address>|<acl-name>– задать список IP-адресов или списокacl, для которых разрешены рекурсивные запросы (для остальных – итеративные), где<address>– IPv4-адрес в форматеA.B.C.Dили IPv6-адрес в форматеA:B:..:H,<acl-name>– имя существующего списка IP-адресов и сетей, по умолчанию сервер выполняет рекурсивные запросы для всех сетей;allow-notify <address>|<acl-name>– задать список IP-адресов или списокaclпервичных серверов зоны, от которых служба, как вторичный уполномоченный сервер, принимает извещения об изменениях зоны, где<address>– IPv4-адрес в форматеA.B.C.Dили IPv6-адрес в форматеA:B:..:H,<acl-name>– имя существующего списка IP-адресов и сетей;allow-update <address>|<acl-name>– задать список IP-адресов или списокacl, определяющий системы, которым разрешено динамически обновлять primary-зону, где<address>– IPv4-адрес в форматеA.B.C.Dили IPv6-адрес в форматеA:B:..:H,<acl-name>– имя существующего списка IP-адресов и сетей;forwarder <address>|<acl-name>– задать список IP-адресов или списокacl, которые обслуживают перенаправленные запросы, где<address>– IPv4-адрес в форматеA.B.C.Dили IPv6-адрес в форматеA:B:..:H,<acl-name>– имя существующего списка IP-адресов и сетей.
11.2.2. Настройки представления view¶
Настройка представления осуществляется на следующем уровне конфигурации:
[edit service dns view <view-name>]
где <view-name> – строка.
На данном уровне конфигурации доступны следующие настройки:
match-client <address>|<acl-name>– определить представление пространства имён DNS для заданного подмножества IP-адресов клиента, где<address>– IPv4-адрес в форматеA.B.C.Dили IPv6-адрес в форматеA:B:..:H,<acl-name>– имя существующего списка IP-адресов и сетей;match-destination <address>|<acl-name>– определить представление пространства имён DNS для заданного подмножества IP-адресов назначения, где<address>– IPv4-адрес в форматеA.B.C.Dили IPv6-адрес в форматеA:B:..:H,<acl-name>– имя существующего списка IP-адресов и сетей;match-recursive-only true|false– определить, обслуживает ли представление только рекурсивные запросы.
Настройки allow-notify, allow-query, allow-recursion, allow-transfer, allow-update, forwarder данного уровня конфигурации аналогичны глобальному уровню конфигурации службы.
11.2.3. Настройки зоны zone¶
Настройка зоны осуществляется на следующем уровне конфигурации:
[edit service dns view <view-name> zone <zone-name>]
где
<view-name>– имя существующего представления;<zone-name>– строка-доменное имя, оканчивающаяся на “.”.
На данном уровне конфигурации доступны следующие настройки:
type <zone-type>– задать один из типов зоны:primary,secondary,forward;origin <domain-name>– задать доменное имя, которое добавляется к любым неквалифицированным записям, где<domain-name>– строка, оканчивающаяся на “.”;ttl <ttl-value>– определить TTL по умолчанию для всех записей в текущей зоне, где<ttl-value>– число 0 до 4294967295;update– разрешить обновление зоны DHCP-сервером.
Настройки allow-notify, allow-query, allow-transfer, allow-update, forwarder аналогичны уровню конфигурации представления.
11.2.4. Пример конфигурации службы dns¶
Пример минимальной конфигурации службы dns:
dns {
enable
dnssec-validation no
forwarder 1.1.1.1
view default {
zone 100.168.192.in-addr.arpa. {
type primary
soa {
domain 100.168.192.in-addr.arpa.
master gw.example.com.
admin admin.gw.example.com.
serial 1
}
ns 100.168.192.in-addr.arpa. server gw.example.com.
ptr 10 host foo.example.com.
}
zone example.com. {
type primary
origin example.com.
soa {
domain example.com.
master gw.example.com.
admin admin.gw.example.com.
serial 1
}
ns example.com. server gw.example.com.
a foo address 192.168.100.10
a gw address 192.168.100.254
}
}
allow-query 192.168.100.0/24
}
11.2.5. Команды режима администрирования¶
Для просмотра текущего статуса службы dns применяется команда:
> show service dns status
11.3. DNSSEC¶
DNSSEC – расширение DNS, предназначенное для повышения безопасности. Оно гарантирует подлинность и целостность DNS‑данных, защищая их от атак: загрязнения кэша, перенаправления и подмены запросов.
Для DNSSEC применяется криптография с открытым ключом (PKI): добавляется цифровая подпись к данным DNS‑зоны. Это позволяет проверять, что ответ не изменён при передаче и исходит от доверенного источника.
При этом DNSSEC не создаёт защищённый туннель и не шифрует DNS‑данные.
11.3.1. Настройки расширения DNSSEC для зоны¶
Настройка зоны осуществляется на следующем уровне конфигурации:
[edit service dns view <view-name> zone <zone-name>]
где
<view-name>– имя существующего представления;<zone-name>– строка-доменное имя, оканчивающаяся на “.”.
На данном уровне конфигурации доступны следующие настройки расширения DNSSEC для зоны:
sign ksk <ksk-key-id> zsk <zsk-key-id>– подписать зону в системе, где<ksk-key-id>– идентификатор в системе ключа подписывания ключей,<zsk-key-id>– идентификатор в системе ключа подписывания зоны.
11.3.2. Команды режима администрирования¶
Для расширения DNSSEC используется два типа ключей:
KSK – ключ подписывания ключей;
ZSK – ключ подписывания зоны.
Для генерации нового ключа применяется команда:
> dnssec key generate new ksk|zsk <view-name> <zone-name> <key-algorithm> [ttl <ttl-value>] [size <size-value>] [nsec3 <nsec3-algorithm-name>]
где
<view-name>– имя существующего представления;<zone-name>– имя существующей зоны, для которой создаётся ключ;zsk|ksk– тип ключа;<key-algorithm>– криптографический алгоритм формирования ключа, по умолчанию – RSASHA1;<ttl-value>– время жизни от 0 до 4294967295 записи DNSKEY, формируемой службой из ключа при создании зонного файла;<size-value>– длина ключа, по умолчанию – 1024;<nsec3-algorithm-name>– криптографический алгоритм формирования ключа с поддержкой NSEC3, по умолчанию – NSEC3RSASHA1*.
В зависимости от используемого криптографического алгоритма длина ключа может принимать следующие значения:
RSASHA1: от 1024 до 4096;
NSEC3RSASHA1: от 1024 до 4096;
RSASHA256: от 1024 до 4096;
RSASHA512: от 1024 до 4096;
ECDSAP256SHA256: для алгоритма предусмотрена фиксированная длина ключа;
ECDSAP384SHA384: для алгоритма предусмотрена фиксированная длина ключа;
ED25519: для алгоритма предусмотрена фиксированная длина ключа;
ED448: для алгоритма предусмотрена фиксированная длина ключа;
DH: от 128 до 4096.
При этом в системе генерируется ключ с идентификатором key-id, сформированным по правилу: <algo>-<id>, где <algo> – используемый алгоритм, <id> – уникальный 16-битный идентификатор.
По умолчанию для сгенерированного ключа устанавливаются временные метки следующего типа:
create– время создания (генерации) ключа;publish– время публикации ключа: после указанного времени ключ включается в зону и не используется для формирования подписи;activate– время активации ключа: после указанного времени ключ остаётся в зоне и используется для формирования подписи.
По умолчанию данным меткам присваиваются значения, равные времени генерации ключа.
Дополнительно для ключа могут быть установлены метки следующего типа:
revoke– время отзыва ключа: после указанного времени в ключе устанавливается флаг отзыва, при этом ключ остаётся в зоне и используется для подписи;inactive– время деактивации ключа: после указанного времени ключ остаётся в зоне и не используется для подписи (фактически это “срок годности” ключа);delete– время удаления ключа: после указанного времени ключ не включается в зону и остаётся в виде файла в файловой системе, и может быть удалён.
Для генерации ключа-преемника применяется команда:
> dnssec key generate successor ksk|zsk <view-name> <zone-name> <key-id>
где
<view-name>– имя существующего представления;<zone-name>– имя существующей зоны, для которой создаётся ключ-преемник;zsk|ksk– тип ключа;<key-id>– идентификатор существующего ключа, параметры которого наследуются в ключе-преемнике.
Для определения временной метки ключа применяется команда:
> dnssec key set time ksk|zsk <view-name> <zone-name> <key-id> create|publish|activate|revoke|inactive|delete <time-value>
где
<view-name>– имя существующего представления;<zone-name>– имя существующей зоны;create|publish|activate|revoke|inactive|delete– тип временной метки;<time-value>– значение временной метки в одном из следующих форматов:YYYYMMDD, гдеYYYY– год,MM– месяц,DD– день;YYYYMMDDHHMMSS, гдеYYYY– год,MM– месяц,DD– день,HH– часы,MM– минуты,SS– секунды;<+->N[y|mo|w|d|h|mi]– смещение по времени в будущее (+) или прошлое (-), гдеN– число единиц времени (y– лет,mo– месяцев,w– недель,d– дней,h– часов,mi– минут, по умолчанию – секунд).
Для получения списка ключей зоны применяется команда:
> dnssec key list <view-name> <zone-name>
где
<view-name>– имя существующего представления;<zone-name>– имя существующей зоны.
Для удаления ключа применяется команда:
> dnssec key remove <view-name> <zone-name> <key-id>
где
<view-name>– имя существующего представления;<zone-name>– имя существующей зоны;<key-id>– идентификатор существующего ключа.
Для проверки корректности подписи зоны применяется команда:
> dnssec key verify <view-name> <zone-name>
где
<view-name>– имя существующего представления;<zone-name>– имя существующей зоны.