Dnsmasq настройка dns server
Данная инструкция будет состоять из двух основных частей — установка программного обеспечения и примеры по его настройки под различные задачи. Мы рассмотрим примеры работы на системах Linux Ubuntu и Rocky Linux (CentOS).
Настройка локальных DNS-сервер с помощью Dnsmasq в Ubuntu 20.04
Если вы хотите избавить себя от необходимости настраивать DNS-сервер в соответствии с BIND9, использование Dnsmasq — это самый простой и быстрый способ настроить и запустить локальный DNS-сервер.
Поэтому в этой настройке мы будем настраивать Dnsmasq в качестве нашего локального кэширующего DNS-сервера для ускорения до локального разрешения DNS.
1. Перевод запросов на другой DNS-сервер для определенного домена
Предположим, у нас есть задача — переводить все запросы для имен с доменом consul на другой DNS-сервер, который находится в нашей сети. Также, данный сервер слушает не на стандартном для NS-сервера порту (53), а на порту 8600. Кстати, это реальный пример работы при настройке кластера consul.
Создаем конфигурационный файл:
В него добавим одну строку:
* в данном примере мы будем переводить все запросы для домена consul на сервер 127.0.0.1 (в этом примере локальный сервер, но может быть любой) и порт 8600.
Чтобы настройки вступили в силу, перезапускаем dnsmasq:
systemctl restart dnsmasq
Настройка dnsmasq как DHCP
DHCP — это один из базовых сервисов в локальных сетях, благодаря которому отпадает необходимость конфигурировать настройки сети вручную. Он позволяет выдавать автоматически такие настройки как IP-адрес, адрес DNS-сервера и шлюза по-умолчанию, а также резервировать IP-адреса по MAC-адресам.
Эта строка не обязательна, она нужна в том случае, если вы хотите, чтобы хосты, получающие адреса по DHCP, имели FQDN-имя, то есть полное имя, включающее имя домена.
Сетевой интерфейс, на котором будет работать сервис. Обычно основной интерфейс eth0 подключен к провайдеру, поэтому его крайне нежелательно указывать в качестве интерфейса для работы сервиса.
Интервал выдаваемых адресов и время аренды адресов (в данном случае 24 часа).
Резервация IP-адреса по MAC-адресу, чтобы устройство с указанным MAC-адресом всегда получало указанный IP-адрес.
Задать значение опции DHCP с номером 1. Опция с номером 1 — это маска подсети (netmask).
Задать значение опции DHCP с номером 3. Опция с номером 3 — это шлюз по умолчанию (default gateway).
Этих опций в небольшой офисной или домашней сети обычно достаточно.
Список всех опций DHCP можно посмотреть на странице IANA (Internet Assigned Numbers Authority).
После задания настроек надо рестартовать сервис:
Теперь можно задавать настройки на компьютерах в сети на автоматическое получение адресов по DHCP.
2. Настройка кэширования
По умолчанию, dnsmasq работает как кэширующий сервер. Мы же подредактируем настройки.
Создаем конфигурационный файл:
cache-size=10000
all-servers
no-negcache
- cache-size — размер кэша (количество хостов).
- all-servers — задает поведение, при котором наш сервер будет отправлять запрос всем доступным ему серверам DNS и принимать ответ от того, кто первый ему ответит.
- no-negcache — не кэшировать негативные ответы.
Чтобы настройки вступили в силу, перезапускаем dnsmasq:
systemctl restart dnsmasq
Установка
Обычно dnsmasq устанавливается на машину, выполняющую роль сетевого шлюза, в небольших сетях обычно именно на нем работают сервисы DHCP и DNS. Поскольку dnsmasq присутствует в репозиториях многих дистрибутивов, его можно установить при помощи менеджера пакетов:
После этого можно приступать к настройке.
Шаг 1: Установка Dnsmasq в Ubuntu 18.04
Ubuntu 18.04 поставляется с systemd-resolv, который необходимо отключить, поскольку он привязывается к порту 53, который конфликтует с портом Dnsmasq.
Выполните следующие команды, чтобы отключить разрешенную службу:
Также удалите resolv.conf файл с символической ссылкой
Затем создайте новый файл resolv.conf .
Dnsmasq доступен в репозитории apt, простую установку можно выполнить, выполнив:
Основной файл конфигурации для Dnsmasq /etc/dnsmasq.conf . Настройте Dnsmasq, изменив этот файл.
Здесь минимальная конфигурация
Если вы хотите включить проверку DNSSEC и кэширование, раскомментируйте
Сделайте любые другие изменения, которые вы считаете актуальными, и перезапустите dnsmasq, когда закончите
Настройте локальный DNS-сервер с помощью Dnsmasq в Ubuntu 20.04
После установки Dnsmasq вы можете приступить к настройке его в качестве локального кэширующего DNS-сервера в Ubuntu 20.04. /etc/dnsmasq.conf — это файл конфигурации Dnsmasq по умолчанию. Поэтому для настройки dnsmasq вам необходимо отредактировать /etc/dnsmasq.conf файл.
Прежде всего, создайте копию файла конфигурации;
Затем откройте файл конфигурации для редактирования;
Файл хорошо прокомментирован, и все параметры конфигурации говорят сами за себя.
Для начала установите порт, на котором Dnsmasq будет прослушивать DNS-запросы. По умолчанию это порт 53 UDP. Вы также можете явно указать порт с помощью port опции.
Отключить пересылку имен без точки или доменной части;
Отключить пересылку адресов в немаршрутизируемых адресных пространствах;
Определите интерфейс (например interface=enp0s8 ) или IP-адрес (например, listen-address=192.168.x.x ), на котором Dnsmasq может прослушивать запросы DNS. Обычно по умолчанию используется адрес обратной связи. В этой настройке мы устанавливаем Dnsmasq для ответа как на внутренние, так и на внешние запросы DNS через петлевой и не петлевой интерфейс IP.
Соответственно замените IP-адрес интерфейса.
Включите Dnsmasq для автоматического добавления доменной части к простым именам;
Задайте домен для добавления dnsmasq к простым именам;
Отрегулируйте размер кешированных доменных имен. По умолчанию это 150 .
Приведенных выше параметров конфигурации достаточно для базового локального кэширующего DNS-сервера с использованием Dnsmasq.
Без строк комментариев вот как выглядит наш конфигурационный файл Dnsmasq;
Сохраните и выйдите из файла конфигурации после внесения изменений.
Добавьте IP-адрес DNS-сервера Dnsmasq в файл / etc / hosts
Затем добавьте IP-адрес Dnsmasq в качестве основного DNS-сервера в /etc/resolv.conf .
/etc/resolv.conf Теперь выглядит следующим образом ;
Добавить локальные записи DNS на сервер Dnsmasq
Добавьте локальные записи DNS в /etc/hosts файл сервера Dnsmasq .
Сделайте то же самое для других ваших локальных доменных имен.
Перезапустите Dnsmasq
Запустите проверку конфигурации Dnsmasq;
Подтверждение порта 53;
Обратите внимание, что dnsmasq привязывается к подстановочному адресу, даже если он прослушивает только некоторые интерфейсы. Это имеет то преимущество, что работает, даже когда интерфейсы приходят и уходят и меняют адрес.
Откройте порт DNS на UFW
Если UFW включен, откройте 53 порт DNS, UDP.
Соответственно обновите исходную сеть.
Проверить разрешение DNS
Разрешение локального домена;
Разрешение внешнего DNS;
Настройка DNS-сервера на удаленных клиентах
Теперь, когда Dnsmasq готов отправлять как локальные, так и внешние запросы DNS через локальный DNS-сервер, обновите запись DNS для клиентов в /etc/resolv.conf.
Соответственно замените IP-адрес Dnsmasq.
Выполнять локальные запросы DNS;
Теперь давайте рассчитаем время DNS-запросов с помощью утилиты детализации . Чтобы использовать этот инструмент, вам необходимо установить ldns-utils пакет в CentOS или ldnsutils пакет в Ubuntu. Предполагая, что пакеты установлены, используйте drill утилиту для проверки кэширования DNS;
Первый запуск запроса;
Ура !! теперь Dnsmasq настроен и работает локальный кэширующий DNS-сервер. Это знаменует конец нашего руководства по установке и настройке локального DNS-сервера с помощью Dnsmasq в Ubuntu 20.04.
Dnsmasq — это простой в настройке и легкий DHCP-сервер и DNS-сервер пересылки. Dnsmasq предназначен в первую очередь для предоставления службы DNS и, опционально, DHCP в небольшой сети. DHCP-сервер в Dnsmasq легко интегрируется с DNS-сервером. Машины с IP-адресами, выделенными DHCP-сервером, появляются в DNS с именами, настроенными либо на каждом хосте, либо в центральном файле конфигурации.
Dnsmasq поддерживает динамическую и статическую аренду DHCP. Помимо заявленных функций, он поддерживает BOOTP / TFTP, который может использоваться для сетевой загрузки бездисковых машин. Dnsmasq можно использовать в платформе виртуализации Proxmox для динамического или статического назначения IP-адресов, а также для управления DNS. Мы запустим Dnsmasq в одном гипервизоре Proxmox, при этом служба будет привязана к определенному сетевому интерфейсу / мосту.
Вывод
Dnsmasq — это простой в настройке DNS-кэш, который может ускорить работу в Интернете и разрешать записи домена в ваших системах. Вы также можете пользоваться его подсистемой DHCP, которую легко настроить и использовать для небольшой сети.
Шаг 3: Тестирование функциональности DNS Dnsmasq
Чтобы убедиться, что Dnsmasq отвечает на добавленные нами записи, укажите DNS-сервер своих серверов на сервере Dnsmasq. Отредактируйте /etc/network/interfaces для постоянной конфигурации или файл /etc/netplan/ на серверах Ubuntu 18.04.
Поскольку это тест, я изменю файл времени выполнения /etc/resolv.conf
Тест с использованием dig:
Вот еще один пример:
You can confirm that we’re getting responses as configured.
Вы можете подтвердить, что мы получаем ответы в соответствии с настройками.
Установка, настройка системы и запуск
1. Установка выполняется немного, по-разному, в зависимости от выбранного дистрибутива Linux. Рассмотрим примеры систем на базе Deb и RPM.
а) Для Debian / Ubuntu (Deb):
apt install dnsmasq
б) Для Rocky Linux / CentOS (RPM):
yum install dnsmasq
2. После установки разрешим автозапуск сервиса.
systemctl enable dnsmasq
Для систем на базе RPM также необходимо запустить сервис:
systemctl start dnsmasq
3. Настраиваем брандмауэр. Нам необходимо открыть UDP порт 53.
Как правило, используется 2 системы управления netfilter — iptables и firewalld. Рассмотрим обе.
а) При использовании iptables (как правило, для систем на базе Deb):
iptables -I INPUT -p udp --dport 53 -j ACCEPT
б) При использовании firewalld (как правило, для систем на базе RPM):
firewall-cmd --permanent --add-port=53/udp
4. Проверяем работоспособность сервиса. На любом из компьютеров в сети делаем запрос при помощи nslookup:
* где 192.168.0.15 — адрес в сети нашего сервера, куда мы установили dnsmasq.
Мы должны получить ответ на подобие:
Наш dnsmasq установлен и готов к дальнейшей настройке.
Блог про Linux, Bash и другие информационные технологии
Шаг 2: Добавление DNS-записей в Dnsmasq
Добавьте DNS записи в файл. /etc/hosts , Dnsmasq будет отвечать на запросы клиентов, использующих эти записи.
Вам необходимо перезапустить службу dnsmasq после добавления записей.
Примеры настройки dnsmasq
Переходим к основной части инструкции. Приведем примеры использования и соответствующей настройки dnsmasq.
Шаг 2. Настройте DHCP-сервер с помощью Dnsmasq.
После успешной установки Dnsmasq на вашем сервере Proxmox вы можете приступить к настройке службы DHCP.
Установить домен для dnsmasq:
Сообщите dnsmasq, какой интерфейс Ethernet он будет использовать для прослушивания запросов DHCP:
Установите диапазон IP-адресов DHCP-сервера для раздачи.
Установите маршрут по умолчанию, предоставленный dnsmasq:
Предоставьте восходящие DNS-серверы:
Задайте путь к файлу для базы данных аренды DHCP:
Проверьте свои конфигурации:
Перезапустите службу dnsmasq:
Запустить обновление системы
Обновите кеш вашего системного пакета;
Подсистемы Dnsmasq
Dnsmasq имеет три основные подсистемы, а именно:
- Подсистема DNS : обеспечивает кэширование записей A, AAAA, CNAME и PTR, а также записей DNSKEY и DS.
- Подсистема DHCP : обеспечивает поддержку DHCPv4, DHCPv6, BOTP и PXE. Вы можете использовать как статическую, так и динамическую аренду DHCP, встроенный TFTP-сервер только для чтения для поддержки сетевой загрузки.
- Подсистема объявления маршрутизатора: обеспечивает базовую автоконфигурацию для хоста IPv6
Шаг 1: Установите dnsmasq на Proxmox VE 6.x
Я установлю dnsmasq в один гипервизор Proxmox из исходных репозиториев по умолчанию.
Приступите к установке dnsmasq на Proxmox VE 6.x
Также установите пакет dnsutils , который предоставляет команду dig :
Проверьте свою установку:
Функция DNS в Dnsmasq настроена для пересылки всех запросов к настройкам DNS вашей системы по умолчанию, как указано в файле /etc/resolv.conf .
Настройте Dnsmasq в качестве DHCP-сервера (необязательно)
Вы можете использовать Dnsmasq для назначения IP-адресов клиентам, статическим или динамическим.
Отредактируйте файл a /etc/dnsmasq.conf и укажите параметры DHCP. Вам необходимо предоставить:
- IP-адрес шлюза по умолчанию
- IP-адрес DNS-сервера (возможно, Dnsmasq или другой DNS-сервер)
- Маска подсети
- Диапазон адресов DHCP
- NTP сервер
Перезапустите dnsmasq и настройте клиенты для получения IP-адреса с этого сервера.
Шаг 3. Создайте виртуальную машину в сети с помощью службы DHCP.
Создайте новую виртуальную машину из веб-консоли Proxmox.
Дадим ему имя и выберем узел, на котором он будет работать.
Выберите установочный диск ОС.
Выберите правильную сеть (она должна быть такой же, как та, которая используется в конфигурациях DHCP dnsmasq )
Установите операционную систему и после завершения перезагрузитесь и проверьте IP-адрес, если от DHCP.
Если интерфейс не получил IP-адрес, назначенный DHCP-сервером автоматически, вы можете попробовать запрос вручную:
На этом наша статья заканчивается. Не стесняйтесь делиться своими настройками и результатами тестирования в разделе комментариев.
Это руководство поможет вам установить и настроить DNS-сервер Dnsmasq в Ubuntu 18.04 LTS (Bionic Beaver). Для новичков в Dnsmasq Dnsmasq — это простой, легкий, простой в использовании и управлении DNS-сервер с поддержкой сценариев Lua, IPv6, DNSSEC, сетевой загрузки для PXE, BOOTP и TFTP. Он имеет небольшую площадь, поэтому подходит для ограниченных по ресурсам маршрутизаторов и межсетевых экранов.
Dnsmasq был разработан для предоставления DNS и, при желании, сервисов DHCP / TFTP для сетей малого и среднего размера. Когда он получает DNS-запросы, он либо отвечает на них из своего локального кэша, либо перенаправляет их на другой рекурсивный DNS-сервер, которым может быть BIND или любой другой DNS-сервер.
Настройка для PowerDNS Authoritative DNS-сервера доступна в нашем блоге:
3. Подмена IP-адресов
Есть несколько вариантов подмены IP-адресов в dnsmasq. Для настройки создадим файл:
В зависимости от ситуации, применяем один из вариантов, описанных ниже.
а) Подмена одного адреса:
* в данном примере если наш сервер получит ответ 1.1.1.1, он его заменит на 2.2.2.2.
б) Подмена адресов в подсети:
* в данном примере все адреса из подсети 1.1.1.0/24 будут заменены на соответствующие адреса подсети 2.2.2.2/24.
* в данном примере адреса в диапазоне от 1.1.1.100 до 1.1.1.200 будут переопределены в адреса в диапазоне от 192.168.0.100 до 192.168.0.200.
После внесения необходимых строк, нужно перезагрузить сервис.
systemctl restart dnsmasq
Это, далеко, не все возможности dnsmasq. По мере необходимости, они будут дополняться в данной инструкции.
Установите Dnsmasq в Ubuntu 20.04
Dnsmasq доступен в репозиториях Ubuntu 20.04 Universe. Однако перед установкой dnsmasq в Ubuntu 20.04 отключите службу с разрешением Systemd ( системная служба, которая обеспечивает разрешение сетевых имен для локальных приложений ).
Удалите файл resolv.conf по умолчанию и создайте новый с данными вашего настраиваемого DNS-сервера, чтобы вы могли выполнить установку.
Как только это будет сделано, Dnsmasq можно будет установить, выполнив команду ниже;
Это устанавливает и запускает и позволяет службе Dnsmasq запускаться при загрузке системы.
Настройка dnsmasq как DNS
DNS — это второй базовый сервис, без которого в локальных сетях не обойтись, если, конечно, вы не планируете обращаться к компьютерам в локальной сети и Интернете по IP-адресам, в чем я сильно сомневаюсь. Dnsmasq работает как кэширующий DNS-сервер. У него есть одна полезная особенность. Он умеет использовать файл /etc/hosts как источник информации для DNS, что может быть очень полезно. Например, если есть какой-то локальный сервис, с которым работают пользователи в локальной сети, они могут к нему обращаться по имени, а не по адресу, адрес будет запрашиваться у DNS-сервера, который будет возвращать IP-адрес, к которому необходимо обращаться.
Настройка dnsmasq как DNS по сути не отличается от настройки как DHCP, поскольку все настройки хранятся в том же файле — /etc/dnsmasq.conf
Самое первое, что необходимо, — это название домена
Для определенной подсети можно указать отдельное имя домена:
И точно так же можно указать имя домена для интервала адресов:
Основная функция DNS-сервера — это преобразование доменных имен в IP-адреса и наоборот, но DNS-серверов даже в локальной сети может быть несколько. Поэтому может потребоваться указать для определенных доменов адреса DNS-серверов, на которые должны отравляться запросы:
Аналогично указывается сервер для обратной зоны:
В конфигурационном файле также можно указать соответствие имени IP-адресу.
Запись типа A в прямой зоне DNS (сопоставляющей IP-адрес запрошенному имени):
Запись типа CNAME:
Эта запись создает алиас для локального имени sambaserver, чтобы к нему можно было обращаться по более короткому имени smb.
По умолчанию dnsmasq использует файл /etc/hosts для сопоставления имен хостов IP-адресам, но это тоже можно изменить. Если вы не хотите использовать /etc/hosts, вы можете указать это при помощи опции
Если же вы хотите использовать совместно с /etc/hosts еще один файл аналогичной структуры, для этого есть опция
Кроме задания собственных записей DNS можно изменять информацию, получаемую от внешних DNS-серверов путем подмены полученного IP-адреса. Для замены одного адреса:
Если при запросе доменного имени от внешнего DNS-сервера мы получим IP-адрес 1.2.3.4, то мы подменим его на адрес 5.6.7.8. Можно осуществлять подмену целыми подсетями:
Такая запись подменит любой адрес из подсети 1.2.3.0/24 на адрес из подсети 5.6.7.0/24. Если же вам необходимо подменять определенный интервал адресов, то такая возможность тоже есть:
Эта запись подменит адреса из интервала 10.0.0.10-10.0.0.40 на адреса 192.168.0.10-192.168.0.40
Для того, чтобы обращения к DNS шли именно на dnsmasq на том же сервере, где он сам работает, необходимо указать первой записью в /etc/resolv.conf следующую строку:
Сам dnsmasq будет игнорировать эту запись, поскольку предполагает, что эта запись обозначает его собственный сервис, он начинает использование записей с указанием серверов имен со следующей записи, в которой указывается уже внешний DNS-сервер.
Во многих системах /etc/resolv.conf генерируется автоматически при получении адреса от провайдера по DHCP, поэтому если просто записать эту строчку руками, при переподключении основного сетевого интерфейса файл будет перезаписан и эта строка исчезнет. Этого можно избежать, если раскомментировать в файле /etc/dhcp/dhclient.conf (или /etc/dhcp3/dhclient.conf, в зависимости от системы) строчку
Тогда даже при получении списка DNS-серверов по DHCP первой строчкой в /etc/resolv.conf будет строчка «nameserver 127.0.0.1».
И еще одна опция, которая может вам пригодиться, если вы хотите использовать свой список DNS-серверов:
Файл, который указывается в этой опции, должен иметь такую же структуру, как и /etc/resolv.conf. При наличии этой опции будет использован указанный файл вместо /etc/resolv.conf. И таких записей может быть больше одной.
А если необходимо просто указать несколько DNS-серверов, на которые будут форвардиться запросы, это можно сделать при помощи записи нескольких строчек с опцией server:
Вот, в общем, и всё. И не забывайте после изменения настроек рестартовать dnsmasq командой
Читайте также: