Кеширующий DNS сервер

Всем привет!
После написания вчерашней статье о настройке NAT, решил написать еще пару материалов для организации локальной сети предприятия.
В этом материале рассмотрим настройку кеширующего DNS сервера unbound, который пришел на смену предустановленному Bind в 10х версиях FreeBSD.
Использование Unbound в локальной сети позволит немного сократить трафик, плюсом является, что можно организовать свою внутреннюю зону, что даст возможность обращаться например к внутренним web серверам по имени.

Итак, дано (все тоже самое, что и в прошлой статье):

  1. FreeBSD 11.2-RELEASE-p3
  2. Сетевой интерфейс em0 IP 4.4.4.4 — смотрит в мир (WAN)
  3. Сетевой интерфейс em1 IP 192.168.33.1 — смотрит в локальную сеть (LAN)

Unbound является предустановленным программным обеспечением во FreeBSD 11, и позволяет легко организовать кеширующий DNS сервер с возможностью настройки рабочих ethernet интерфейсов и ограничение доступа по IP адресам, так же позволяет поднятие своей локальной зоны.
Разрешаем запуск Unbound:

# echo local_unbound_enable=\"YES\" >> /etc/rc.conf

Инициализируем запуск Ubound, при этом он создаст нужные ему конфигурационные файлы:

# /etc/rc.d/local_unbound setup

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

# vi /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 #на каком ip адресе обрабатывать клиентов
        interface: 192.168.33.1 #на каком ip адресе обрабатывать клиентов
        outgoing-interface: 4.4.4.4 # исходящий интерфейс
        access-control: 192.168.33.0/24 allow # разрешаем подключаться из этой сети
        access-control: 127.0.0.1 allow # само собой разрешаем
        do-ip4: yes #Работаем на ipv4
        do-ip6: no #ipv6 отключаем (я не использую)
        do-udp: yes # разрешаем UDP протокол
        do-tcp: yes # разрешаем TCP протокол
include: /var/unbound/forward.conf
include: /var/unbound/lan-zones.conf
include: /var/unbound/control.conf
include: /var/unbound/conf.d/*.conf

Проверим forward.conf:

# vi /etc/unbound/forward.conf

Должно быть примерно следующее:

# Modifications will be overwritten.
forward-zone:
        name: .
        forward-addr: 8.8.8.8
        forward-addr: 8.8.4.4

В forward.conf можно указать для какой-либо зоны определенный DNS сервер (например авторитарный сервер, чтобы получать обновление зоны очень быстро):

forward-zone:
       name: "marvins.ru."
       forward-addr: xxx.xxx.xxx.xxx #Как правило адрес авторитарного DNS сервера

Добавим в lan-zones.conf описание нашей локальной сети:

# vi /etc/unbound/lan-zones.conf
server:
        # Unblock reverse lookups for LAN addresses
        unblock-lan-zones: yes
        insecure-lan-zones: yes
        local-zone: "33.168.192.in-addr.arpa." static
        local-data: "33.168.192.in-addr.arpa. 10800 IN NS marvins.lan."
        local-data: "33.168.192.in-addr.arpa. 10800 IN SOA marvins.lan. admin.marvins.lan. 1 3600 1200 604800 10800"
        local-data: "marvins.lan. 10800 IN A 192.168.33.1"
        local-data: "1.33.168.192.in-addr.arpa. 10800 IN PTR marvins.lan."
        local-data: "1.33.168.192.in-addr.arpa. 10800 IN PTR gateway.marvins.lan."
        local-data: "gateway.marvins.lan. 10800 IN A 192.168.33.1"

Как видим, мы добавили зону lan. наш сервер объявили обслуживающим зону (NS запись) как marvins.lan
И добавили A и PTR записи для имени gateway.marvins.lan.

Стартуем сервер:

# /etc/rc.d/local_unbound start
Starting local_unbound.
Waiting for nameserver to start... good

Проверим:

 # sockstat | grep unbound
unbound  unbound    50311 3  udp4   127.0.0.1:53          *:*
unbound  unbound    50311 4  tcp4   127.0.0.1:53          *:*
unbound  unbound    50311 5  udp4   192.168.33.1:53       *:*
unbound  unbound    50311 6  tcp4   192.168.33.1:53       *:*

Видим, что все хорошо:)
На клиенте прописываем наш DNS сервер, пробуем пингануть что-нибудь:

C:\Users\Administrator>ping ya.ru

Обмен пакетами с ya.ru [87.250.250.242] с 32 байтами данных:
Ответ от 87.250.250.242: число байт=32 время=6мс TTL=54
Ответ от 87.250.250.242: число байт=32 время=5мс TTL=54
Ответ от 87.250.250.242: число байт=32 время=6мс TTL=54
Ответ от 87.250.250.242: число байт=32 время=5мс TTL=54

Статистика Ping для 87.250.250.242:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 5мсек, Максимальное = 6 мсек, Среднее = 5 мсек

Проверяем как резольвятся наши локальные имена:

C:\Users\Administrator>ping gateway.marvins.lan

Обмен пакетами с gateway.marvins.lan [192.168.33.1] с 32 байтами данных:
Ответ от 192.168.33.1: число байт=32 время<1мс TTL=64
Ответ от 192.168.33.1: число байт=32 время<1мс TTL=64
Ответ от 192.168.33.1: число байт=32 время<1мс TTL=64
Ответ от 192.168.33.1: число байт=32 время<1мс TTL=64

Статистика Ping для 192.168.33.1:
    Пакетов: отправлено = 4, получено = 4, потеряно = 0
    (0% потерь)
Приблизительное время приема-передачи в мс:
    Минимальное = 0мсек, Максимальное = 0 мсек, Среднее = 0 мсек

Видим, что все работает.
В следующем материале опишу установку и настройку DHCP сервера.

Рейтинг
( 1 оценка, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Комментарии: 4
  1. alexey256

    Я правильно понял, что lan-zones.conf находится в /var/unbound (как указано в основном файле конфигурации), а не в /etc/unbound ?

    1. alexey256

      Вопрос снят)) не увидел, что это симлинк

  2. Yarik

    Какой смысл добавлять НЕСКОЛЬКО строк local-data: «1.33.168.192.in-addr.arpa. 10800 IN PTR … ?

    1. Vladimir (автор)

      Приветствую!
      Конечно никакого смысла нет. это опечатка:)

Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.