Как настроить локальный преобразователь DNS с помощью Dnsmasq в Ubuntu 20.04
На этой странице
- Предпосылки
- Начало работы
- Установить Dnsmasq
- Настроить Dnsmasq
- Добавить записи DNS на сервер Dnsmasq
- Проверьте разрешение сервера Dnsmasq
- Настройка удаленного клиента для использования DNS-сервера Dnsmasq
- Заключение
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. Я надеюсь, что теперь вы можете легко реализовать его в своей локальной сети для разрешения имен.