Основы DNS | Вопросы для собеседования | Skilio
/s/public
Сеть Новичок Опубликовано
Основы DNS
Вопрос:

Объясните, как работает DNS (Domain Name System) и ее роль в доступности веб-сервисов. Опишите процесс доступа к веб-сайту по его доменному имени с максимальной подробностью. Например, "maps.google.com". Предположим, что мы используем операционную систему на базе Linux для браузера.

Подсказки:

  • Что такое домен и из каких частей он состоит?
  • Подумайте, как DNS преобразует доменные имена в IP-адреса.
  • Учтите иерархическую структуру с различными серверами DNS (корневые, TLD, авторитетные для зоны).
  • Что происходит, когда вы вводите URL в браузере? Опишите рекурсивный поток запросов через различные зоны DNS.

Выше ожиданий:

  • Механизмы кэширования DNS и TTL (Time to Live, Время жизни).
  • Итеративное против рекурсивного разрешения DNS.
  • DNSSEC.
  • Типы записей DNS (A, AAAA, CNAME, MX и т. д.).
Ответ:

Domain Name System (DNS) — это распределённая система именования, которая преобразует понятные человеку доменные имена (например, google.com) в понятные компьютеру IP-адреса (например, 192.168.1.1). Это преобразование необходимо для доступа к веб-сервисам, поскольку сетевые устройства общаются с помощью IP-адресов, а не доменных имён.

Полный путь к домену maps.google.com выглядит так: maps.google.com.. Точка обозначает корень DNS системы. Пример:

  • . — корень системы DNS
  • com. — зона второго уровня, управляемая ICANN
  • google.com — домен третьего уровня, управляемая компанией Google
  • maps.google.com — домен четвёртого уровня в зоне google.com..

Процесс преобразования DNS домена

Когда пользователь вводит "google.com" в браузере на системе Linux, происходят следующие шаги:

  1. Проверка локального кэша DNS: Браузер сначала проверяет, есть ли домен в локальном кэше DNS:

    • Кэш на уровне операционной системы (например, в Linux — кэш NSS)
    • Собственный кэш DNS браузера
  2. Системный резолвер: Если домен не найден в кэше, системный резолвер (настроенный в /etc/resolv.conf) проверяет локальную конфигурацию хостов (/etc/hosts) и обращается к настроенному резолверу DNS (обычно предоставляемому интернет-провайдером или сервисами, такими как 8.8.8.8 от Google).

  3. Рекурсивное разрешение: Резолвер DNS выполняет рекурсивное разрешение через иерархию DNS. Список вызовов, когда кэши DNS-серверов пусты:

    а. Корневые DNS-серверы: Запрос начинается с одного из 13 логических кластеров корневых серверов (если у DNS-сервера провайдера нет кэшированного записей).

    б. Серверы TLD (домен верхнего уровня): Корневые серверы направляют запрос к серверам TLD, управляющим доменами, такими как .com, .org, .net.

    в. Авторитетные DNS-серверы: Серверы TLD направляют запрос к авторитетным серверам для конкретного домена, в данном случае для зоны google.com.

    г. Возвращение ответа: Авторитетный сервер возвращает запрашиваемую DNS-запись.

    е. (ВЫШЕ ОЖИДАНИЙ) DNS-клиент (обычно внутри ОС) использует NS-запросы для получения списка авторитетных DNS-серверов для зоны. Пример использования утилиты dig:

    ❯ dig +short NS com.
    l.gtld-servers.net.
    f.gtld-servers.net.
    b.gtld-servers.net.
    ...
    
    ❯ dig +short NS google.com.
    ns4.google.com.
    ns3.google.com.
    ns1.google.com.
    ns2.google.com.
    

    Запросы выполняются следующим образом:

    dig → DNS-сервер провайдера → кэш ИЛИ Авторитетные серверы → IP-адрес, возвращённый пользователю
    

Пример пути резолва DNS

Обычный путь:

Пользователь → Локальный кэш → Системный резолвер → DNS-сервер провайдера → Авторитетные серверы google.com → IP-адрес, возвращённый пользователю

Используется, когда DNS-сервер провайдера не имеет записи в своём кэше о корневом домена

Пользователь → Локальный кэш → Системный резолвер → DNS-сервер провайдера → Корневые серверы → 
Серверы TLD .com → Авторитетные серверы google.com → IP-адрес, возвращённый пользователю

ВЫШЕ ОЖИДАНИЙ

Типы записей DNS

  • A-запись: Сопоставляет доменное имя с IPv4-адресом
  • AAAA-запись: Сопоставляет доменное имя с IPv6-адресом
  • CNAME: Создаёт псевдоним, указывающий на другой домен
  • MX: Указывает почтовые серверы для домена
  • TXT: Хранит текстовую информацию (часто используется для проверки)
  • NS: Указывает авторитетные серверы имен
  • SOA: Указывает информацию о зоне

Кэширование и TTL

DNS использует кэширование на нескольких уровнях для повышения производительности:

  • Каждая DNS-запись имеет значение TTL (Time To Live), указывающее, как долго её можно кэшировать
  • Кэширование происходит в браузерах, операционных системах и DNS-резолверах
  • Более низкие значения TTL обеспечивают более быстрое распространение изменений, но увеличивают трафик DNS.

Итеративное против рекурсивного разрешения

  • Рекурсивное разрешение: Резолвер DNS выполняет всю работу и возвращает только окончательный ответ клиенту
  • Итеративное разрешение: Резолвер получает ссылки на другие серверы и должен сам следовать цепочке.

DNSSEC (DNS Security Extensions)

DNSSEC добавляет безопасность в DNS, обеспечивая:

  • Аутентификацию для проверки того, что данные DNS не были изменены
  • Целостность данных с помощью цифровых подписей
  • Отсутствие шифрования данных DNS, он фокусируется на подлинности
0
© Skilio, 2025
Условия использования
Политика конфиденциальности
Мы используем файлы cookie, для персонализации сервисов и повышения удобства пользования сайтом. Если вы не согласны на их использование, поменяйте настройки браузера.