Настройка локальных 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.