.. _dnsgl: Служба dns ========== Общие сведения -------------- Служба dns – иерархическая и распределённая служба имён, которая обеспечивает систему именования компьютеров, служб и других ресурсов в сети Интернет или других сетях Интернет-протокола (IP). В ПАК “Фортикс” служба dns обеспечивает функциональность узла службы DNS. Базовые настройки службы ------------------------ Настройка службы dns ПАК “Фортикс” осуществляется по иерархическому принципу: верхний уровень является обязательными для вложенных уровней ниже. Всего таких уровня три: 1) глобальный уровень конфигурации службы; 2) уровень конфигурации представления – ``view``; 3) уровень конфигурации зоны – ``zone``. Абстракция ``view`` введена для “виртуализации” функциональности сервиса DNS в рамках одного процесса. С практической точки зрения каждое представление ``view`` работает как отдельный экземпляр службы dns. Таким образом, возможно, например, описать одну и ту же зону в зависимости от сети, из которой был сделан запрос. Глобальные настройки службы ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Глобальная настройка службы dns осуществляется на следующем уровне конфигурации: :: [edit service dns] На данном уровне конфигурации доступны следующие настройки: - ``enable`` – включить службу; - ``acl address
`` – задать именованный список IP-адресов и сетей для использования в других настройках в качестве подстановки, где ```` – строка, ``
`` – IPv4-адрес в формате ``A.B.C.D[/mask]`` или IPv6-адрес в формате ``A:B:..:H[/mask]``; - ``listen
|`` – задать список IP-адресов или список ``acl``, по которым служба принимает запросы, где ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H``, ```` – имя существующего списка IP-адресов и сетей; - ``dnssec-validation yes|no|auto`` – включить/выключить проверку dnssec, где по умолчанию – ``auto`` – автоматическая проверка подлинности DNS-данных (см. подраздел :numref:`{number} {name} `); - ``allow-query
|`` – задать список IP-адресов или список ``acl`` узлов сети, с которых разрешено получение DNS-запросов, где ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H``, ```` – строка; - ``allow-transfer
|`` – задать список IP-адресов или список ``acl``, которым доступны зоны с сервера, где ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H``, ```` – строка; - ``allow-recursion
|`` – задать список IP-адресов или список ``acl``, для которых разрешены рекурсивные запросы (для остальных – итеративные), где ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H``, ```` – имя существующего списка IP-адресов и сетей, по умолчанию сервер выполняет рекурсивные запросы для всех сетей; - ``allow-notify
|`` – задать список IP-адресов или список ``acl`` первичных серверов зоны, от которых служба, как вторичный уполномоченный сервер, принимает извещения об изменениях зоны, где ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H``, ```` – имя существующего списка IP-адресов и сетей; - ``allow-update
|`` – задать список IP-адресов или список ``acl``, определяющий системы, которым разрешено динамически обновлять primary-зону, где ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H``, ```` – имя существующего списка IP-адресов и сетей; - ``forwarder
|`` – задать список IP-адресов или список ``acl``, которые обслуживают перенаправленные запросы, где ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H``, ```` – имя существующего списка IP-адресов и сетей. Настройки представления view ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Настройка представления осуществляется на следующем уровне конфигурации: :: [edit service dns view ] |noindent| где ```` – строка. На данном уровне конфигурации доступны следующие настройки: - ``match-client
|`` – определить представление пространства имён DNS для заданного подмножества IP-адресов клиента, где ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H``, ```` – имя существующего списка IP-адресов и сетей; - ``match-destination
|`` – определить представление пространства имён DNS для заданного подмножества IP-адресов назначения, где ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:..:H``, ```` – имя существующего списка IP-адресов и сетей; - ``match-recursive-only true|false`` – определить, обслуживает ли представление только рекурсивные запросы. Настройки ``allow-notify``, ``allow-query``, ``allow-recursion``, ``allow-transfer``, ``allow-update``, ``forwarder`` данного уровня конфигурации аналогичны глобальному уровню конфигурации службы. Настройки зоны zone ~~~~~~~~~~~~~~~~~~~ Настройка зоны осуществляется на следующем уровне конфигурации: :: [edit service dns view zone ] |noindent| где - ```` – имя существующего представления; - ```` – строка-доменное имя, оканчивающаяся на “.”. На данном уровне конфигурации доступны следующие настройки: - ``type `` – задать один из типов зоны: ``primary``, ``secondary``, ``forward``; - ``origin `` – задать доменное имя, которое добавляется к любым неквалифицированным записям, где ```` – строка, оканчивающаяся на “.”; - ``ttl `` – определить TTL по умолчанию для всех записей в текущей зоне, где ```` – число 0 до 4294967295; - ``update`` – разрешить обновление зоны DHCP-сервером. Настройки ``allow-notify``, ``allow-query``, ``allow-transfer``, ``allow-update``, ``forwarder`` аналогичны уровню конфигурации представления. Пример конфигурации службы 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 } Команды режима администрирования ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для просмотра текущего статуса службы dns применяется команда: :: > show service dns status .. _dnssec: DNSSEC ------ DNSSEC – расширение DNS, предназначенное для повышения безопасности. Оно гарантирует подлинность и целостность DNS‑данных, защищая их от атак: загрязнения кэша, перенаправления и подмены запросов. Для DNSSEC применяется криптография с открытым ключом (PKI): добавляется цифровая подпись к данным DNS‑зоны. Это позволяет проверять, что ответ не изменён при передаче и исходит от доверенного источника. При этом DNSSEC не создаёт защищённый туннель и не шифрует DNS‑данные. Настройки расширения DNSSEC для зоны ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Настройка зоны осуществляется на следующем уровне конфигурации: :: [edit service dns view zone ] |noindent| где - ```` – имя существующего представления; - ```` – строка-доменное имя, оканчивающаяся на “.”. На данном уровне конфигурации доступны следующие настройки расширения DNSSEC для зоны: - ``sign ksk zsk `` – подписать зону в системе, где ```` – идентификатор в системе ключа подписывания ключей, ```` – идентификатор в системе ключа подписывания зоны. Команды режима администрирования ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для расширения DNSSEC используется два типа ключей: - KSK – ключ подписывания ключей; - ZSK – ключ подписывания зоны. Для генерации нового ключа применяется команда: :: > dnssec key generate new ksk|zsk [ttl ] [size ] [nsec3 ] |noindent| где - ```` – имя существующего представления; - ```` – имя существующей зоны, для которой создаётся ключ; - ``zsk|ksk`` – тип ключа; - ```` – криптографический алгоритм формирования ключа, по умолчанию – RSASHA1; - ```` – время жизни от 0 до 4294967295 записи DNSKEY, формируемой службой из ключа при создании зонного файла; - ```` – длина ключа, по умолчанию – 1024; - ```` – криптографический алгоритм формирования ключа с поддержкой NSEC3, по умолчанию – NSEC3RSASHA1\*. В зависимости от используемого криптографического алгоритма длина ключа может принимать следующие значения: - RSASHA1: от 1024 до 4096; - NSEC3RSASHA1: от 1024 до 4096; - RSASHA256: от 1024 до 4096; - RSASHA512: от 1024 до 4096; - ECDSAP256SHA256: для алгоритма предусмотрена фиксированная длина ключа; - ECDSAP384SHA384: для алгоритма предусмотрена фиксированная длина ключа; - ED25519: для алгоритма предусмотрена фиксированная длина ключа; - ED448: для алгоритма предусмотрена фиксированная длина ключа; - DH: от 128 до 4096. При этом в системе генерируется ключ с идентификатором ``key-id``, сформированным по правилу: ``-``, где ```` – используемый алгоритм, ```` – уникальный 16-битный идентификатор. По умолчанию для сгенерированного ключа устанавливаются временные метки следующего типа: - ``create`` – время создания (генерации) ключа; - ``publish`` – время публикации ключа: после указанного времени ключ включается в зону и не используется для формирования подписи; - ``activate`` – время активации ключа: после указанного времени ключ остаётся в зоне и используется для формирования подписи. По умолчанию данным меткам присваиваются значения, равные времени генерации ключа. Дополнительно для ключа могут быть установлены метки следующего типа: - ``revoke`` – время отзыва ключа: после указанного времени в ключе устанавливается флаг отзыва, при этом ключ остаётся в зоне и используется для подписи; - ``inactive`` – время деактивации ключа: после указанного времени ключ остаётся в зоне и не используется для подписи (фактически это “срок годности” ключа); - ``delete`` – время удаления ключа: после указанного времени ключ не включается в зону и остаётся в виде файла в файловой системе, и может быть удалён. Для генерации ключа-преемника применяется команда: :: > dnssec key generate successor ksk|zsk |noindent| где - ```` – имя существующего представления; - ```` – имя существующей зоны, для которой создаётся ключ-преемник; - ``zsk|ksk`` – тип ключа; - ```` – идентификатор существующего ключа, параметры которого наследуются в ключе-преемнике. Для определения временной метки ключа применяется команда: :: > dnssec key set time ksk|zsk create|publish|activate|revoke|inactive|delete |noindent| где - ```` – имя существующего представления; - ```` – имя существующей зоны; - ``create|publish|activate|revoke|inactive|delete`` – тип временной метки; - ```` – значение временной метки в одном из следующих форматов: - ``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 |noindent| где - ```` – имя существующего представления; - ```` – имя существующей зоны. Для удаления ключа применяется команда: :: > dnssec key remove |noindent| где - ```` – имя существующего представления; - ```` – имя существующей зоны; - ```` – идентификатор существующего ключа. Для проверки корректности подписи зоны применяется команда: :: > dnssec key verify |noindent| где - ```` – имя существующего представления; - ```` – имя существующей зоны.