Как настроить кэширование DNS с помощью dnsmasq в Ubuntu
Опубликовано: 2022-10-19DNSmasq можно использовать для кэширования DNS-запросов для дистрибутивов Linux. однако это может быть немного сложно.
Кэш DNS работает для ускорения процедуры поиска DNS, которая преобразует доменное имя веб-сайта в связанный с ним IP-адрес. Когда несколько пользователей в вашей сети посещают один и тот же адрес веб-сайта, использование локального кэш-сервера DNS может сократить время, необходимое для загрузки Интернета.
Сначала давайте посмотрим, что такое кэширование DNS.
Что такое кэширование DNS?
DNS используется Интернетом для отслеживания всех общедоступных онлайн-сайтов и связанных с ними IP-адресов. Его можно сравнить с телефонным справочником. Использование DNS избавляет нас от необходимости запоминать IP-адрес каждого сайта, что необходимо для взаимодействия сетевой инфраструктуры с интернет-сайтами.
Всякий раз, когда вы запрашиваете у поисковой системы отображение веб-страницы, именно это происходит за кулисами.
Хотя ваша система имеет доступ к большому количеству внешних DNS-серверов, проблема заключается в том, что наличие центральной реплики DNS по-прежнему ускоряет передачу и разрешение. Это когда кеширование DNS вступает в игру.

Перед отправкой запроса в Интернет кэш DNS обрабатывает разрешение идентичности для недавно и часто посещаемых доменов, чтобы значительно ускорить процедуру.
Доступ к DNS-серверу осуществляется всякий раз, когда необходимо преобразовать IP-адрес в доменное имя. Это может создать дополнительную нагрузку на DNS-сервер, особенно если веб-сайт получает много запросов одновременно.
Кэш DNS используется для уменьшения запросов DNS и времени ответа. Разрешенные IP-адреса вместе с данными хоста сохраняются локально. Вместо того, чтобы инициировать новый DNS-запрос, результат извлекается из кэш-памяти DNS в следующий раз, когда необходимо разрешить IP-адрес или доменное имя.
Как DNS-кэширование помогает устранять периодически возникающие проблемы разрешения DNS на инстансах Amazon EC2?
Большинство систем Linux не используют локальный кеш DNS. Это означает, что все DNS-запросы отправляются напрямую полномочному преобразователю DNS, предоставленному Amazon, который имеет ограничение на количество запросов, которые он может обрабатывать за один раз. Проблемы с разрешением DNS возникают при большом количестве запросов.
Развертывание локального кэша DNS в системе поможет снизить нагрузку на ЦП и сеть, предотвратив при этом ошибки разрешения DNS . Локальный кеш DNS отвечает на запросы к внешним ресурсам DNS, таким как Amazon RDS и S3.
Протокол DHCP используется во время запуска экземплярами Amazon EC2, подключенными к Amazon VPC, для запроса адреса DNS-сервера.

Когда вы используете Amazon VPC для создания виртуального частного облака, Route 53 DNS Resolver эффективно использует преобразователь в VPC для ответа на DNS-запросы для инстансов EC2, работающих под локальными веб-адресами Amazon VPC и записями в зонах, администрируемых частным образом. Resolver выполняет периодический поиск всех дополнительных веб-адресов на общедоступных DNS-серверах.
Кэш DNS служит временной записью предыдущих DNS-запросов, которые наша система может быстро проверить при попытке доступа к веб-сайту в Интернете. Он ведет журнал каждого существующего и последующего сеанса. Этот кеш DNS упрощает разрешение домена и предотвращает ошибки с инстансами Amazon EC2 Linux.
Многие пользователи обычно используют службу Amazon Route 53 для DNS при доступе к AWS. Он действительно прост в использовании и почти бесплатен. Но есть ряд причин, которые могут повлиять на решение пользователя использовать локальный DNS-сервер.
Несмотря на то, что bind9 по-прежнему является отличным вариантом для настройки локального кэш-сервера DNS, dnsmasq гораздо проще установить и настроить как на инстансах EC2, так и на локальном компьютере.
Что такое dnsmasq?
DNSmasq — это связанный с Linux инструмент, который поддерживает кэширование DNS, DHCP, TFTP и DNS. Он сделан компактным и легким, что делает его идеальным для сетей и брандмауэров с меньшими ограничениями ресурсов.
Его невероятно просто установить и настроить. Для настройки DNS и DHCP для подсетей dnsmasq является гибким и практичным решением.
Эти назначенные DHCP идентификаторы и соответствующие инструкции можно настроить для каждого сервера или базового контроллера. Динамические и статические параметры DHCP поддерживаются dnsmasq. Он портативный и может управлять DNS и DHCP как минимум для 1000 клиентов.
При получении DNS-запроса dnsmasq либо отвечает из локального кеша, либо передает его на авторитетный DNS-сервер. В дополнение к ответам на запросы DNS для адресов с конфигурацией DHCP он проверяет содержимое файла /etc/hosts
, чтобы идентифицировать локальные имена хостов, которые не указаны в общедоступном DNS.
Использование инструмента dnsmasq вместо встроенного в браузер кеша DNS значительно повышает производительность работы в Интернете. Он идеально подходит для интегрированной среды с ограниченными ресурсами, поскольку очень прост в настройке и занимает очень мало места на диске.
Особенности dnsmasq
- С помощью dnsmasq легко интегрировать внутренние DNS-серверы, настроив его для передачи определенных запросов на разрешение доменных имен на определенные авторитетные серверы.
- Нагрузка на сервер снижается, а надежность повышается благодаря использованию настроенного локального DNS-сервера.
- Конфигурация DNS для конечных точек с включенным брандмауэром довольно проста и не зависит от DNS, используемого интернет-провайдером.
- Если порт, подключенный к Интернету, недоступен во время проверки DNS на компьютере, операция поиска будет немедленно приостановлена.
- С помощью запросов PPP (протокол «точка-точка») или DHCP dnsmasq действительно можно настроить для периодического сбора данных непосредственно с базового сервера разрешения доменов.
Монтаж
Перед установкой и настройкой утилиты dnsmasq
необходимо отключить службу systemd-resolved
.
systemctl stop systemd-resolved
Вы также можете скрыть его, используя атрибут маски , чтобы он не запускался автоматически при перезагрузке.
systemctl mask systemd-resolved
Установка dnsmasq — это начальное действие, которое необходимо выполнить после отключения systemd-resolved
. DNSmasq предустановлен почти во всех дистрибутивах Linux. Если нет, вы можете установить его вручную. Запустите командный терминал, а затем введите следующую команду, чтобы сделать это.

sudo apt-get install dnsmasq
Используйте следующую команду, если вы являетесь пользователем yum:
sudo yum install -y dnsmasq
Эта команда автоматически устанавливает инструмент и запускает dnsmasq
в фоновом режиме.

После успешной установки вы можете проверить статус dnsmasq
с помощью приведенной ниже команды.
systemctl status dnsmasq
Если он показывает свой статус как «активный (работает)», это означает, что установка выполнена и настроена на порт 53. Если он показывает свой статус как «неактивный (мертвый)», вам нужно снова перезапустить как машину Ubuntu, так и dnsmasq. Это исправит ошибку.

Конфигурация
Теперь Dnsmasq готов к настройке на вашем компьютере в качестве локального кеширующего DNS-сервера. Файл конфигурации по умолчанию находится в /etc/dnsmasq.conf
. Этот файл конфигурации необходимо изменить, чтобы настроить утилиту dnsmasq
в системе.
Используйте эту команду, чтобы открыть и отредактировать файл конфигурации.
nano /etc/dnsmasq.conf
Файл конфигурации должен редактироваться только с правами root. Просто очистите все в файле, включая комментарии, и просто скопируйте-вставьте и сохраните этот параметр конфигурации.
port=53 domain-needed bogus-priv listen-address=127.0.0.1 expand-hosts domain=geek-demo.com cache-size=1000
Позвольте мне кратко описать, что означает каждый из параметров.
- Порт — чтобы указать или привязать порт, который Dnsmasq будет использовать для получения DNS-запросов.
- domain-needed — передает только доменные имена вышестоящему DNS-серверу.
- bogus-priv — предотвращает перенаправление доменов и портов
- listen-address — для определения адреса сервера имен. Обычно локальный хост используется по умолчанию для настройки локального DNS-сервера.
- домен — для настройки доменов, которые dnsmasq добавляет к коротким идентификаторам.
- cache-size — максимальный размер кэширования DNS, разрешенный в хранилище.

После внесения всех необходимых изменений сохраните и закройте файл конфигурации. И следующий шаг — отредактировать файл /etc/resolv.conf
, чтобы добавить адрес разрешения локального хоста. Используйте приведенную ниже команду, чтобы открыть с помощью редактора nano.
nano /etc/resolv.conf
Здесь вы можете найти все серверы имен, которые ваша система использует для разрешения адресов. В этот список также добавьте петлевой адрес. Добавьте « nameserver 127.0.0.1 » и оставьте его в первой строке.

Сохраните и выйдите из файла конфигурации. Чтобы обновленная настройка вступила в силу, перезапустите утилиту dnsmasq.
systemctl restart dnsmasq
Тестирование локального DNS-сервера кэширования
Проверить локальный DNS-сервер несложно. Откройте командную строку и используйте команду dig для проверки кэширования DNS. Когда вы запускаете команду dig в первый раз, результат должен быть довольно обычным.
┌──(rootkali)-[/home/writer] └─# dig geekflare.com 1 ; <<>> DiG 9.18.0-2-Debian <<>> geekflare.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 623 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;geekflare.com. IN A ;; ANSWER SECTION: geekflare.com. 227 IN A 172.66.43.163 geekflare.com. 227 IN A 172.66.40.93 ;; Query time: 31 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP) ;; WHEN: Sat Oct 15 07:52:49 EDT 2022 ;; MSG SIZE rcvd: 74
Здесь обратите внимание, что время запроса составляет около 31 мс для запроса сведений с вышестоящего сервера имен. Выполните ту же самую команду dig еще раз, и вы заметите значительное сокращение времени запроса.
┌──(rootkali)-[/home/writer] └─# dig geekflare.com 1 ; <<>> DiG 9.18.0-2-Debian <<>> geekflare.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21942 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;geekflare.com. IN A ;; ANSWER SECTION: geekflare.com. 281 IN A 172.66.40.93 geekflare.com. 281 IN A 172.66.43.163 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP) ;; WHEN: Sat Oct 15 07:58:10 EDT 2022 ;; MSG SIZE rcvd: 74
Здесь время запроса равно 0 мс. Это связано с тем, что после выполнения первоначального поиска dnsmasq сохранил данные, и все последующие поиски были мгновенными из-за использования сохраненного кеша. Перезапуск dnsmasq необходим, если вы хотите удалить сохраненный кеш DNS.
Подведение итогов
В этой статье мы увидели, как настроить и настроить dnsmasq для работы в качестве локального DNS-сервера. Вам также может быть интересно узнать, как изменить DNS-серверы для более быстрого просмотра в разных операционных системах.