В 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 і обслуговування власних доменних зон.
Гарного адміністрування!
Коментарі