Обновлено:

DNS basics

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

Основные типы записей

ТипДля чего нужен
AIPv4-адрес домена
AAAAIPv6-адрес домена
CNAMEАлиас на другое имя
MXПочтовые серверы домена
TXTТекстовые данные: SPF, DKIM, verification
NSАвторитетные DNS-серверы зоны
CAAКакие CA могут выпускать сертификаты
SOAСлужебная информация зоны

A и AAAA

A указывает IPv4:

dig +short getsrv.app A

AAAA указывает IPv6:

dig +short getsrv.app AAAA

Если сайт должен работать по обоим стекам, проверяйте обе записи.

CNAME

CNAME делает имя алиасом другого имени.

Пример:

docs.example.com CNAME example-host.provider.net

Важно: у одного имени с CNAME обычно не должно быть параллельных A/AAAA записей.

NS

NS показывает, какие DNS-серверы авторитетны для зоны:

dig +short getsrv.app NS

Если меняли DNS-провайдера, сначала проверьте NS.

TXT

TXT часто используется для:

  • SPF;
  • DKIM;
  • domain verification;
  • service verification.

Проверка:

dig +short getsrv.app TXT

TTL

TTL — время, на которое resolver может кэшировать ответ.

Посмотреть TTL:

dig getsrv.app A

В ответе будет строка вида:

getsrv.app. 300 IN A 203.0.113.10

300 — TTL в секундах.

Почему DNS “не сразу обновился”

Причины:

  • старый ответ ещё живёт в кэше resolver;
  • изменили не те NS;
  • authoritative DNS уже обновился, но public resolver ещё держит старое;
  • локальная машина кэширует ответ;
  • проверяется не тот record type.

Проверить через разные resolvers

Cloudflare:

dig @1.1.1.1 getsrv.app A +short

Google:

dig @8.8.8.8 getsrv.app A +short

Quad9:

dig @9.9.9.9 getsrv.app A +short

Если ответы разные, идёт propagation или есть проблема с authoritative DNS.

Проверить authoritative answer

Сначала узнать NS:

dig +short getsrv.app NS

Потом спросить один из NS напрямую:

dig @ns1.example.net getsrv.app A

Замените ns1.example.net на реальный NS из вывода.

DNS и HTTPS

DNS только указывает, куда подключаться.
Он не гарантирует, что HTTPS работает.

После DNS всегда проверяйте HTTP/TLS:

curl -kI https://getsrv.app/
openssl s_client -connect getsrv.app:443 -servername getsrv.app -brief

Типовые ошибки

Ошибка 1. Проверяют только A, но забывают AAAA

Если есть IPv6-запись, часть клиентов может идти по IPv6.

Проверка:

dig +short getsrv.app A
dig +short getsrv.app AAAA

Ошибка 2. CNAME указывает туда, где нет нужного сервиса

DNS отвечает, но HTTP/TLS не работает. После DNS нужен curl.

Ошибка 3. Меняли запись, но смотрят старый resolver

Проверьте несколько resolvers и authoritative NS.

Ошибка 4. Слишком большой TTL

При большом TTL изменения могут долго расходиться по кэшу.

Минимальный набор проверки домена

dig +short getsrv.app NS
dig +short getsrv.app A
dig +short getsrv.app AAAA
dig @1.1.1.1 getsrv.app A +short
dig @8.8.8.8 getsrv.app A +short
curl -kI https://getsrv.app/

Если DNS отвечает ожидаемо, а curl возвращает 200, базовая цепочка имени работает.