Универсальный резолвер – unbound

Install-Unbound
Rate this post

Сегодня я бы хотел поведать еще об одном важном компоненте IT инфрастуктуры таким каким несомненно является резолвер. И в качестве такого резолвера я бы хотел бы представить вам очень быстрый и надежный сервер для кеширования ДНС – unbound. Пользуюсь я им давно и его возможности и производительность во всем меня устраивает. То же самое касается и простоты настройки этого демона. В целом конфигурационный файл его снабжен достаточно подробными пояснения так, что разобраться во всем хозяйстве не сложно, но я на некоторых моментах все-таки остановлюсь

В самом конфигурационном файле довольно много опций, я буду показывать только те, которые в основном используются, те что остаются по умолчанию я не буду упоминать. Итак начнем, в начале конфига есть секция, где указываются настройки самого сервера:

server:
#Указывает как подробно будут идти записи в логи, есть вариант 0 - совсем мало, 1 - чуть побольше
verbosity: 1
#Интервал сбора статистики в секндах
statistics-interval: 30
# Расширенная статистика, по умолчанию выключена, влияет на скорость работы, нужна только при каких-то отладочных моментах
# extended-statistics: no
# Количество тредов запускаемых при старте демона
num-threads: 4

Тут все понятно, логи, статистика, ну и мультитредовость, куда уж без нее на мноядерных системах.

Дальше у нас немного настроек по интерфейсам, на каких адресах висеть и какие порты слушать:

# По умолчанию работает на (127.0.0.1 и ::1).
# Можно указать 0.0.0.0 и ::0 тогда будет работать на всех имеющихся адресах.
# Я указываю конкретные адреса на которых резолверу можно работать, так удобнее и надежнее, по одному интерфейсу на строчку
interface: 127.0.0.1
interface: 10.11.12.15
interface: 10.12.13.16
interface: 122.3.22.131
# interface: 192.0.2.154@5003
# interface: 2001:DB8::5
# Экспериментальная опция, включающая подстановку адреса источника в ответ, работает не везде, выключаю, поскольку не особо и надо
interface-automatic: no
# Можно указать порт для работы отличный от дефолтного 53, по сути это скорее вредно чем полезно и может пригодится только в очень малом количестве случаев
# port: 53
# Указываем адрес с которого будут уходить запросы к внешним ДНС, поскольку будут приходить туда же стоит указывать внешний адрес
outgoing-interface: 122.3.22.131
# outgoing-interface: 2001:DB8::5
# outgoing-interface: 2001:DB8::6

Дальше в конфиге идет довольно большая секция касающаяся сетевых настроек, лимитов и разного рода таймаутов, по большей части они хороши как есть и прекрасно будут работать и так, поэтому стоит их трогать если действительно может помочь решить какую-то проблему.

# Включаем IPv4, "yes" или "no".
do-ip4: yes
# Включаем IPv6, "yes" или "no".
do-ip6: no
# Включаем UDP, "yes" или "no".
do-udp: yes
# Включаем TCP, "yes" или "no".
do-tcp: yes
# Запускаем как демона, "yes" or "no".
do-daemonize: yes

# Указываем с каких адресов можно делать запросы через этот резолвер, указываем тех кому действительно можно
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.0/8 allow
access-control: 10.0.0.0/8 allow
access-control: 122.3.22.0/22 allow
# access-control: ::1 allow
# access-control: ::ffff:127.0.0.1 allow

Довольно важные параметры для настройки, помогающие контролировать и ограничивать кому можно и кому нельзя пользоваться резолверами, помогает отсеять постороних
Дальше идет довольно большое количество опций для настройки безопасности работы демона и ухода от различного типа атак, тут каждый может указать то что ему больше подходит по назначению и условиям работы.

# Полезная довольно опция, в которой можно указать какие зоны обслуживаются локально и с помощью опции local-data указать значения тех или иных записей
# При этом с помощью разных опций указать что делать с запросами для этих зон
# o deny - сбрасывает все запросы.
# o refuse - отбивает с ошибкой.
# o static - отдает статически прописанные значения которые есть в local-data, на все остальное выдает что нет данных
# o transparent - отдает значения в local data, но и нормально резолвит остальные записи
# o redirect - перенаправляет запросы на другой домен.
# o nodefault - используется для резолвинга AS112 зон.
local-zone: "grombon.local." transparent
local-zone: "10.10.in-addr.arpa." transparent
local-zone: "lookup.net." transparent
# Примеров с использования local-data может быть несколько
# local-data: "mycomputer.local. IN A 192.0.2.51"
# local-data: 'mytext.local TXT "content of text record"'
# local-data: "adserver.example.com A 127.0.0.1"
# local-zone: "example.com" redirect
# local-data: "example.com A 192.0.2.3"
# local-data-ptr: "192.0.2.3 www.example.com"

Следующие несколько параметров дают возможность удаленного управления unbound, если вам это действительно нужно, то разберетесь сами тут все не так уж и сложно

В конце конфигурационного файла есть возможность для указания зон запросы для которых нужно в обязательном порядке перенаправлять на другие сервера

# Перенаправляет все запросы для зоны на указанный адрес
stub-zone:
name: "lookup.net"
stub-addr: 165.45.55.15
# форвардит все запросы на указанные адреса неймсерверов, очень схожий с предыдущей опцией параметр.
forward-zone:
name: "example.ru"
forward-addr: 165.45.55.15
forward-addr: 165.45.54.15
forward-addr: 165.45.53.15
forward-zone:
name: "grombon.local"
forward-addr: 165.45.55.15
forward-addr: 165.45.54.15
forward-addr: 165.45.53.15
forward-zone:
name: "10.10.in-addr.arpa"
forward-addr: 165.45.55.15
forward-addr: 165.45.54.15
forward-addr: 165.45.53.15

В целом разобраться во всем не так уж и сложно, сложностей никаких. В работе сервер неприхотлив, надежен и требует минимума внимания. Настроил и забыл. То что надо.