Как установить и настроить Dnsmasq на Ubuntu 18.04 LTS
Это руководство поможет вам установить и настроить 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-сервера доступна в нашем блоге:
Установите PowerDNS и PowerDNS-Admin в Ubuntu 18.04 / Debian 9 с бэкэндом MariaDB
Подсистемы Dnsmasq
Dnsmasq имеет три основные подсистемы, а именно:
- Подсистема DNS : обеспечивает кэширование записей A, AAAA, CNAME и PTR, а также записей DNSKEY и DS.
- Подсистема DHCP : обеспечивает поддержку DHCPv4, DHCPv6, BOTP и PXE. Вы можете использовать как статическую, так и динамическую аренду DHCP, встроенный TFTP-сервер только для чтения для поддержки сетевой загрузки.
- Подсистема объявления маршрутизатора: обеспечивает базовую автоконфигурацию для хоста IPv6
Шаг 1: Установка Dnsmasq в Ubuntu 18.04
Ubuntu 18.04 поставляется с systemd-resolv, который необходимо отключить, поскольку он привязывается к порту 53, который конфликтует с портом Dnsmasq.
Выполните следующие команды, чтобы отключить разрешенную службу:
sudo systemctl disable systemd-resolved sudo systemctl stop systemd-resolved
Также удалите resolv.conf
файл с символической ссылкой
$ ls -lh /etc/resolv.conf lrwxrwxrwx 1 root root 39 Aug 8 15:52 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf $ sudo rm /etc/resolv.conf
Затем создайте новый файл resolv.conf .
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Dnsmasq доступен в репозитории apt, простую установку можно выполнить, выполнив:
sudo apt-get install dnsmasq
Основной файл конфигурации для Dnsmasq /etc/dnsmasq.conf
. Настройте Dnsmasq, изменив этот файл.
sudo vim /etc/dnsmasq.conf
Здесь минимальная конфигурация
# Listen on this specific port instead of the standard DNS port # (53). Setting this to zero completely disables DNS function, # leaving only DHCP and/or TFTP. port=53 # Never forward plain names (without a dot or domain part) domain-needed # Never forward addresses in the non-routed address spaces. bogus-priv # By default, dnsmasq will send queries to any of the upstream # servers it knows about and tries to favour servers to are known # to be up. Uncommenting this forces dnsmasq to try each query # with each server strictly in the order they appear in # /etc/resolv.conf strict-order # Set this (and domain: see below) if you want to have a domain # automatically added to simple names in a hosts-file. expand-hosts # Set the domain for dnsmasq. this is optional, but if it is set, it # does the following things. # 1) Allows DHCP hosts to have fully qualified domain names, as long # as the domain part matches this setting. # 2) Sets the "domain" DHCP option thereby potentially setting the # domain of all systems configured by DHCP # 3) Provides the domain part for "expand-hosts" #domain=thekelleys.org.uk domain=mypridomain.com # Set Liste address listen-address=127.0.0.1 # Set to Server IP for network responses
Если вы хотите включить проверку DNSSEC и кэширование, раскомментируйте
#dnssec
Сделайте любые другие изменения, которые вы считаете актуальными, и перезапустите dnsmasq, когда закончите
sudo systemctl restart dnsmasq
Шаг 2: Добавление DNS-записей в Dnsmasq
Добавьте DNS записи в файл. /etc/hosts
, Dnsmasq будет отвечать на запросы клиентов, использующих эти записи.
$ sudo vim /etc/hosts 10.1.3.4 server1.mypridomain.com 10.1.4.4 erp.mypridomain.com 192.168.10.2 checkout.mypridomain.com 192.168.4.3 hello.world
Вам необходимо перезапустить службу dnsmasq после добавления записей.
sudo systemctl restart dnsmasq
Шаг 3: Тестирование функциональности DNS Dnsmasq
Чтобы убедиться, что Dnsmasq отвечает на добавленные нами записи, укажите DNS-сервер своих серверов на сервере Dnsmasq. Отредактируйте /etc/network/interfaces
для постоянной конфигурации или файл /etc/netplan/
на серверах Ubuntu 18.04.
Поскольку это тест, я изменю файл времени выполнения /etc/resolv.conf
$ sudo vim /etc/resolv.conf nameserver 127.0.0.1 nameserver 8.8.8.8
Тест с использованием dig:
$ dig A erp.mypridomain.com ; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> A erp.mypridomain.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43392 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;erp.mypridomain.com. IN A ;; ANSWER SECTION: erp.mypridomain.com. 0 IN A 10.1.4.4 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Tue Aug 21 10:35:41 UTC 2018 ;; MSG SIZE rcvd: 64
Вот еще один пример:
$ dig checkout.mypridomain.com A +noall +answer ; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> checkout.mypridomain.com A +noall +answer ;; global options: +cmd checkout.mypridomain.com. 0 IN A 192.168.10.2
You can confirm that we’re getting responses as configured.
Вы можете подтвердить, что мы получаем ответы в соответствии с настройками.
Настройте Dnsmasq в качестве DHCP-сервера (необязательно)
Вы можете использовать Dnsmasq для назначения IP-адресов клиентам, статическим или динамическим.
Отредактируйте файл a /etc/dnsmasq.conf
и укажите параметры DHCP. Вам необходимо предоставить:
- IP-адрес шлюза по умолчанию
- IP-адрес DNS-сервера (возможно, Dnsmasq или другой DNS-сервер)
- Маска подсети
- Диапазон адресов DHCP
- NTP сервер
См. Пример ниже
dhcp-range=192.168.3.25,192.168.3.50,24h dhcp-option=option:router,192.168.3.1 dhcp-option=option:ntp-server,192.168.3.5 dhcp-option=option:dns-server,192.168.3.5 dhcp-option=option:netmask,255.255.255.0
Перезапустите dnsmasq и настройте клиенты для получения IP-адреса с этого сервера.
sudo systemctl restart dnsmasq
Вывод
Dnsmasq — это простой в настройке DNS-кэш, который может ускорить работу в Интернете и разрешать записи домена в ваших системах. Вы также можете пользоваться его подсистемой DHCP, которую легко настроить и использовать для небольшой сети.