Форум OlegON > Компьютеры и Программное обеспечение > Сеть

Установка primary и secondary DNS серверов на примере knot : Сеть

24.04.2024 8:53


16.06.2022 19:15
OlegON
 
Очень нравится мне софт от чешских ребят, а глюки совершенно постороннего софта и сервисов, вкупе с их нюансами настройки меня немного подзадрали, поэтому я решил поднять свой собственный сервер DNS.




Как выяснилось, при прописывании серверов надо их обязательно иметь два. Причем, r01 (мой регистратор) предоставляет возможность второй сервер использовать его, однако, при попытке уведомить его о трансфере, я получил REFUSED, и заявка у регистратора залегла настолько (чуть ли не неделю уже там валяется), что проще показалось завести себе отдельную VDS из дешевых, и поднять еще один secondary там.

Итак, ставим knot вот этот вот
knot.x86_64 : High-performance authoritative DNS server
Прописываем конфиги.

На мастере:
Код:
server:
    rundir: "/run/knotd"
    user: knotd:knotd
    automatic-acl: on
    listen: [ 192.168.1.1@55 ]
    udp-workers: 1
    tcp-workers: 1
    background-workers: 1
mod-rrl:
  - id: default
    rate-limit: 100
    slip: 2
log:
  - target: syslog
    any: info
database:
    storage: "/var/lib/knot/"
remote:
  - id: secondary
    address: 176.119.147.80
template:
  - id: default
    semantic-checks: on
    dnssec-signing: on
    global-module: mod-rrl/default
    notify: secondary
    storage: "/etc/knotd/"
    file: "%s.zone"
zone:
  - domain: olegon.net
zone:
  - domain: olegon.org
zone:
  - domain: olegon.ru
Вот пример файла зоны, который, соответственно конфигу, лежит в /etc/knotd/olegon.net.zone, остальные зоны лежат в соответствующих *.zone там же.
Код:
olegon.net.             3600    SOA     ns.olegon.net. support.olegon.ru. 3 7200 3600 4000000 3600
olegon.net.             300     A       77.37.184.187
olegon.net.             3600    NS      ns.olegon.ru.
olegon.net.             3600    NS      ns2.olegon.ru.
bot.olegon.net.         300     A       77.37.184.187
www.olegon.net.         300     A       77.37.184.187
Немного о конфиге, как видите, он запускается на LAN-адресе, но на порту 55, потому, что у меня на этой же машине работает еще и knot-resolver, но на штатном 53. Это необходимо учитывать при пробросе порта снаружи на эту машину. Я сначала пробросил на 53 и словил много интереснейших глюков. Количество worker'ов я зарезал, чтобы инсталляция была минимальной по ресурсам. Никакой особой нагрузки на сервер не планируется.

Плагин mod-rrl предназначен для предотвращения DDoS'а с участием вашего сервера. То есть, ограничение в 100 запросов вполне себе устроит маленький сервер.

Журнал пишется в syslog с уровнем info. Отмечу, что сам по себе сервер достаточно немногословен даже на уровне debug.
Общая помойка лежит в /var/lib, адрес secondary отмечается в секции remote, а в template перечисляются параметры для всех зон. В частности, есть указание на автоматическое подписывание DNSSEC и уведомления secondary. В самом начале включены автоматические ACL, так что для secondary будет разрешен запрос зоны.

Чтобы потестировать, с адреса secondary можно выполнить запрос на трансфер зоны olegon.net, например, так
Код:
dig axfr @77.37.184.187 olegon.net
приедет (по крайней мере должно) содержимое файла зоны. Обратите внимание, что он достаточно сильно перезаписывается при dnssec-signing: on, появится много соответствующих записей, помимо тех, что добавите вы сами. И, да, SERIAL в SOA knot увеличивает сам (у меня в данном случае 3).
Можно и сами А-записи запросить
Код:
dig www.olegon.net @77.37.184.187 
; <<>> DiG 9.16.29-RH <<>> www.olegon.net @77.37.184.187
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44213
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
Я сначала немного переживал, что у меня AUTHORITY: 0, однако, как оказалось, это нормально и признаком того, что сервер считает себя авторизованным для зоны - "aa" во флагах.
Еще очень понравился сервис для проверки DNS -

После разнообразных тестов можно переходить к конфигу secondary, он такой же простой
Код:
server:
    rundir: "/run/knot"
    user: knot:knot
    automatic-acl: on
    listen: [ 176.119.147.80@53 ]
    udp-workers: 1
    tcp-workers: 1
    background-workers: 1
mod-rrl:
  - id: default
    rate-limit: 100
    slip: 2
log:
  - target: syslog
    any: info
database:
    storage: "/var/lib/knot"
remote:
  - id: primary
    address: 77.37.184.187
template:
  - id: default
    dnssec-signing: on
    storage: "/var/lib/knot"
    file: "%s.zone"
    global-module: mod-rrl/default
    master: primary
zone:
   - domain: olegon.net
zone:
   - domain: olegon.org
zone:
   - domain: olegon.ru
Как видно, ничего особенного, только файлы я на secondary делал просто общей помойкой.

Вот и все... Запустил оба сервера после соответствующих пробросов портов (надо пробрасывать 53 порт TCP и UDP), они между собой синхронизировались.

Не очень очевидно было, что писать у хостера, который выдал мне домен. Если прописать ns.olegon.ru у самого хостера на домене olegon.ru, то как это имя бы разрешилось? Для этого, как оказалось, есть специальный вариант записи, то есть у других доменов я прописывал только имя, а у самого olegon.ru, которому принадлежали NS, запись внес так:
Код:
ns.olegon.ru 77.37.184.187
ns2.olegon.ru 176.119.147.80
то есть, через пробел адрес. Все работает, всем принимается.
Вот еще одна неплохая подробная утилитка для анализа DNS :

Если какие-то предложения или советы - прошу себя не сдерживать, я в первый раз серверами заморочился, обычно все на каких-то сторонних сервисах держал.
29.06.2022 22:16
OlegON
 
Кстати, R01 что-то подправили, видимо, у меня теперь вполне работает с их сервером, как вторичным, на primary просто поправил секцию remote
Код:
remote:
  - id: secondary
    address: 89.111.166.6
05.04.2023 19:38
OlegON
 
Вот еще одна утилитка для проверки домена:
Часовой пояс GMT +3, время: 08:53.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.