145 lines
8.7 KiB
Markdown
145 lines
8.7 KiB
Markdown
# **Эта роль используетя для установки и управления 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
|
||
``` |