Поиск по сайту:

Как настроить локальный преобразователь DNS с помощью Dnsmasq в Ubuntu 20.04


На этой странице

  1. Предпосылки
  2. Начало работы
  3. Установить Dnsmasq
  4. Настроить Dnsmasq
  5. Добавить записи DNS на сервер Dnsmasq
  6. Проверьте разрешение сервера Dnsmasq
  7. Настройка удаленного клиента для использования DNS-сервера Dnsmasq
  8. Заключение

Dnsmasq расшифровывается как «сокращение от DNS masquerade» и представляет собой простой, легкий и простой в использовании DNS-сервер пересылки, используемый для небольшой сети. Его можно настроить как DNS-кэш и DHCP-сервер, и он поддерживает протоколы IPv4 и IPv6. Когда он получает какие-либо DNS-запросы, он отвечает на них из своего кеша или перенаправляет на другой DNS-сервер.

Dnsmasq состоит из трех подсистем:

  • Подсистема DNS: используется для кэширования записей различных типов, включая A, AAAA, CNAME и PTR.
  • Подсистема DHCP: поддерживает DHCPv4, DHCPv6, BOOTP и PXE.
  • Подсистема маршрутизатора: обеспечивает базовую автоматическую настройку хостов IPv6. Его можно использовать отдельно или в сочетании с DHCPv6.

В этом руководстве мы покажем вам, как настроить локальный DNS-сервер с Dnsmasq на сервере Ubuntu 20.04.

Предпосылки

  • Сервер под управлением Ubuntu 20.04.
  • Пароль root настраивается на сервере.

Начиная

Во-первых, рекомендуется обновить системные пакеты до последней версии. Вы можете обновить все пакеты, выполнив следующую команду:

apt-get update -y

После обновления всех пакетов вам нужно будет отключить службу Systemd-resolved в вашей системе. Служба Systemd-resolved используется для разрешения сетевых имен локальным приложениям.

Вы можете отключить его, выполнив следующую команду:

systemctl disable --now systemd-resolved

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

Вы можете удалить файл resolv.conf по умолчанию с помощью следующей команды:

rm -rf /etc/resolv.conf

Затем добавьте DNS-сервер Google в файл resolv.conf с помощью следующей команды:

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

Как только вы закончите, вы можете перейти к следующему шагу.

Установить DNSmasq

По умолчанию Dnsmasq доступен в стандартном репозитории Ubuntu 20.04. Вы можете установить его, просто выполнив следующую команду:

apt-get install dnsmasq dnsutils ldnsutils -y

После завершения установки службы Dnsmasq будут запущены автоматически. Вы можете проверить статус 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-11-02 11:02:01 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>

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

Как только вы закончите, вы можете перейти к следующему шагу.

Настроить DNS-маску

Далее вам нужно будет настроить Dnsmasq как локальный DNS-сервер. Вы можете сделать это, отредактировав основной файл конфигурации Dnsmasq:

nano /etc/dnsmasq.conf

Измените следующие строки:

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1,your-server-ip
expand-hosts
domain=dns-example.com
cache-size=1000

Сохраните и закройте файл, когда закончите.

Затем вам нужно будет добавить IP-адрес вашего сервера в качестве основного сервера имен в файле resolv.conf. Вы можете добавить его с помощью следующей команды:

nano /etc/resolv.conf

Добавьте следующую строку над строкой \nameserver 8.8.8.8\:

nameserver your-server-ip

Сохраните и закройте файл, когда закончите. Затем проверьте сервер на наличие ошибок конфигурации с помощью следующей команды:

dnsmasq --test

Если все в порядке, вы должны получить следующий вывод:

dnsmasq: syntax check OK.

Наконец, перезапустите службу Dnsmasq, чтобы применить изменения:

systemctl restart dnsmasq

На данный момент Dnsmasq запущен и прослушивает порт 53. Вы можете проверить это с помощью следующей команды:

ss -alnp | grep -i :53

Вы должны получить следующий результат:

udp     UNCONN   0        0                                             0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=4))                                             
udp     UNCONN   0        0                                                [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=6))                                             
tcp     LISTEN   0        32                                            0.0.0.0:53                                                0.0.0.0:*                      users:(("dnsmasq",pid=41051,fd=5))                                             
tcp     LISTEN   0        32                                               [::]:53                                                   [::]:*                      users:(("dnsmasq",pid=41051,fd=7))                                             

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

Далее вам нужно будет отредактировать файл /etc/hosts и добавить запись локального DNS-сервера.

nano /etc/hosts

Добавьте следующую строку:

your-server-ip host1.dns-example.com

Сохраните и закройте файл, когда закончите.

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

На этом этапе Dnsmasq установлен и настроен. Нет, пришло время проверить разрешение DNS.

Вы можете использовать команду dig для проверки разрешения DNS, как показано ниже:

dig host1.dns-example.com +short

Если все в порядке, вы должны увидеть IP-адрес вашего сервера в следующем выводе:

your-server-ip

Вы также можете проверить внешнее разрешение DNS с помощью следующей команды:

dig linux-console.net +short

Вы должны получить следующий результат:

172.67.68.93
104.26.3.165
104.26.2.165

Настройка удаленного клиента для использования DNS-сервера Dnsmasq

Далее вам необходимо настроить удаленный клиент для использования DNS-сервера Dnsmasq в качестве DNS-сервера по умолчанию.

Сначала установите инструменты DNS с помощью следующей команды:

apt-get install dnsutils ldnsutils -y

После установки вам нужно будет отредактировать файл /etc/resolv.conf и запись DNS-сервера Dnsmasq.

nano /etc/resolv.conf

Добавьте следующую строку в начало файла:

nameserver your-server-ip

Сохраните и закройте файл, когда закончите.

Затем проверьте локальное разрешение DNS с помощью следующей команды:

dig host1.dns-example.com

Вы должны увидеть следующий вывод:

; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com
;; global options: +cmd
;; Got answer:
;; HEADER opcode: QUERY, status: NOERROR, id: 26401
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1.dns-example.com.		IN	A

;; ANSWER SECTION:
host1.dns-example.com.	0	IN	A	45.58.32.165

;; Query time: 301 msec
;; SERVER: 45.58.32.165#53(45.58.32.165)
;; WHEN: Mon Nov 02 16:49:37 IST 2020
;; MSG SIZE  rcvd: 66

Далее вам нужно будет проверить свой DNS-сервер для кэширования. Проверить это можно с помощью утилиты Drill.

Сначала выполните следующую команду:

drill google.com | grep "Query time"

Вы должны увидеть следующий вывод:

;; Query time: 290 msec

Затем снова запустите команду, чтобы проверить, работает ли кеширование:

drill google.com | grep "Query time"

Вы должны увидеть, что время запроса теперь уменьшается до 4 мс:

;; Query time: 4 msec

Заключение

Поздравляем! вы успешно установили и настроили Dnsmasq в качестве локального DNS-сервера и Ubuntu 20.04. Я надеюсь, что теперь вы можете легко реализовать его в своей локальной сети для разрешения имен.