DNS służy do wyszukiwania domeny i rozwiązania jej na adres IP. Zamiast sprawdzać różne domeny  bezpośrednio w Internecie, możemy skonfigurować serwer buforujący DNS w naszej sieci w celu rozwiązania DNS, co poprawi wydajność. Im więcej wysyłanych zapytań przez serwer buforujący, tym większa będzie pamięć podręczna, co jeszcze bardziej poprawi współczynnik trafień.

Lokalna pamięć podręczna rekordów DNS jest przechowywana bliżej systemów inicjujących żądania, co skutkuje szybszym czasem rozwiązywania. Te rekordy będą buforowane do czasu wygaśnięcia TTL lub opróżnienia pamięci podręcznej. Jeśli jakikolwiek inny system przeprowadzi wyszukiwanie DNS dla zapytania znajdującego się w pamięci podręcznej, może zostać zwrócony znacznie szybciej, ponieważ serwer buforujący nie będzie musiał przesyłać zapytania do innego serwera DNS w Internecie.

Istnieje wiele pakietów mogących działać jako pamięć podręczna DNS, takich jak Bind, Dnsmasq i Unbound. W naszym przykładzie będziemy pracować z Unbound.

Instalacja

# debian
apt-get install unbound -y
# centos
yum install unbound -y

Edytujemy plik konfiguracyjny

sudo nano /etc/unbound/unbound.conf

Przykładowy plik konfiguracyjny:

server:

    verbosity: 1
    use-syslog: yes
    logfile: "/var/log/unbound.log"
    log-time-ascii: yes

    # Podstawowe parametry zmień ip na własne #interface
    interface: 192.168.2.188
    #interface: ::1
    do-ip4: yes
    do-ip6: no
    do-udp: yes
    do-tcp: yes

    # dozwolone zapytania z localhost
    access-control: 127.0.0.0/8 allow

    # dowolone zapytania z tych sieci LAN
    access-control: 192.168.1.0/24 allow
    access-control: 192.168.2.0/24 allow

    # zabronione zapytania z tych sieci
    access-control: 0.0.0.0/0 refuse

    # use all CPUs - zmien weg wlasnych 
    num-threads: 2

    # power of 2 close to num-threads
    msg-cache-slabs: 16
    rrset-cache-slabs: 16
    infra-cache-slabs: 16
    key-cache-slabs: 16

    # Read the root hints from this file
    root-hints: "/var/lib/unbound/root.hints"

    harden-referral-path: yes
    use-caps-for-id: yes
    hide-identity: yes
    hide-version: yes
    harden-glue: yes
    harden-dnssec-stripped: yes

    # the time to live (TTL) value lower bound, in seconds. Default 0.
    # If more than an hour could easily give trouble due to stale data.
    # WARNING : against protocol rule but efficient against stupidly too low TTLs

    cache-min-ttl: 3600
  # the time to live (TTL) value cap for RRsets and messages in the
    # cache. Items are not cached for longer. In seconds.
    cache-max-ttl: 86400

    prefetch: yes

    # If nonzero, unwanted replies are not only reported in statistics, but also
    # a running total is kept per thread. If it reaches the threshold, a warning
    # is printed and a defensive action is taken, the cache is cleared to flush
    # potential poison out of it.  A suggested value is 10000000, the default is
    # 0 (turned off). We think 10K is a good value.
    unwanted-reply-threshold: 10000

    # Should additional section of secure message also be kept clean of unsecure
    # data. Useful to shield the users of this validator from potential bogus
    # data in the additional section. All unsigned data in the additional section
    # is removed from secure messages.
    val-clean-additional: yes

    # Log validation failures
    val-log-level: 2

    private-address: 192.168.0.0/16
    private-address: 172.16.0.0/12
    private-address: 10.0.0.0/8

    # Optimise
    # https://unbound.net/documentation/howto_optimise.html

    # Faster UDP with multithreading (only on Linux).
    so-reuseport: yes

    # Taille du cache
    rrset-cache-size: 100m
    msg-cache-size: 50m

    # gestion DNSSEC
   harden-below-nxdomain: yes
   harden-dnssec-stripped: yes

#Dodaj rekordy A dla wlasnych komputerow w sieci
#w ten sposob mozna bedzie je wywolywac po tej domenie
#jesli nie potrzebujesz skasuj lub zakomentuj
  local-data: "work.home A 192.168.2.4"
  local-data: "bsd.home A 192.168.2.105"
  local-data: "web.home A 192.168.2.188"


tworzymy plik log

touch /var/log/unbound.log
chmod 755 /var/log/unbound.log

dodajemy obsługe DNSSEC

unbound-control-setup

Teraz należy odblokować port 53 w firewall

ufw allow 53

Sprawdzamy konfiguracje

unbound-checkconf

dodajemy nasz serwer DNS do /etc/resolv.conf

#File: /etc/resolv.conf                                                                                            
nameserver 192.168.2.188

i uruchamiamy

service unbound start

 

Na tych systemach gdzie chcemy używać naszego serwera DNS dodajemy adres serwera unbound  w ustawieniach DNS.

 

TEST

 

Sprawdzimy teraz co daje nam buforowanie DNS ,wywołajmy 2 x jakąś domene ,za pierwszym razem jako że nie ma jej w cache serwera unbound potrwa to jakąś chwile,przykład

drill yahoo.com @192.168.2.188
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 23064
;; flags: qr rd ra ; QUERY: 1, ANSWER: 6, AUTHORITY: 5, ADDITIONAL: 8 
;; QUESTION SECTION:
;; yahoo.com.	IN	A

;; ANSWER SECTION:
yahoo.com.	3600	IN	A	98.138.219.232
yahoo.com.	3600	IN	A	98.138.219.231
yahoo.com.	3600	IN	A	72.30.35.10
yahoo.com.	3600	IN	A	72.30.35.9
yahoo.com.	3600	IN	A	98.137.246.7
yahoo.com.	3600	IN	A	98.137.246.8

;; AUTHORITY SECTION:
yahoo.com.	172800	IN	NS	ns5.yahoo.com.
yahoo.com.	172800	IN	NS	ns4.yahoo.com.
yahoo.com.	172800	IN	NS	ns3.yahoo.com.
yahoo.com.	172800	IN	NS	ns2.yahoo.com.
yahoo.com.	172800	IN	NS	ns1.yahoo.com.

;; ADDITIONAL SECTION:
ns1.yahoo.com.	1209600	IN	A	68.180.131.16
ns2.yahoo.com.	1209600	IN	A	68.142.255.16
ns3.yahoo.com.	1209600	IN	A	203.84.221.53
ns4.yahoo.com.	1209600	IN	A	98.138.11.157
ns5.yahoo.com.	1209600	IN	A	119.160.253.83
ns1.yahoo.com.	86400	IN	AAAA	2001:4998:130::1001
ns2.yahoo.com.	86400	IN	AAAA	2001:4998:140::1002
ns3.yahoo.com.	86400	IN	AAAA	2406:8600:b8:fe03::1003

;; Query time: 89 msec
;; SERVER: 192.168.2.188
;; WHEN: Thu Jul 18 03:43:17 2019
;; MSG SIZE  rcvd: 377

 

Serwer DNS rozwiązał domene yahoo.com w 89ms i teraz powinna być dostępna w cache a zatem zapytanie powinno sie wywołać dużo szybciej,sprawdżmy za drugim razem:

drill yahoo.com @192.168.2.188
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 42837
;; flags: qr rd ra ; QUERY: 1, ANSWER: 6, AUTHORITY: 5, ADDITIONAL: 8 
;; QUESTION SECTION:
;; yahoo.com.	IN	A

;; ANSWER SECTION:
yahoo.com.	3509	IN	A	98.138.219.232
yahoo.com.	3509	IN	A	98.138.219.231
yahoo.com.	3509	IN	A	72.30.35.10
yahoo.com.	3509	IN	A	72.30.35.9
yahoo.com.	3509	IN	A	98.137.246.7
yahoo.com.	3509	IN	A	98.137.246.8

;; AUTHORITY SECTION:
yahoo.com.	172709	IN	NS	ns5.yahoo.com.
yahoo.com.	172709	IN	NS	ns3.yahoo.com.
yahoo.com.	172709	IN	NS	ns2.yahoo.com.
yahoo.com.	172709	IN	NS	ns4.yahoo.com.
yahoo.com.	172709	IN	NS	ns1.yahoo.com.

;; ADDITIONAL SECTION:
ns1.yahoo.com.	1209509	IN	A	68.180.131.16
ns2.yahoo.com.	1209509	IN	A	68.142.255.16
ns3.yahoo.com.	1209509	IN	A	203.84.221.53
ns4.yahoo.com.	1209509	IN	A	98.138.11.157
ns5.yahoo.com.	1209509	IN	A	119.160.253.83
ns1.yahoo.com.	86309	IN	AAAA	2001:4998:130::1001
ns2.yahoo.com.	86309	IN	AAAA	2001:4998:140::1002
ns3.yahoo.com.	86309	IN	AAAA	2406:8600:b8:fe03::1003

;; Query time: 3 msec
;; SERVER: 192.168.2.188
;; WHEN: Thu Jul 18 03:44:48 2019
;; MSG SIZE  rcvd: 377

Widzimy że tym razem proces rozwiązywania trwał zaledwie 3 ms ponieważ znajduje sie już w buforze serwera DNS.

Comments powered by CComment