Свои домены
domains управляет DNS-зонами команды и подключает имена к алиасам pages,
приложениям, страницам статуса и другим сервисам, выпуская сертификаты автоматически.
Кто обслуживает DNS
Подключите аккаунт Cloudflare в domains → Аккаунты с API-токеном, который может читать зоны и менять
DNS (он запечатывается и больше не показывается), затем импортируйте нужные зоны. Записи читаются вживую и
меняются через Cloudflare.
Добавьте зону на собственные серверы имён инстанса (ns1 и ns2 — xvii-node на двух серверах). Записи
хранятся в domains: A, AAAA, CNAME, TXT, MX, NS, SRV, CAA. Меняйте серверы имён у регистратора, только когда
оба сервера отвечают правильно; панель покажет, когда делегирование вступило в силу.
Перенос зоны из Cloudflare
Используйте действие зоны Перенести. Копируются все записи, кроме NS Cloudflare; проксируемые записи
становятся DNS only; всё, что серверы имён обслужить не могут, выводится списком. Cloudflare хранит свою
копию, пока вы её там не удалите. Прежде чем переключать регистратора, проверьте MX, TXT, DKIM, DMARC, CAA и
сервисные записи, а не только A-запись сайта.
Если собственный домен серверов имён обслуживается тем же реестром, что и делегируемая зона (например, оба
у Identity Digital), регистратор может потребовать зарегистрировать хосты серверов имён (glue). Сначала
зарегистрируйте их у регистратора домена инстанса.
Серверы имён
Каждый сервер имён — это сервер, на котором запущено
xvii-node dns https://domains.xvii.network TOKEN
со своим токеном из domains → Аккаунты (суперпользователи; новый токен отключает старый). Он забирает
зоны каждые пять секунд и хранит последнюю копию на диске, так что продолжает отвечать, даже когда control
plane недоступен. Откройте порт 53 по UDP и TCP. Когда сервер перестаёт забирать зоны, суперпользователи
получают nameserver.stale: старые записи он отдаёт, но изменения до него не доходят.
Подключение имени
domains → Имена → Подключить, затем выберите цель: алиас pages, приложение, страницу статуса,
ссылки share команды, дашборд analytics, эндпоинт hooks, имя туннеля, хосты настройки почты. domains создаёт
запись (A-запись на инстанс или на edge-ноду для приложения на ней), регистрирует имя в сервисе, а сертификат
выпускается по запросу. Панель показывает ожидает → обслуживается.
Другие панели открывают тот же диалог со своих страниц. Не ставьте перед подключённым именем второй прокси с
другим способом проверки сертификата.
Кэш
Кнопкой щита у имени включите Кэш. Общие ответы с Cache-Control и статика хранятся в памяти; приватные,
no-store и ставящие cookie — никогда. Проверьте X-Cache: MISS на первом запросе и HIT потом; сбрасывайте
кэш после изменения файлов с неизменными URL. С хешем в именах файлов сбрасывать не нужно. Перезапуск
очищает кэш.
Защита
Тот же диалог настраивает для каждого имени:
- запросы в секунду с одного IP, с запасом в пять раз выше лимита;
- одновременные запросы с одного IP;
- баны IP и подсетей (включая IPv6) и автоматические временные баны после продолжительных нарушений;
- режим атаки: proof-of-work на JavaScript перед страницами для браузера, затем cookie-пропуск,
привязанный к IP.
Начинайте с лимитов выше обычного трафика и посмотрите, что отклоняется, прежде чем снижать: за одним NAT
может быть много посетителей. Режим атаки ломает API-клиентов и отправителей вебхуков, так что не включайте
его на именах, к которым ходят только машины. Это защита на уровне приложения: она не поможет, если забит сам
канал сервера, — для этого нужна защита у провайдера.
DNSSEC
DNSSEC позволяет резолверам отвергать поддельные ответы. Он не шифрует запросы и не защищает от DDoS.
Подпишите зону
В зоне на серверах имён xvii откройте DNSSEC и включите подпись. Обоим серверам имён нужна версия ноды
с поддержкой подписи.
Проверьте ответы
Убедитесь, что DNSKEY и подписанные ответы (в том числе для несуществующих имён) приходят с обоих серверов.
Опубликуйте DS
Скопируйте DS-запись из панели (key tag, алгоритм 13, тип дайджеста 2, дайджест) в настройки DNSSEC у
регистратора, или публичный ключ, если регистратор принимает DNSKEY.
Дождитесь активации
domains проверяет каждые десять минут и переводит зону из ожидания в активна, когда DS у родителя
совпадает.
Неправильный DS ломает весь домен для проверяющих резолверов, и zone.dnssec_mismatch — это авария, а не
предупреждение. Чтобы выключить DNSSEC, сначала удалите DS у регистратора, подождите хотя бы сутки и
только потом выключите подпись. Никогда не удаляйте ключ, пока родитель публикует DS для него.
Зоны в Cloudflare используют собственный DNSSEC Cloudflare.
Лимиты и события
Лимиты domains.zones, domains.attachments. События zone.delegated, zone.signed,
zone.dnssec_mismatch, nameserver.stale.