# **Эта роль используетя для установки и управления DNS ISC-BIND9 (named)** Основные задачи, которые выполняет сервис `named`: - **Преобразование имен в IP-адреса**: Когда вы вводите в браузере адрес сайта (например, `google.com`), `named` находит соответствующий ему числовой IP-адрес, понятный компьютерам. - **Обратное преобразование**: Он может выполнять и обратную операцию — узнавать доменное имя по известному IP-адресу. - **Хранение данных о зоне**: Сервер хранит ресурсные записи для доменов, которыми он управляет (например, записи об IP-адресе сайта, почтовом сервере и т.д.). - **Кэширование**: Чтобы не запрашивать информацию о популярных сайтах каждый раз заново, `named` сохраняет результаты предыдущих запросов в памяти, что ускоряет работу интернета для пользователей. - **Пересылка запросов**: Если сервер сам не знает ответ на запрос, он перенаправляет его другим DNS-серверам в иерархии интернета. Перед созданием/редактированием зон проверяется наличие пакета named/bind и необходимых компонентов. Если они отсутвуют - будет произведена их установка. Добавление и изменения зон производятся по средствам указания соответвующих параметров в переменных роли Использование: ```bash ansible-playbook -i ./inventory/prod/hosts.yml ./playbooks/ns1.yml ``` ### Основные настройки (Vars) В плейбуке заданы ключевые параметры: ```plaintext named_listen_ipv4: # Указываем какой интерфейс/ip слушать - "any" named_listen_ipv4_port: # На каком порту - 53 named_listen_ipv6: # то же самое для IPv6 - "::" named_listen_ipv6_port: - 53 named_recursion: true # Разрешить рекурсивные запросы named_allow_recursion: # Каким ACL позволяется рекурсия - "Local" named_allow_query: # На запросы с каких адресов отвечать, можно добавить ACL - "any" named_allow_transfer: # Каким адресам доверять передачу зоны (secondary) - "Transfer" named_dns_keys: # TSIG ключи (для certbot) - name: CertbotKey algorithm: hmac-sha256 secret: "YCUScDPbF9bscPFB0mLzRr2/V54FB7tcrifAdrrnlBI=" named_extra_include_files: # Вынести ключи в отдельный файл дефолтно в /etc/named - "{{ named_auth_file }}" named_acls: # Access Lists - Описание имя списка и адреса - name: Transfer match_list: - 91.218.87.251 - 10.203.0.84 - 10.203.0.85 - name: Local match_list: - 127.0.0.1 - 127.0.0.0/8 - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 - 100.64.0.0/10 - 91.218.84.0/22 - 91.236.140.0/22 - 91.197.57.0/24 - 213.109.201.0/24 - 46.255.25.0/24 - 2a13:af80::/29 ``` ### Управление зонами Плейбук настраивает основные зоны типа primary (мастер-сервер), вторичные зоны типа secondary Тип зоны устанавливается параметром type ```plaintext named_zones: - name: 'gigacoms.ru' # Обозначает название зоны, домен который она обслуживает type: (primary/secondary) # Устанавливает тип зоны (primary/secondary) allow_update: # Добавляет TSIG ключи для управления зоной (Certbot) - 'key "CerbotKey"' primaries: # Указывается IP адрес первичного сервера - 91.218.87.254 name_servers: # Указываются сервера, ответственные за зону - ns1 - ns2 hosts: # Идет описание хостов зоны - name: test1 # Имя хоста (при необходимости можно использовать полное наименование, типа: tesl.local.host.local.) ip: 91.218.87.254 # IP адрес хоста ipv6: 2001:db8::1 # IPv6 адрес хоста (не обязательно) aliases: # Можно указать Alias для хоста, преобразуется в запись CNAME - test2 mail_servers: # Устанавливаются почтовые сервера зоны - name: mx.yandex.net. # Адрес сервера preference: 10 # Приоритет по отправке services: # также возможно добавления особых параметров для служб - name: _ldap._tcp weight: 100 port: 88 target: srv010 text: # произвольные записи типа TEXT - name: _kerberos text: KERBEROS.ACME-INC.COM - name: '@' text: - 'some text' - 'more text' ``` - Управление обратными зонами аналогично управлению прямыми, только с отличительным признаком reverse_zone: true ``` - name: '141.236.91.in-addr.arpa' # Указывается имя зоны, в соответствии с RFC type: primary # Устанавливает тип зоны (primary/secondary) primaries: # Указывается IP адрес первичного сервера - 91.218.87.254 name_servers: # Указываются сервера, ответственные за зону - ns1.gigacoms.ru. - ns2.gigacoms.ru. reverse_zone: true # Указываем, что эта зона является reverse зоной. ptr_records: - name: '89' # Простая обратная запись, указывается адрес из последнего октета ptr: 'mail.geocaching.su' # Указывается имя хоста, для которого делается запись - name: '0/28.10.10.10.in-addr.arpa.' # Запись типа NS - указывается диапазон адресов (в этом случае с маской /28) dns: 'ns1.cittransm.ru.' # Указывается на какой NS сервер необходимо обратиться - name: '96' # IP-адрес cname: '96.96/28.10.0.10.in-addr.arpa.' # DNS-сервер, отвечающий за сеть (`Я не знаю имя для этого IP напрямую, иди по ссылке 96.96/28...`) ``` - Управление вторичными (secondary) зонами ```plaintext named_zones: - name: 'gigacoms.info' # Указывается имя зоны type: secondary # То, что она вторичная primaries: # Обязательно указываем первичный сервер - 91.218.87.254 ```