Головна FreeBSD Встановлення кешуючого DNS-сервера Unbound

Встановлення кешуючого DNS-сервера Unbound

Встановлення кешуючого DNS-сервера Unbound
Встановлення кешуючого DNS-сервера Unbound

В FreeBSD 10-ї версії класичний DNS-сервер "з коробки" Bind був замінений на Unbound. Розробники заявляють що він шустріший, легший в налаштуванні і приємніший в роботі в ролі кешуючого сервера. Давайте спробуємо його встановити собі і перевірити чи так воно є насправді.

Unbound розповсюджується за ліцензією BSD. При роботі сервера в кешуючому режимі, весь кеш знаходиться в пам‘яті. Порівняно з BIND має справді дуже малий розмір і дуже високу продуктивність. Сервер має модульну структуру і має можливість роботи з DNSSEC.

Встановлення сервера


Якщо у вас FreeBSD вище 10.0 то цей пакунок у вашій системі вже встановлено!


Як і будь-який інший, цей пакунок може бути встановлений з системи пакунків:

pkg install unbound

так і з системи портів:

make install clean -C /usr/ports/dns/unbound

Після встановлення попросимо Unbound згенерувати початковий конфіг, яким, з мінімальними правками, ми і будемо користуватись:

/etc/rc.d/local_unbound onesetup

Конфігурація

Конфігураційний файл unbound лежить в /etc/unbound/unbound.conf. Відредагуємо його під себе:

server:
        username: unbound
        directory: /var/unbound
        chroot: /var/unbound
        pidfile: /var/run/local_unbound.pid
        auto-trust-anchor-file: /var/unbound/root.key
        port: 53
        interface: 127.0.0.1
        interface: 10.15.1.1
        outgoing-interface: 193.84.22.241
        access-control: 10.15.1.0/24 allow
        access-control: 127.0.0.1 allow
        do-ip4: yes
        do-ip6: yes
        do-udp: yes
        do-tcp: yes
        hide-version: yes
include: /var/unbound/forward.conf
include: /var/unbound/lan-zones.conf
include: /var/unbound/control.conf
include: /var/unbound/conf.d/*.conf

ми додали рядки interface щоб вказати на яких інтерфейсах слухати клієнтські запити, задали  outgoing-interface з якого йтимуть запити в світ, додали списки доступу клієнтів (кому можна рекурсивні запити) опцією access-control, а також описали що хочемо слухати dual-stack IPv4 і IPv6 опціями do-ip4 і do-ip6 відповідно, і описали підтримку протоколів udp і tcp опціями do-udp і do-tcp відповідно. Опція hide-version, як видно з назви, приховує версію сервера.

В файлі /etc/unbound/forward.conf прописуються правила форвардинга, або іншими словами звідки брати інформацію серверу:

forward-zone:
        name: .
        forward-addr: 8.8.8.8
        forward-addr: 8.8.4.4

forward-zone:
       name: "local."
       forward-addr: xxx.xxx.xxx.xxx

тут в мене прописаний default-forward на гугл-ДНС (зона . означає всі домени інтернету) і зона local форвардиться окремо на ДНС провайдера. Увага! Точка в домені local не опечатка, так має бути

unbound-control

unbound-control використовується для керування сервером як rndc в bind. Всі можливості можна піддивитись командою unbound-control -h:

# unbound-control -h
Usage:  unbound-control [options] command
        Remote control utility for unbound server.
Options:
  -c file       config file, default is /var/unbound/unbound.conf
  -s ip[@port]  server address, if omitted config is used.
  -q            quiet (don't print anything if it works ok).
  -h            show this usage help.
Commands:
  start                         start server; runs unbound(8)
  stop                          stops the server
  reload                        reloads the server
                                (this flushes data, stats, requestlist)
  stats                         print statistics
  stats_noreset                 peek at statistics
  status                        display status of server
  verbosity <number>            change logging detail
  log_reopen                    close and open the logfile
  local_zone <name> <type>      add new local zone
  local_zone_remove <name>      remove local zone and its contents
  local_data <RR data...>       add local data, for example
                                local_data www.example.com A 192.0.2.1
  local_data_remove <name>      remove local RR data from name
  dump_cache                    print cache to stdout
  load_cache                    load cache from stdin
  lookup <name>                 print nameservers for name
  flush <name>                  flushes common types for name from cache
                                types:  A, AAAA, MX, PTR, NS,
                                        SOA, CNAME, DNAME, SRV, NAPTR
  flush_type <name> <type>      flush name, type from cache
  flush_zone <name>             flush everything at or under name
                                from rr and dnssec caches
  flush_bogus                   flush all bogus data
  flush_negative                flush all negative data
  flush_stats                   flush statistics, make zero
  flush_requestlist             drop queries that are worked on
  dump_requestlist              show what is worked on
  flush_infra [all | ip]        remove ping, edns for one IP or all
  dump_infra                    show ping and edns entries
  set_option opt: val           set option to value, no reload
  get_option opt                get option value
  list_stubs                    list stub-zones and root hints in use
  list_forwards                 list forward-zones in use
  list_insecure                 list domain-insecure zones
  list_local_zones              list local-zones in use
  list_local_data               list local-data RRs in use
  insecure_add zone             add domain-insecure zone
  insecure_remove zone          remove domain-insecure zone
  forward_add [+i] zone addr..  add forward-zone with servers
  forward_remove [+i] zone      remove forward zone
  stub_add [+ip] zone addr..    add stub-zone with servers
  stub_remove [+i] zone         remove stub zone
                +i              also do dnssec insecure point
                +p              set stub to use priming
  forward [off | addr ...]      without arg show forward setup
                                or off to turn off root forwarding
                                or give list of ip addresses
  ratelimit_list [+a]           list ratelimited domains
                +a              list all, also not ratelimited
Version 1.5.7
BSD licensed, see LICENSE in source package for details.
Report bugs to unbound-bugs@nlnetlabs.nl

в принципі розібратись неважко, і оскільки "з коробки" воно відключене - налаштуємо собі цей зручний інструмент.

Запускаємо утиліту 

unbound-control-setup -d /var/unbound

і слідуємо інструкціям, після чого додаємо в файл /var/unbound/control.conf наступне:

remote-control:
    control-enable: yes
    control-interface: 127.0.0.1
    control-port: 953
    server-key-file: "unbound_server.key"
    server-cert-file: "unbound_server.pem"
    control-key-file: "unbound_control.key"
    control-cert-file: "unbound_control.pem"

Тепер додамо наш сервер в /etc/rc.conf і запускаємо:

echo 'unbound_enable="YES"' >> /etc/rc.conf
service unbound start

На цьому налаштування кешуючого ДНС завершено, але сам unbound вміє ще багато різних плюшок, наприклад DNSSEC і обслуговування власних доменних зон.


Гарного адміністрування!

perm_identity event

Коментарі