DNS

Рекурсия, типы записей, кэш и TTL — то место, где ломается половина инцидентов.

Учить эту тему
  1. Что такое рекурсивный DNS?

    junior

    Рекурсивный резолвер сам проходит цепочку root → TLD → authoritative и возвращает клиенту готовый IP. Клиент задаёт один вопрос и ждёт финальный ответ. Итеративный сервер вместо ответа отдал бы ссылку на следующий сервер в цепочке.

  2. Как работает DNS?

    junior

    Клиент → локальный резолвер (/etc/resolv.conf) → root → TLD (.ru) → authoritative сервер зоны. Каждый ответ кэшируется на время TTL, поэтому повторные запросы быстрые. Резолвер собирает цепочку и отдаёт клиенту итоговый адрес.

    Разбор «почему так» открыт по подписке.

  3. Какие типы DNS-записей существуют?

    junior

    A (IPv4), AAAA (IPv6), CNAME (alias на другое имя), MX (почтовый сервер), TXT (произвольный текст, SPF/DKIM), NS (серверы зоны), PTR (обратное преобразование IP в имя).

  4. Что такое FQDN?

    junior

    Fully Qualified Domain Name - полное имя с корневой точкой в конце: www.example.com. Однозначно задаёт позицию в дереве DNS, без достройки суффиксами. Относительное имя (www) резолвер дополняет search-доменом из конфига.

  5. Что такое TTL в IP-пакете?

    junior

    Счётчик, уменьшается на 1 на каждом хопе. Когда доходит до 0, пакет отбрасывается, а отправителю летит ICMP Time Exceeded. Защита от вечного кружения пакетов по петле маршрутизации. На этом эффекте построен traceroute.

    Разбор «почему так» открыт по подписке.

  6. Почему DNS использует UDP?

    middle

    Запрос и ответ обычно помещаются в один датаграмму, а UDP не тратит время на установку соединения: резолв укладывается в один round-trip вместо трёх. Серверу при этом не надо держать состояние на каждого клиента, что важно при десятках тысяч запросов в секунду. Старый лимит ответа в 512 байт снят расширением EDNS0, а если ответ всё равно не влезает, сервер выставляет флаг TC (truncated) и клиент переспрашивает по TCP — по TCP же идут зонные передачи (AXFR). Обратная сторона отсутствия соединения — лёгкость подмены ответов и амплификации, отсюда DNSSEC для подписи данных и DoT/DoH для шифрования запросов.

    Разбор «почему так» открыт по подписке.

  7. Как хост резолвит DNS по умолчанию?

    middle

    Порядок источников задаёт строка `hosts:` в `/etc/nsswitch.conf`, обычно `files dns`: сначала `/etc/hosts`, потом DNS. Адреса серверов резолвер берёт из `/etc/resolv.conf`; на системах с systemd-resolved этот файл — заглушка с адресом 127.0.0.53, а реальные upstream-серверы показывает `resolvectl status`. К именам без точки применяются `search`-домены из resolv.conf, поэтому `ping app` может неожиданно уехать в `app.corp.local`. Отсюда классическое расхождение при отладке: `getent hosts имя` идёт полным путём через nsswitch и видит `/etc/hosts`, а `dig` бьёт прямо в DNS-сервер и файл игнорирует.