Як налаштувати кешування DNS за допомогою dnsmasq на Ubuntu

DNSmasq можна використовувати для кешування запитів 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-сервера.

  відмінності [+4 Tools to Check]

Коли ви використовуєте 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 ідентифікатори та пов’язані з ними інструкції можна налаштувати для кожного сервера або основного контролера. Dnsmasq підтримує як динамічні, так і статичні параметри DHCP. Він портативний і має можливість керувати DNS і DHCP принаймні для 1000 клієнтів.

Коли надходить DNS-запит, dnsmasq або відповідає з локального кешу, або передає його на авторитетний DNS-сервер. Окрім відповіді на запити DNS щодо адрес із конфігурацією DHCP, він перевіряє вміст файлу /etc/hosts, щоб визначити імена локальних хостів, яких немає в загальнодоступному DNS.

Використання інструменту dnsmasq замість вбудованого DNS-кешу браузера значно покращує продуктивність веб-перегляду. Він ідеально підходить для інтегрованого середовища з обмеженими ресурсами, оскільки його дуже просто налаштувати та потребує дуже мало місця на диску.

Особливості dnsmasq

  • Інтегрувати внутрішні DNS-сервери за допомогою dnsmasq просто, налаштувавши його для передачі конкретних запитів на розпізнавання доменних імен на певні авторитетні сервери.
  • За допомогою налаштованого локального DNS-сервера робоче навантаження на сервер зменшується, а надійність підвищується.
  • Налаштування DNS для кінцевих точок із підтримкою брандмауера є досить простим і не залежить від DNS, який використовує провайдер.
  • Якщо порт, підключений до Інтернету, недоступний під час виконання перевірки DNS на комп’ютері, операцію пошуку буде миттєво призупинено.
  • За допомогою запитів PPP (протокол точка-точка) або DHCP dnsmasq дійсно можна налаштувати на періодичний збір даних безпосередньо з базового сервера вирішення домену.
  Чому ви не можете заблокувати BitTorrent на своєму маршрутизаторі

монтаж

Перед установкою та налаштуванням утиліти dnsmasq необхідно вимкнути службу, яка відповідає системі dnsmasq.

systemctl stop systemd-resolved

Ви також можете приховати його за допомогою атрибута mask, щоб він не запускався автоматично під час перезавантаження.

 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.
  • необхідний домен – передає лише доменні імена на вищестоящий сервер DNS.
  • bogus-priv – забороняє переадресацію домену та порту
  • listen-address – щоб визначити адресу сервера імен. Як правило, локальний хост використовується за замовчуванням для налаштування локального сервера DNS.
  • домен – щоб налаштувати домени, які dnsmasq додає до коротких ідентифікаторів.
  • cache-size – максимальний розмір кешу DNS, дозволений у сховищі.
  Як не подобається комусь на POF

Після виконання всіх необхідних змін збережіть і закрийте конфігураційний файл. А наступним кроком є ​​редагування файлу /etc/resolv.conf, щоб додати адресу локального хосту. Використовуйте наведену нижче команду, щоб відкрити за допомогою наноредактора.

nano /etc/resolv.conf

Тут ви можете знайти всі сервери імен, які ваша система використовує для вирішення адрес. У цей список також додайте адресу петлі. Додайте «nameserver 127.0.0.1» і збережіть його в першому рядку.

Збережіть і вийдіть із конфігураційного файлу. Щоб оновлені параметри вступили в силу, перезапустіть утиліту dnsmasq.

systemctl restart dnsmasq

Тестування сервера локального кешування DNS

Перевірити локальний DNS-сервер легко. Відкрийте командний рядок і скористайтеся командою dig, щоб перевірити кешування DNS. Коли ви виконуєте команду dig вперше, результат має бути досить звичайним.

┌──(root💀kali)-[/home/writer]
└─# dig techukraine.net.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> techukraine.net.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:
;techukraine.net.com.                 IN      A

;; ANSWER SECTION:
techukraine.net.com.          227     IN      A       172.66.43.163
techukraine.net.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 ще раз, і ви помітите значне зменшення часу запиту.

┌──(root💀kali)-[/home/writer]
└─# dig techukraine.net.com                                                                                     1 ⚙

; <<>> DiG 9.18.0-2-Debian <<>> techukraine.net.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:
;techukraine.net.com.                 IN      A

;; ANSWER SECTION:
techukraine.net.com.          281     IN      A       172.66.40.93
techukraine.net.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-сервери для швидшого перегляду в різних операційних системах.