DNS оптимизация · 4 min read · Oct 01, 2025
Ускорение доступа к DNS в регионах с очень низкой инфраструктурой
Ускорение доступа к DNS в регионах с очень низкой инфраструктурой
Введение
Предположим, вы находитесь на дорогом спутниковом соединении, которое едва обеспечивает достаточную пропускную способность для доступа к Интернету вашей компании, и вы хотите сделать все возможное, чтобы извлечь из этого соединения максимум. Более того, иногда вы теряете электричество от энергоснабжающей компании, достаточно долго, чтобы ваш ИБП разрядился. Есть несколько вещей, которые вы можете сделать, чтобы получить гораздо больше от вашего соединения. В этой статье мы рассмотрим ускорение ваших DNS-запросов, сохраняя кэш ответов на ваши DNS-запросы на жестком диске. Последующие DNS-запросы будут обслуживаться из кэша, и поскольку копия находится на диске, вы не потеряете ее при отключении питания или перезагрузке.
Обновленная версия этого документа доступна по адресу: www.httpcompression.net.
Анализ
Нужен ли мне это? Давайте посмотрим. Выполните следующую команду в вашем Linux:
dig www.httpcompression.netСреди прочего я получаю следующий результат:
;; Время запроса: 583 мсЧерез несколько секунд я снова выполнил команду и получил:
;; Время запроса: 612 мсОчевидно, что DNS-серверы моего провайдера просто пересылают запросы в США (я нахожусь в Аккре, Гана, Западная Африка, подключаясь к Интернету через подводный оптоволоконный кабель SAT3). По всей видимости, результаты первого запроса не были закэшированы. Если бы они были, они бы истекли к моменту второго запроса. Безусловно, такая среда является идеальным кандидатом для этой настройки.
Как сделать
Я работаю на сервере Ubuntu. Программное обеспечение, которое мы будем использовать, - это pdnsd. На сайте говорится следующее о pdnsd:
“pdnsd - это прокси DNS-сервер с постоянным кэшированием (содержимое кэша записывается на жесткий диск при выходе), который предназначен для работы с недоступными или отключенными DNS-серверами (например, в сетях с набором номера). Начиная с версии 1.1.0, pdnsd поддерживает негативное кэширование.”
Выполните следующую команду в вашем Ubuntu или любой другой дистрибуции на базе Debian:
apt-get install pdnsdПоявилась страница конфигурации с тремя вариантами “resolvconf / Использовать корневые серверы / Вручную”. Я выбрал “Вручную” и продолжил установку.
По умолчанию установка имеет файл конфигурации, части которого были закомментированы. Строка закомментирована с помощью “//“, в то время как многострочные комментарии оформлены как “/ /“. Например:
// Это закомментированная строка в файле конфигурации.
/*
Это закомментированные
строки в
файле конфигурации.
*/Используйте ваш любимый текстовый редактор, чтобы отредактировать следующие файлы конфигурации:
- /etc/default/pdnsd Измените строку с START_DAEMON следующим образом:
START_DAEMON=yes - /etc/pdnsd.conf В глобальной секции вы можете изменить следующую настройку: server_ip = 127.0.0.1; Это IP-адрес, по которому можно получить доступ к pdnsd. Если адрес оставить по умолчанию 127.0.0.1, только программы на самом сервере смогут получить доступ к серверу pdnsd. Однако, если вы хотите, чтобы другие серверы и ПК использовали эту установку pdnsd в качестве своего DNS-сервера, вам следует изменить IP-адрес на соответствующий IP-адрес на вашем сервере, который вы хотите, чтобы ваши клиенты использовали. Используйте секцию сервера, чтобы установить DNS-серверы, которые pdnsd будет использовать для разрешения доменных имен. Есть две секции сервера, которые по умолчанию закомментированы. Серверы opendns очень надежны и популярны, вы можете использовать их:
server { label="opendns"; ip = 208.67.220.220,208.67.222.222; }Убедитесь, что секция сервера не закомментирована. Если у вашего провайдера есть надежный DNS-сервер, вы можете использовать его вместо этого. По возможности, избегайте корневых серверов. - /etc/resolv.conf Этот файл содержит DNS-серверы, которые программы на вашем сервере (например, squid, apache) обычно используют для разрешения имен. Теперь вы захотите обратиться к локальному серверу pdnsd, который вы только что установили, поэтому введите IP-адрес вашего интерфейса обратной связи (lo), а именно 127.0.0.1. Это должно быть единственной записью в этом файле.
127.0.0.1
Тесты и выводы
Теперь запустите сервер pdnsd:
/etc/init.d/pdnsd startТеперь выполните следующую команду и обратите внимание на время запроса: в ответе, чтобы определить, насколько хорошо вы справляетесь:
dig www.httpcompression.net; DiG 9.4.2-P2 www.httpcompression.net
;; Время запроса: 3323 мс
;; СЕРВЕР: 127.0.0.1#53(127.0.0.1)
;; ВРЕМЯ: Пн Ноя 3 20:02:37 2008
;; РАЗМЕР СООБЩЕНИЯ получено: 71Через некоторое время выполните команду снова:
dig www.httpcompression.net; DiG 9.4.2-P2 www.httpcompression.net
;; Время запроса: 1 мс
;; СЕРВЕР: 127.0.0.1#53(127.0.0.1)
;; ВРЕМЯ: Пн Ноя 3 20:03:07 2008
;; РАЗМЕР СООБЩЕНИЯ получено: 71Из двух результатов выше, первый запрос занял 3323 мс, в то время как второй, через 30 секунд, занял всего 1 мс для разрешения. Теперь после перезагрузки сервера:
dig www.httpcompression.net;; Время запроса: 3 мс
;; СЕРВЕР: 127.0.0.1#53(127.0.0.1)
;; ВРЕМЯ: Пн Ноя 3 20:06:38 2008
;; РАЗМЕР СООБЩЕНИЯ получено: 71После перезагрузки запрос занял всего 3 мс для разрешения. Мы не потеряли наш кэш. Вы можете ознакомиться с руководством и изменить некоторые настройки в соответствии с вашей ситуацией. Некоторые из этих настроек:
- min_ttl: Минимальное время, в течение которого кэшированный ответ должен храниться, по умолчанию составляет 15 минут. Вы можете увеличить это значение, чтобы уменьшить частоту обращения к родительским серверам. Побочным эффектом является то, что если адрес сайта изменится, потребуется некоторое время, чтобы вашему qdnsd обратиться к родительским серверам за новым адресом. Если минимальное время недостаточно длинное, вы также потеряете свой кэш после длительного отключения питания.
- perm_cache: Это размер дискового пространства для вашего кэша. В зависимости от трафика в вашей сети, вы можете увеличить это значение до такого, которое может комфортно хранить как минимум недельные данные. Вы можете следить за размером файла кэша в течение определенного времени, чтобы понять, что будет для вас адекватным.
Get new posts in your inbox
No spam. Unsubscribe anytime.