Очень нравится мне софт от чешских ребят, а глюки совершенно постороннего софта и сервисов, вкупе с их нюансами настройки меня немного подзадрали, поэтому я решил поднять свой собственный сервер DNS.
Как выяснилось, при прописывании серверов надо их обязательно иметь два. Причем, r01 (мой регистратор) предоставляет возможность второй сервер использовать его, однако, при попытке уведомить его о трансфере, я получил REFUSED, и заявка у регистратора залегла настолько (чуть ли не неделю уже там валяется), что проще показалось завести себе отдельную VDS из дешевых, и поднять еще один secondary там.
Итак, ставим knot вот этот вот
knot.x86_64 : High-performance authoritative DNS server
Прописываем конфиги.
Вот пример файла зоны, который, соответственно конфигу, лежит в /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).
Можно и сами А-записи запросить
Я сначала немного переживал, что у меня AUTHORITY: 0, однако, как оказалось, это нормально и признаком того, что сервер считает себя авторизованным для зоны - "aa" во флагах.
Еще очень понравился сервис для проверки DNS -
После разнообразных тестов можно переходить к конфигу secondary, он такой же простой
Как видно, ничего особенного, только файлы я на secondary делал просто общей помойкой.
Вот и все... Запустил оба сервера после соответствующих пробросов портов (надо пробрасывать 53 порт TCP и UDP), они между собой синхронизировались.
Не очень очевидно было, что писать у хостера, который выдал мне домен. Если прописать ns.olegon.ru у самого хостера на домене olegon.ru, то как это имя бы разрешилось? Для этого, как оказалось, есть специальный вариант записи, то есть у других доменов я прописывал только имя, а у самого olegon.ru, которому принадлежали NS, запись внес так:
то есть, через пробел адрес. Все работает, всем принимается.
Вот еще одна неплохая подробная утилитка для анализа DNS :
Если какие-то предложения или советы - прошу себя не сдерживать, я в первый раз серверами заморочился, обычно все на каких-то сторонних сервисах держал.