Как да настроите 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.

  Как да преместите Origin Games на друг диск

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.

Много потребители обикновено използват услугата Route 53 на Amazon за 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 кеш на браузъра значително подобрява производителността на сърфирането в интернет. Той е идеален за интегрирана среда с ограничени ресурси, защото е много лесен за настройка и изисква много малко дисково пространство.

  9 инструмента за създаване на ваш личен или бизнес чатбот 🤖

Характеристики на dnsmasq

  • Лесно е да интегрирате вътрешни DNS сървъри с помощта на dnsmasq, като го конфигурирате да предава определени заявки за разрешаване на имена на домейни до определени авторитетни сървъри.
  • Натоварването на сървъра е намалено и надеждността е подобрена с помощта на конфигурирания локален DNS сървър.
  • DNS конфигурацията за крайни точки с активирана защитна стена е доста лесна и независима от DNS, използван от ISP.
  • Ако портът, свързан с интернет, е недостъпен по време на извършване на DNS проверка на компютъра, операцията за търсене ще бъде незабавно спряна.
  • Чрез PPP (протокол от точка до точка) или DHCP заявки dnsmasq наистина може да бъде конфигуриран да събира периодично данни директно от основния сървър за разрешаване на домейни.

Инсталация

Услугата, разрешена от systemd, трябва да бъде изключена преди инсталиране и конфигуриране на помощната програма 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 сървъра нагоре по веригата.
  • фалшив-priv – предотвратява препращането на домейн и порт
  • listen-address – За определяне на адреса на сървъра за имена. Обикновено localhost се използва по подразбиране за настройка на локален DNS сървър.
  • домейн – За да конфигурирате домейните, които dnsmasq добавя към кратки идентификатори.
  • cache-size – Максималният разрешен размер на DNS кеширане в хранилището.
  Как да направите слайдове вертикални в PowerPoint

След извършване на всички необходими промени, запазете и затворете конфигурационния файл. Следващата стъпка е да редактирате файла /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 pctechbg.net.com                                                                                     1 ⚙

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

;; ANSWER SECTION:
pctechbg.net.com.          227     IN      A       172.66.43.163
pctechbg.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 msec за заявка на подробности от сървъра за имена нагоре по веригата. Изпълнете още веднъж същата команда dig и ще забележите значително намаляване на времето за заявка.

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

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

;; ANSWER SECTION:
pctechbg.net.com.          281     IN      A       172.66.40.93
pctechbg.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 msec. Това се дължи на факта, че след извършване на първоначалното търсене, dnsmasq съхранява данните и всички последващи търсения са мигновени поради използването на съхранения кеш. Рестартирането на dnsmasq е необходимо, ако искате да изтриете съхранения DNS кеш.

Обобщавайки

В тази статия видяхме как да настроим и конфигурираме dnsmasq да функционира като локален DNS сървър. Може също да ви е интересно да научите как да промените DNS сървърите за по-бързо сърфиране в различни операционни системи.