DNS basics
DNS отвечает на простой вопрос: какие данные привязаны к имени.
Для сайта чаще всего важно, куда указывает домен, как быстро обновятся записи и какой resolver видит актуальный ответ.
Основные типы записей
| Тип | Для чего нужен |
|---|---|
A | IPv4-адрес домена |
AAAA | IPv6-адрес домена |
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, базовая цепочка имени работает.