Jak skonfigurować buforowanie DNS za pomocą dnsmasq na Ubuntu?

DNSmasq może służyć do buforowania żądań DNS dla dystrybucji Linuksa. jednak może to być trochę trudne.

Pamięć podręczna DNS działa w celu przyspieszenia procedury wyszukiwania DNS, która konwertuje nazwę domeny witryny internetowej na powiązany z nią adres IP. Gdy kilku użytkowników w Twojej sieci odwiedza ten sam adres witryny, wykorzystanie lokalnego serwera pamięci podręcznej DNS może skrócić czas ładowania sieci.

Najpierw zobaczmy, co to jest buforowanie DNS.

Co to jest buforowanie DNS?

System DNS jest używany przez Internet do śledzenia wszystkich publicznie dostępnych witryn internetowych i powiązanych z nimi adresów IP. Można go porównać do książki telefonicznej. Korzystanie z DNS zapobiega nam konieczności zapamiętywania adresu IP każdej witryny, co jest wymagane do interakcji infrastruktury sieciowej z witrynami internetowymi.

Za każdym razem, gdy poprosisz wyszukiwarkę o wyświetlenie strony internetowej, dzieje się to za kulisami.

Chociaż twój system ma dostęp do dużej liczby zewnętrznych serwerów DNS, problem polega na tym, że posiadanie centralnej repliki DNS nadal przyspiesza transmisję i rozwiązywanie. To wtedy w grę wchodzi buforowanie DNS.

Przed wysłaniem żądania do sieci pamięć podręczna DNS obsługuje rozpoznawanie tożsamości dla ostatnio i często używanych domen, aby znacznie przyspieszyć procedurę.

Dostęp do serwera DNS jest możliwy zawsze, gdy konieczne jest przetłumaczenie adresu IP na nazwę domeny. Może to dodatkowo obciążyć serwer DNS, szczególnie jeśli witryna otrzymuje wiele żądań jednocześnie.

Pamięć podręczna DNS jest wykorzystywana w celu zmniejszenia żądań DNS i czasów odpowiedzi. Rozpoznane adresy IP wraz ze szczegółami hosta są zapisywane lokalnie. Zamiast inicjować nowe zapytanie DNS, wynik jest pobierany z pamięci podręcznej DNS przy następnym rozpoznaniu adresu IP lub nazwy domeny.

W jaki sposób buforowanie DNS pomaga naprawić sporadyczne usługi DNS rozwiązuje problemy w wystąpieniach Amazon EC2?

Większość systemów Linux nie używa lokalnej pamięci podręcznej DNS. Oznacza to, że wszystkie żądania DNS są wysyłane bezpośrednio do autorytatywnego programu rozpoznawania nazw DNS dostarczonego przez Amazon, który ma ograniczenie liczby żądań, które może przetworzyć jednocześnie. Problemy z rozpoznawaniem DNS występują, gdy jest wiele żądań.

Wdrożenie lokalnej pamięci podręcznej DNS w systemie pomoże zmniejszyć wykorzystanie procesora i sieci, jednocześnie zapobiegając błędom rozpoznawania DNS. Lokalna pamięć podręczna DNS odpowiada na zapytania kierowane do zewnętrznych zasobów DNS, takich jak Amazon RDS i S3.

Protokół DHCP jest używany podczas uruchamiania przez instancje Amazon EC2 połączone z Amazon VPC w celu żądania adresu serwera DNS.

Kiedy wykorzystujesz Amazon VPC do budowy wirtualnej chmury prywatnej, Route 53 DNS Resolver efektywnie wykorzystuje resolver na VPC, aby odpowiadać na żądania DNS dla instancji EC2 działających pod lokalnymi adresami internetowymi Amazon VPC i wpisami w prywatnie administrowanych strefach. Resolver wykonuje cykliczne wyszukiwania na publicznych serwerach DNS dla wszystkich dodatkowych adresów internetowych.

Pamięć podręczna DNS służy jako tymczasowy zapis poprzednich zapytań DNS, które nasz system może szybko zbadać podczas próby uzyskania dostępu do witryny internetowej. Prowadzi rejestr każdej istniejącej i kolejnej sesji. Ta pamięć podręczna DNS ułatwia rozwiązywanie domen i zapobiega błędom z instancjami Amazon EC2 Linux.

Wielu użytkowników zazwyczaj korzysta z usługi Amazon Route 53 dla DNS podczas uzyskiwania dostępu do AWS. Jest naprawdę łatwy w użyciu i prawie darmowy. Istnieje jednak wiele powodów, które mogą wpłynąć na decyzję użytkownika o korzystaniu z lokalnego serwera DNS.

Mimo że bind9 jest nadal świetną opcją do konfigurowania lokalnego serwera pamięci podręcznej DNS, dnsmasq jest znacznie prostszy w instalacji i konfiguracji zarówno na instancjach EC2, jak i na komputerze lokalnym.

Co to jest dnsmasq?

DNSmasq to narzędzie związane z Linuksem, które obsługuje buforowanie DNS, DHCP, TFTP i DNS. Jest kompaktowy i lekki, dzięki czemu idealnie nadaje się do sieci i zapór ogniowych o mniejszych ograniczeniach zasobów.

Instalacja i konfiguracja jest niezwykle prosta. Aby skonfigurować DNS i DHCP dla podsieci, dnsmasq jest elastycznym i praktycznym rozwiązaniem.

Możliwe jest skonfigurowanie tych przypisanych przez DHCP identyfikatorów i powiązanych instrukcji dla każdego serwera lub kontrolera bazowego. Dynamiczne i statyczne opcje DHCP są obsługiwane przez dnsmasq. Jest przenośny i ma możliwość zarządzania DNS i DHCP dla co najmniej 1000 klientów.

Po odebraniu zapytania DNS dnsmasq odpowiada z lokalnej pamięci podręcznej lub przesyła je do autorytatywnego serwera DNS. Oprócz odpowiadania na żądania DNS dotyczące adresów z konfiguracją DHCP, sprawdza zawartość pliku /etc/hosts w celu zidentyfikowania lokalnych nazw hostów, które nie są wymienione w publicznym DNS.

Wykorzystanie narzędzia dnsmasq zamiast wbudowanej pamięci podręcznej DNS przeglądarki znacznie zwiększa wydajność przeglądania Internetu. Jest idealny do zintegrowanego środowiska o ograniczonych zasobach, ponieważ jest bardzo prosty w konfiguracji i wymaga bardzo mało miejsca na dysku.

Funkcje dnsmasq

  • Można łatwo zintegrować wewnętrzne serwery DNS za pomocą dnsmasq, konfigurując go tak, aby przesyłał określone zapytania dotyczące rozpoznawania nazw domen do określonych serwerów autorytatywnych.
  • Dzięki skonfigurowanemu lokalnemu serwerowi DNS zmniejsza się obciążenie serwera i zwiększa niezawodność.
  • Konfiguracja DNS dla punktów końcowych z obsługą zapory jest dość łatwa i niezależna od DNS stosowanego przez dostawcę usług internetowych.
  • Jeśli port połączony z Internetem jest niedostępny podczas sprawdzania DNS na komputerze, operacja wyszukiwania zostanie natychmiast zawieszona.
  • Za pomocą zapytań PPP (protokół Point-to-point) lub DHCP, dnsmasq można naprawdę skonfigurować do okresowego zbierania danych bezpośrednio z bazowego serwera rozpoznawania domen.

Instalacja

Usługa rozwiązana przez systemd musi zostać wyłączona przed zainstalowaniem i skonfigurowaniem narzędzia dnsmasq.

systemctl stop systemd-resolved

Możesz również ukryć go za pomocą atrybutu maski, aby nie uruchamiał się automatycznie po ponownym uruchomieniu.

 systemctl mask systemd-resolved

Instalacja dnsmasq to początkowa czynność, którą należy wykonać po wyłączeniu rozwiązania systemd. DNSmasq jest preinstalowany w prawie wszystkich dystrybucjach Linuksa. Jeśli nie, możesz zainstalować go ręcznie. Uruchom terminal poleceń, a następnie wpisz następujące polecenie, aby to zrobić.

sudo apt-get install dnsmasq

Użyj następującego polecenia, jeśli jesteś użytkownikiem yum:

sudo yum install -y dnsmasq

To polecenie automatycznie instaluje narzędzie i uruchamia dnsmasq w tle.

Po udanej instalacji możesz sprawdzić stan dnsmasq za pomocą poniższego polecenia.

systemctl status dnsmasq

Jeśli pokazuje swój status jako „aktywny (uruchomiony)”, oznacza to, że instalacja została zakończona i skonfigurowana na porcie 53. Jeśli pokazuje swój status jako „nieaktywny (martwy)”, musisz ponownie uruchomić komputer Ubuntu i dnsmasq. To naprawi błąd.

Konfiguracja

Dnsmasq jest teraz gotowy do skonfigurowania na twoim komputerze jako lokalnego serwera DNS buforującego. Domyślny plik konfiguracyjny znajduje się w /etc/dnsmasq.conf. Ten plik konfiguracyjny musi zostać zmodyfikowany w celu skonfigurowania narzędzia dnsmasq w systemie.

Użyj tego polecenia, aby otworzyć i edytować plik konfiguracyjny.

nano /etc/dnsmasq.conf

Plik konfiguracyjny może być edytowany tylko z uprawnieniami administratora. Po prostu wyczyść wszystko w pliku, w tym komentarze, i po prostu skopiuj, wklej i zapisz to ustawienie konfiguracji.

port=53
domain-needed
bogus-priv
listen-address=127.0.0.1
expand-hosts
domain=geek-demo.com
cache-size=1000

Pokrótce opiszę, co oznacza każdy z parametrów.

  • Port — aby określić lub powiązać port, którego Dnsmasq będzie używać do odbierania żądań DNS.
  • wymagana domena — przesyła tylko nazwy domen do nadrzędnego serwera DNS.
  • bogus-priv – zapobiega przekierowaniu domen i portów
  • adres nasłuchu – Aby zdefiniować adres serwera nazw. Zazwyczaj do konfiguracji lokalnego serwera DNS domyślnie używany jest localhost.
  • domena — aby skonfigurować domeny, które dnsmasq dołącza do krótkich identyfikatorów.
  • cache-size — maksymalny rozmiar pamięci podręcznej DNS dozwolony w magazynie.

Po wykonaniu wszystkich niezbędnych zmian zapisz i zamknij plik konfiguracyjny. Następnym krokiem jest edycja pliku /etc/resolv.conf, aby dodać adres rozpoznawania lokalnego hosta. Użyj poniższego polecenia, aby otworzyć za pomocą edytora nano.

nano /etc/resolv.conf

Tutaj możesz znaleźć wszystkie serwery nazw używane przez twój system do rozwiązywania adresów. Na tej liście dodaj również adres pętli zwrotnej. Dodaj „nameserver 127.0.0.1” i zachowaj go w pierwszym wierszu.

Zapisz i wyjdź z pliku konfiguracyjnego. Aby zaktualizowane ustawienie zaczęło obowiązywać, uruchom ponownie narzędzie dnsmasq.

systemctl restart dnsmasq

Testowanie lokalnego serwera buforowania DNS

Testowanie lokalnego serwera DNS jest łatwe. Otwórz wiersz poleceń i użyj polecenia dig, aby sprawdzić buforowanie DNS. Kiedy uruchamiasz polecenie dig po raz pierwszy, wynik powinien być dość powszechny.

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

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

;; ANSWER SECTION:
newsblog.pl.com.          227     IN      A       172.66.43.163
newsblog.pl.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

W tym miejscu zwróć uwagę, że czas zapytania wynosi około 31 ms, aby uzyskać szczegółowe informacje z nadrzędnego serwera nazw. Wykonaj to samo polecenie dig jeszcze raz, a zauważysz znaczne skrócenie czasu zapytania.

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

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

;; ANSWER SECTION:
newsblog.pl.com.          281     IN      A       172.66.40.93
newsblog.pl.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

Tutaj czas zapytania wynosi 0 ms. Wynika to z faktu, że po wykonaniu wstępnego wyszukiwania dnsmasq przechowywał dane, a wszystkie kolejne wyszukiwania były natychmiastowe dzięki wykorzystaniu przechowywanej pamięci podręcznej. Ponowne uruchomienie dnsmasq jest konieczne, jeśli chcesz usunąć przechowywaną pamięć podręczną DNS.

Zawijanie

W tym artykule zobaczyliśmy, jak skonfigurować i skonfigurować dnsmasq, aby działał jako lokalny serwer DNS. Możesz również chcieć dowiedzieć się, jak zmienić serwery DNS w celu szybszego przeglądania w różnych systemach operacyjnych.