Настройка локальных DNS-сервер с помощью Dnsmasq в Ubuntu 20.04

Настройка локальных DNS-сервер с помощью Dnsmasq в Ubuntu 20.04

Добро пожаловать в наш учебник по установке и настройке локального DNS-сервера с помощью Dnsmasq в Ubuntu 20.04. « Dnsmasq — это легкий, простой в настройке сервер пересылки DNS и DHCP-сервер. Он предназначен для предоставления DNS и, опционально, DHCP и TFTP в небольшой сети. Он может обслуживать имена локальных машин, которых нет в глобальном DNS ».

Если вы хотите избавить себя от необходимости настраивать DNS-сервер в соответствии с BIND9, использование Dnsmasq — это самый простой и быстрый способ настроить и запустить локальный DNS-сервер.

Поэтому в этой настройке мы будем настраивать Dnsmasq в качестве нашего локального кэширующего DNS-сервера для ускорения до локального разрешения DNS.

Запустить обновление системы

Обновите кеш вашего системного пакета;

apt update

Установите Dnsmasq в Ubuntu 20.04

Dnsmasq доступен в репозиториях Ubuntu 20.04 Universe. Однако перед установкой dnsmasqв Ubuntu 20.04 отключите службу с разрешением Systemd ( системная служба, которая обеспечивает разрешение сетевых имен для локальных приложений ).

systemctl disable --now systemd-resolved

Удалите файл resolv.conf по умолчанию и создайте новый с данными вашего настраиваемого DNS-сервера, чтобы вы могли выполнить установку.

rm -rf /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf

Как только это будет сделано, Dnsmasq можно будет установить, выполнив команду ниже;

apt install dnsmasq
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  dns-root-data dnsmasq-base libidn11
Suggested packages:
  resolvconf
The following NEW packages will be installed:
  dns-root-data dnsmasq dnsmasq-base libidn11
0 upgraded, 4 newly installed, 0 to remove and 73 not upgraded.
Need to get 382 kB of archives.
After this operation, 1,155 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

Это устанавливает и запускает и позволяет службе Dnsmasq запускаться при загрузке системы.

systemctl status dnsmasq
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
     Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-10-06 19:12:31 UTC; 15s ago
   Main PID: 17726 (dnsmasq)
      Tasks: 1 (limit: 2282)
     Memory: 868.0K
     CGroup: /system.slice/dnsmasq.service
             └─17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e>

Oct 06 19:12:31 ubuntu20 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server...
Oct 06 19:12:31 ubuntu20 dnsmasq[17705]: dnsmasq: syntax check OK.
Oct 06 19:12:31 ubuntu20 dnsmasq[17726]: started, version 2.80 cachesize 150
Oct 06 19:12:31 ubuntu20 dnsmasq[17726]: DNS service limited to local subnets
Oct 06 19:12:31 ubuntu20 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>
Oct 06 19:12:31 ubuntu20 dnsmasq[17726]: reading /etc/resolv.conf
Oct 06 19:12:31 ubuntu20 dnsmasq[17726]: using nameserver 8.8.8.8#53
Oct 06 19:12:31 ubuntu20 dnsmasq[17726]: read /etc/hosts - 7 addresses
Oct 06 19:12:31 ubuntu20 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.

Настройте локальный DNS-сервер с помощью Dnsmasq в Ubuntu 20.04

После установки Dnsmasq вы можете приступить к настройке его в качестве локального кэширующего DNS-сервера в Ubuntu 20.04. /etc/dnsmasq.conf— это файл конфигурации Dnsmasq по умолчанию. Поэтому для настройки dnsmasq вам необходимо отредактировать /etc/dnsmasq.confфайл.

Прежде всего, создайте копию файла конфигурации;

cp /etc/dnsmasq.conf{,.bak}

Затем откройте файл конфигурации для редактирования;

vim /etc/dnsmasq.conf

Файл хорошо прокомментирован, и все параметры конфигурации говорят сами за себя.

Для начала установите порт, на котором Dnsmasq будет прослушивать DNS-запросы. По умолчанию это порт 53 UDP. Вы также можете явно указать порт с помощью portопции.

port=53

Отключить пересылку имен без точки или доменной части;

domain-needed

Отключить пересылку адресов в немаршрутизируемых адресных пространствах;

bogus-priv

Определите интерфейс (например interface=enp0s8) или IP-адрес (например, listen-address=192.168.x.x), на котором Dnsmasq может прослушивать запросы DNS. Обычно по умолчанию используется адрес обратной связи. В этой настройке мы устанавливаем Dnsmasq для ответа как на внутренние, так и на внешние запросы DNS через петлевой и не петлевой интерфейс IP.

listen-address=127.0.0.1,192.168.57.3

Соответственно замените IP-адрес интерфейса.

Включите Dnsmasq для автоматического добавления доменной части к простым именам;

expand-hosts

Задайте домен для добавления dnsmasq к простым именам;

domain=kifarunix-demo.com

Отрегулируйте размер кешированных доменных имен. По умолчанию это  150.

cache-size=1000

Приведенных выше параметров конфигурации достаточно для базового локального кэширующего DNS-сервера с использованием Dnsmasq.

Без строк комментариев вот как выглядит наш конфигурационный файл Dnsmasq;

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1,192.168.57.3
expand-hosts
domain=kifarunix-demo.com
cache-size=1000

Сохраните и выйдите из файла конфигурации после внесения изменений.

Добавьте IP-адрес DNS-сервера Dnsmasq в файл / etc / hosts

Затем добавьте IP-адрес Dnsmasq в качестве основного DNS-сервера в /etc/resolv.conf.

sed -i '1i nameserver 192.168.57.3' /etc/resolv.conf

/etc/resolv.confТеперь выглядит следующим образом ;

cat /etc/resolv.conf
nameserver 192.168.57.3
nameserver 8.8.8.8

Добавить локальные записи DNS на сервер Dnsmasq

Добавьте локальные записи DNS в /etc/hostsфайл сервера Dnsmasq .

echo -e «192.168.57.19 centos8.kifarunix-demo.com \ n192.168.57.6 ubuntu18.kifarunix-demo.com» >> / etc / hosts

Сделайте то же самое для других ваших локальных доменных имен.

Перезапустите Dnsmasq

Запустите проверку конфигурации Dnsmasq;

dnsmasq --test
dnsmasq: syntax check OK.

Перезапустите Dnsmasq;

systemctl restart dnsmasq

Подтверждение порта 53;

netstat -alnp | grep -i :53
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      18313/dnsmasq       
tcp6       0      0 :::53                   :::*                    LISTEN      18313/dnsmasq       
udp        0      0 0.0.0.0:53              0.0.0.0:*                           18313/dnsmasq       
udp6       0      0 :::53                   :::*                                18313/dnsmasq

Обратите внимание, что dnsmasq привязывается к подстановочному адресу, даже если он прослушивает только некоторые интерфейсы. Это имеет то преимущество, что работает, даже когда интерфейсы приходят и уходят и меняют адрес.

Откройте порт DNS на UFW

Если UFW включен, откройте 53 порт DNS, UDP.

ufw allow from 192.168.0.0/16 to any port 53 proto udp

Соответственно обновите исходную сеть.

Проверить разрешение DNS

Разрешение локального домена;

dig ubuntu18.kifarunix-demo.com +short
192.168.57.3

Разрешение внешнего DNS;

dig google.com +short
216.58.223.110

Настройка DNS-сервера на удаленных клиентах

Теперь, когда Dnsmasq готов отправлять как локальные, так и внешние запросы DNS через локальный DNS-сервер, обновите запись DNS для клиентов в /etc/resolv.conf.

echo "nameserver 192.168.57.3" > /etc/resolv.conf

Соответственно замените IP-адрес Dnsmasq.

Выполнять локальные запросы DNS;

dig ubuntu18.kifarunix-demo.com
; <<>> DiG 9.11.13-RedHat-9.11.13-6.el8_2.1 <<>> ubuntu18.kifarunix-demo.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57550
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ubuntu18.kifarunix-demo.com.	IN	A

;; ANSWER SECTION:
ubuntu18.kifarunix-demo.com. 0	IN	A	192.168.57.3

;; Query time: 1 msec
;; SERVER: 192.168.57.3#53(192.168.57.3)
;; WHEN: Tue Oct 06 00:20:02 EAT 2020
;; MSG SIZE  rcvd: 72

Теперь давайте рассчитаем время DNS-запросов с помощью утилиты детализации . Чтобы использовать этот инструмент, вам необходимо установить ldns-utilsпакет в CentOS или ldnsutilsпакет в Ubuntu. Предполагая, что пакеты установлены, используйте drillутилиту для проверки кэширования DNS;

Первый запуск запроса;

drill google.com | grep "Query time"
;; Query time: 25 msec

Второй запрос;

drill google.com | grep "Query time"
;; Query time: 1 msec

Ура !! теперь Dnsmasq настроен и работает локальный кэширующий DNS-сервер. Это знаменует конец нашего руководства по установке и настройке локального DNS-сервера с помощью Dnsmasq в Ubuntu 20.04.

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

пятнадцать − 8 =