DNS настройка · 5 min read · Oct 01, 2025
Как настроить локальный DNS-резолвер с помощью Dnsmasq на Ubuntu 20.04

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 - Легковесный DHCP и кэшированный DNS-сервер
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 ubuntu2004 systemd[1]: Starting dnsmasq - Легковесный DHCP и кэшированный DNS-сервер...
Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: синтаксическая проверка ОК.
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: запущен, версия 2.80, размер кэша 150
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS-сервис ограничен локальными подсетями
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: параметры времени компиляции: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi>
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: чтение /etc/resolv.conf
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: использование nameserver 8.8.8.8#53
Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: прочитано /etc/hosts - 7 адресов
Nov 02 11:02:12 ubuntu2004 systemd[1]: Запущен dnsmasq - Легковесный DHCP и кэшированный DNS-сервер.
Когда вы закончите, вы можете перейти к следующему шагу.
Настройка Dnsmasq
Далее вам нужно будет настроить 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-адрес вашего сервера в качестве основного nameserver в файл resolv.conf. Вы можете добавить его с помощью следующей команды:
nano /etc/resolv.confДобавьте следующую строку выше строки “nameserver 8.8.8.8”:
nameserver your-server-ip
Сохраните и закройте файл, когда закончите. Затем проверьте сервер на наличие ошибок конфигурации с помощью следующей команды:
dnsmasq --testЕсли все в порядке, вы должны получить следующий вывод:
dnsmasq: синтаксическая проверка ОК.
Наконец, перезапустите службу 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 howtoforge.com +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. Я надеюсь, что теперь вы сможете легко внедрить его в вашу локальную сеть для разрешения имен.
Get new posts in your inbox
No spam. Unsubscribe anytime.