Перейти к содержанию

Настройка DNS клиента в CentOS/RHEL 7 & 8 совместно с dnsmasq при помощью Ansible

Общее описание

DNS-клиент — программа (или модуль в программе), обеспечивающая определение IP-адреса узла по его полному имени. Dnsmasq — легковесный и быстроконфигурируемый DNS, является более современным подходом к настройке сети.

Dnsmasq предоставляет следующие возможности:

  • Простая конфигурация DNS-машин за межceтевым экраном, независимо от особенностей и доступности DNS-серверов провайдера.
  • Мгновенная передача клиентам информации о недоступности сайта, если внешнее соединение прервано.
  • Может переопределить другие имена для глобальных IP-адресов без необходимости исправлять файл /etc/hosts на каждой машине.
  • Кэширует интернет-адреса (A-записи и записи AAAA) и PTR-записи, снижая нагрузки на внешние серверы и повышая производительность (особенно на модемных соединениях).
  • Пользователи могут настроить Dnsmasq для отправки запросов для определённых доменов на обработку внешним серверам.
  • Поддерживает MX-записи и может вернуть MX-записи для любой или всех локальных машин.
  • Поддерживает NAPTR-запись, что позволяет использовать регулярные выражения, основанные на переписывании доменных имён, которые затем могут быть использованы в качестве URI, дополнительных доменных имён для поиска.
  • Некоторые провайдеры переписывают NXDOMAIN-ответы (домен не существует) от DNS-серверов. Это заставляет веб-браузеры искать страницы в домене, который не существует. Dnsmasq может отфильтровать такие записи.

Примечание

В процессе выполнения роли отключается настройка управление DNS через NetworkManager, настройка производится только через dnsmasq.conf и resolv.dnsmasq.

Внимание, при ошибке

Так как DNSMASQ является альтернативным DNS сервером, данное решение не следует применять на серверах с другими DNS службами.

Параметры

Название переменной Тип переменной Значения по умолчанию Описание
dns_cache string '1000' Количество кешируемых записей.
dns_domain string 'ansible_domain' Задает локальное имя клиента.
nameserver array '1.1.1.1','8.8.8.8' Список DNS серверов.

Примеры

inventory/hosts

[example-servers]
<host_name> ansible_ssh_host=<host_ip> ansible_ssh_user=<user_name_for_connect>

[example-servers:vars]
ansible_connection=ssh
dns_cache='1111'
nameserver=['1.1.1.1','1.0.0.1','8.8.8.8','8.8.4.4']

Дополнительные материалы


Последнее обновление: July 10, 2024