Najlepszy sposób na skonfigurowanie buforowania DNS?

28

Aby przyspieszyć wyszukiwanie DNS, chcę zainstalować pamięć podręczną DNS lub serwer proxy.

Widzę co najmniej trzy programy, które - jak sądzę - wykonają zadanie: bind9, pdnsd lub dnsmasq.

Chciałbym się upewnić, że jeśli zainstaluję jeden, nie pozostawi go źle skonfigurowanego z punktu widzenia wydajności lub bezpieczeństwa. Co więc poleciliby ludzie i czy są jakieś zmiany w konfiguracji, które powinienem wprowadzić natychmiast po instalacji?


źródło
Dla jednej stacji roboczej, prawda? A może rozmawiamy o LAN / ISP?
Tak, służy to przyspieszeniu poszczególnych stacji roboczych, a nie sieci LAN.

Odpowiedzi:

15
  1. Zainstaluj bind9
  2. Punkt resolv.conf do 127.0.0.1

Aby to zrobić, wykonaj następujące kroki:

Aby zainstalować Bind9

  1. Otwórz „Centrum oprogramowania Ubuntu” (Aplikacje-> Centrum oprogramowania Ubuntu)
  2. Wyszukaj bind9
  3. Zaznacz, aby wyświetlić „Elementy techniczne”
  4. Zaznacz bind9 i zainstaluj go

Zaktualizuj /etc/resolv.conf

  1. Otwórz Network Manager (System-> Preferencje-> Network Manager)
  2. Znajdź swoje połączenie i edytuj je (przewodowe lub bezprzewodowe)
  3. Przełącz zakładkę „Konfiguracja IPV4”
  4. W polu „Serwery DNS” wpisz 127.0.0.1

Zrobione!

Testować

Otwórz terminal gnome (Aplikacje> Akcesoria> Terminal) i wpisz

dig ubuntu.com 

(jeśli go nie masz, zainstaluj pakiet dnsutils, jak wyjaśniono w bind9)

Sprawdź ostatnie odpowiedzi, jako przykład:

Moje pierwsze zapytanie na ubuntu.com

;; Query time: **209 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:20:12 2011
;; MSG SIZE  rcvd: 196

Moje drugie zapytanie:

;; Query time: **0 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:18:23 2011
;; MSG SIZE  rcvd: 156

Serwer 127.0.0.1 oznacza, że ​​rozwiązujesz problemy lokalnie. Spójrz na czas zapytania (otoczony **), drugi jest buforowany.

Lin
źródło
Dzięki, Igor. Wypróbowałem to podejście i działa ono dobrze w przypadku wyszukiwania nazw, ale wydaje się, że nie buforuje odwrotnych wyszukiwań adresów IP. Jak miałbym to zrobić za pomocą bind9?
To nic nie zrobiło w mojej konfiguracji. Czas zapytania wynosi nadal ~ 100ms
Ashfame
Oboje: jeśli wydaje się, że nie działa, sprawdź, z jakiego wykopu serwera wynika, że ​​otrzymał odpowiedź. Jeśli nie mówi 127.0.0.1, oznacza to, że nie skonfigurowałeś go poprawnie. Uwaga: Instrukcje ustawiania resolv.conf mogą być różne dla różnych wersji Ubuntu.
thomasrutter,
Więc używasz buforującego serwera nazw na GUI? Tak, jest to oczywiście możliwe. Bardziej niż prawdopodobne, że większość czytających ppl będzie miała instalację serwera - a GUI jest opcjonalny. Prosty sudo apt install bind9i sudo nano /etc/resolv.confpowinien zostać dodany do odpowiedzi jako alternatywa.
bshea
Zrobiłem wszystko, ale konfiguracja nie działa. W końcu zrobiłem resolv.confto 127.0.0.1. Czy to może zawieść? dig ubunut.commówi „Przekroczono limit czasu połączenia; nie można było nawiązać połączenia z serwerami”
Satya Prakash
9

Poleciłbym dnsmasq,

Zobacz fajny samouczek tutaj; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

Możesz przeczytać porównanie tutaj;

http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software

dblang
źródło
Używam dnsmasq do buforowania DNS. Dostarczono także lokalne odwzorowania z / etc / hosts i DHCP (opcjonalnie używając / etc / ethers.)
BillThor
Próbowałem dnsmasq i działa on tak samo jak bind9 do buforowania wyszukiwań nazw, ale nie wydaje się również buforować wyszukiwań adresów IP. Czy jest to możliwe przy użyciu dnsmasq?
1
Uwaga: Menedżer sieci zastępuje plik resolv.conf przy każdym uruchomieniu.
daithib8
6

„Aby przyspieszyć wyszukiwanie DNS, chcę zainstalować pamięć podręczną DNS lub serwer proxy”.

Dobrze. Ale jest też łatwiejszy sposób. Korzystanie z serwerów nazw OpenDNS i / lub Google będzie szybsze niż Twoja lokalna pamięć podręczna dla nazw, które już istnieją w pamięci podręcznej OpenDNS / Google. Używanie 208.67.222.222, 208.67.220.220 i / lub 8.8.8.8 jako nazw serwów będzie szybsze prawie przez cały czas. Możesz to przetestować za pomocą, time nslookup www.google.com 208.67.222.222aby przetestować szybkość na jednym z serwerów nazw OpenDNS, time nslookup www.google.com 8.8.8.8dla Google lub time nslookup www.google.com 127.0.0.1na lokalnej pamięci podręcznej. Kiedy mówię szybciej, mam na myśli technicznie szybszy i nie tak szybszy, że człowiek może łatwo zauważyć różnicę.

„Widzę co najmniej trzy programy, które, jak sądzę, wykonają zadanie: bind9, pdnsd lub dnsmasq.”

Czy jesteś otwarty na część djscache djbdns? Instrukcje poniżej. Chociaż nie oszczędza pamięci podręcznej bez łatki ...

sudo apt-get remove bind9 dnsmasq-base
sudo apt-get install djbdns dnscache-run
sudo killall -9 dnsmasq
sudo update-rc.d -f bind9 remove

Następnie będziemy musieli powiedzieć systemowi, aby używał naszej pamięci podręcznej.

sudo gedit /etc/resolv.conf

Edytuj plik, aby wyglądał jak w tym przykładzie. Ten plik określa, których serwerów nazw użyć, domyślnej domeny i sufiksu wyszukiwania. Sufiks wyszukiwania umożliwia uruchamianie zapytań przy użyciu tylko części nazwy hosta w pełni kwalifikowanej nazwy domeny. Na przykład „nslookup www” automatycznie staje się „nslookup www.example.com”, gdy example.com jest wartością parametru „search”.

nameserver 127.0.0.1      # Use the local resolver first.
nameserver 208.67.222.222 # OpenDNS
nameserver 8.8.8.8        # Google
domain example.com
search example.com

To trochę wymyślne, ale musimy zdobyć najnowsze serwery nazw root.

sudo dnsip $(dnsqr ns . | sed -e '/answer/!d;s/\(.*\)NS \(.*\)/\2/') | sudo tee /etc/dnscache/root/servers/@

Myślę, że plik resolv.conf jest nadpisywany, gdy używamy DHCP. Postanawiam podać sobie statyczny adres IP i usunąć oprogramowanie, które go zgniata, edytując plik interfejsów, aby skonfigurować statyczny adres IP. Ale możesz spróbować współpracować z Network Managerem, jeśli masz na to ochotę.

sudo apt-get purge network-manager network-manager-gnome
sudo gedit /etc/network/interfaces

Mój plik interfejsów wygląda następująco, ale zmodyfikuj swój do swojej konfiguracji.

# Loopback
#
auto lo
iface lo inet loopback

# First network card (attached to NAT router, attached to cable internet)
#
auto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Teraz uruchommy ponownie.

sudo reboot

Teraz używasz lokalnego resolvera i najnowszych serwerów głównych. Ale zauważysz, jeśli spróbujesz, że OpenDNS i Google faktycznie odpowiadają szybciej (dla nazw znajdujących się w ich pamięciach podręcznych, które są najpopularniejszymi domenami). Nie ma dodatkowej konfiguracji, która mogłaby spowodować, że oprogramowanie stanie się bardziej bezpieczne niż jest.


źródło
Dzięki Christopher. Czy możesz wyjaśnić, dlaczego Google DNS jest szybszy niż moja lokalna pamięć podręczna? Wierzę, że jest szybki, ale jak może być szybsze przejście do ich serwera niż przejście do mojej lokalnej pamięci podręcznej?
Eric Johnson
Ponieważ są bardzo duże szanse, że ma już odpowiedź bez konieczności jej ponownego wyszukiwania.
@Christopher: Ale kiedy już ma lokalną pamięć podręczną, wyszukiwania są natychmiastowe. Jeśli korzystasz z Google DNS, musisz za każdym razem, gdy wykonasz zapytanie, czekać 80 ms.
Zan Lynx,
@Zan Lynx Tak .. więc spraw, by Twoja lokalna pamięć podręczna zapytała Google. Woo-hoo!
6
Chociaż @ user8290 ma rację, nie powiedziałbym, że korzystanie z GoogleDNS jest szybsze niż lokalne. Tak, Google ma wyniki w pamięci podręcznej, ale daj spokój - jeśli Twoja międzynarodowa prędkość jest do kitu, nie ma znaczenia, nawet jeśli Google ma wszystkie wyniki DNS na świecie. Sieci lokalne zwykle mają ponad 100 Mb / s, więc zapytanie lokalnego serwera DNS o odpowiedź będzie co najmniej 10 razy szybsze niż zapytanie 8.8.8.8/8.8.4.4 (w zależności od prędkości międzynarodowej). Oczywiście pod tym względem wynik jest buforowany na serwerze DNS.
tftd,
3

Używam „ dnscache ” ( pakiet „dnscache-run” ) i jest to bardzo proste. Nie musisz niczego konfigurować.
Przechwytuje petycje DNS ( port 53 ) i buforuje odpowiedzi, kiedy następnym razem Linux poprosi o tę domenę, dnscache natychmiast zwraca adres IP.
Chociaż istnieją dwa parametry, które można zmienić w celu ulepszenia tego programu:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT
Juan Simón
źródło
0

Niezależnie od tego, jakiego narzędzia używasz, upewnij się, że port 53 nie jest włączony na wejściu do zapory. Możesz zezwolić tylko hostowi z dostępem wychodzącym z pamięci podręcznej.

DNSMasq jest łatwy w konfiguracji i dobrze udokumentowany. Jeśli instalujesz go na zaporze ogniowej, określ interfejsy, które chcesz powiązać z wyłączeniem interfejsu internetowego.

Powiązanie jest trudniejsze do skonfigurowania i może być przesadą jako pamięć podręczna dla małej sieci. Uważam, że domyślną konfiguracją jest tylko buforowanie. Możesz dodać listę ACL, aby ograniczyć adresy, które mogą korzystać z twojego serwera.

BillThor
źródło
0

Pakiet uruchamiany dnscache miał najmniej konfliktów z innymi pakietami, takimi jak libvirt, które używają mostkowania sieciowego i dnsmasq.

sudo apt-get install dnscache-run

Ten pakiet usuwa resolvconf (/etc/resolv.conf) i będziesz musiał użyć / etc / network / interfaces lub menedżera sieci, aby zobaczyć konfigurację.

rickfoosusa
źródło