8.7 KiB
8.7 KiB
Эта роль используетя для установки и управления DNS ISC-BIND9 (named)
Основные задачи, которые выполняет сервис named:
- Преобразование имен в IP-адреса: Когда вы вводите в браузере адрес сайта (например,
google.com),namedнаходит соответствующий ему числовой IP-адрес, понятный компьютерам. - Обратное преобразование: Он может выполнять и обратную операцию — узнавать доменное имя по известному IP-адресу.
- Хранение данных о зоне: Сервер хранит ресурсные записи для доменов, которыми он управляет (например, записи об IP-адресе сайта, почтовом сервере и т.д.).
- Кэширование: Чтобы не запрашивать информацию о популярных сайтах каждый раз заново,
namedсохраняет результаты предыдущих запросов в памяти, что ускоряет работу интернета для пользователей. - Пересылка запросов: Если сервер сам не знает ответ на запрос, он перенаправляет его другим DNS-серверам в иерархии интернета.
Перед созданием/редактированием зон проверяется наличие пакета named/bind и необходимых компонентов.
Если они отсутвуют - будет произведена их установка.
Добавление и изменения зон производятся по средствам указания соответвующих параметров в переменных роли
Использование:
ansible-playbook -i ./inventory/prod/hosts.yml ./playbooks/ns1.yml
Основные настройки (Vars)
В плейбуке заданы ключевые параметры:
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
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) зонами
named_zones:
- name: 'gigacoms.info' # Указывается имя зоны
type: secondary # То, что она вторичная
primaries: # Обязательно указываем первичный сервер
- 91.218.87.254