linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Сеть: L4 и выше/dns-resolution

kb/network-l4 ── Сеть: L4 и выше ── intermediate

DNS resolution

Резолвинг имени → IP проходит через NSS: сначала `/etc/hosts`, потом DNS через `/etc/resolv.conf`. Порядок задаётся в `/etc/nsswitch.conf`.

view as markdownaka: dns, name-resolution, etc-hosts, etc-resolv-conf

Что такое DNS

Domain Name System (RFC 1035) - распределённая иерархическая БД, отображающая человекочитаемые имена в IP-адреса (и обратно). Запрос по UDP/53 (или TCP/53 для больших ответов).

NSS - Name Service Switch

В Linux сам процесс резолвинга - это вызов libc-функции gethostbyname() / getaddrinfo(). Эта функция через NSS-плагины опрашивает источники в порядке заданном в /etc/nsswitch.conf:

hosts: files dns
  • files - /etc/hosts
  • dns - настоящий DNS-сервер
  • На системах с systemd-resolved - resolve [!UNAVAIL=return] files dns
  • С mDNS - mdns_minimal [NOTFOUND=return] files dns

Поэтому ping mysite.local сначала ищет в /etc/hosts - это позволяет локально override'нуть любое имя без DNS.

/etc/hosts

Простейший резолвер, формат IP name [aliases...]:

127.0.0.1   localhost
::1         localhost ip6-localhost
192.168.1.5 nas.local nas

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

  • Фиксации имени в dev-окружениях (api.local → 127.0.0.1)
  • Блокировки доменов через Pi-hole-стиль (0.0.0.0 ad-tracker.com)
  • Hostname-трюков для тестов миграций

/etc/resolv.conf

Список DNS-серверов и их параметры:

nameserver 1.1.1.1
nameserver 8.8.8.8
search corp.example.com lab.example.com
options timeout:2 attempts:1
  • nameserver - IP DNS-сервера, опрашиваются по очереди
  • search - суффиксы для коротких имён: ping db1 пробуется как db1.corp.example.com, потом db1.lab.example.com, потом db1.
  • options - таймауты, количество попыток, randomize и т.п.

На systemd-системах файл часто симлинк на /run/systemd/resolve/... и редактируется через systemd-resolved (или NetworkManager).

getent vs dig

Две команды резолвинга, с разной семантикой:

  • getent hosts name - идёт через NSS, видит /etc/hosts + кеш + DNS. Это путь которым пойдёт реальное приложение. Это правильный инструмент для «как мою команду увидит libc».

  • dig name - идёт прямо в DNS-сервер из resolv.conf, минуя /etc/hosts. Хорош для дебага DNS-сервера специально.

Поэтому dig mysite.local может не вернуть ничего, а getent hosts mysite.local вернёт 127.0.0.1. Это не баг - это разные слои.

Типы записей

  • A - имя → IPv4
  • AAAA - имя → IPv6
  • CNAME - алиас одного имени на другое
  • MX - mail exchanger (почтовый сервер)
  • TXT - произвольный текст (SPF, DKIM, домен-верификация)
  • NS - какие nameserver'ы авторитетны для зоны
  • PTR - reverse: IP → имя
  • SRV - service record (host+port для конкретного сервиса)

§ команды

bash
getent hosts example.com

Резолвинг через NSS - видит /etc/hosts + кеши + DNS (как реальное приложение)

bash
dig example.com

Прямой запрос к DNS-серверу из /etc/resolv.conf, минуя /etc/hosts

bash
dig +short example.com

Только результат, без шапки

bash
dig MX gmail.com

Запросить определённый тип записи (MX = почтовый сервер)

bash
dig @1.1.1.1 example.com

Спросить конкретный nameserver (полезно сравнить разные DNS-серверы)

bash
dig -x 8.8.8.8

Reverse-lookup: IP → имя

bash
resolvectl status

На системах с systemd-resolved: текущая DNS-конфигурация и кеш

§ см. также

  • udp-basicsUDP - User Datagram ProtocolUDP - простой протокол доставки датаграмм без установки соединения, без ретрансмитов, без гарантии порядка. Заголовок 8 байт. Применение: DNS, DHCP, QUIC, VoIP, любой случай когда задержка важнее надёжности.
  • dhcp-protocolDHCP - Dynamic Host Configuration ProtocolDHCP выдаёт хосту IP-адрес, маску, шлюз и DNS через broadcast. 4 пакета: DORA = Discover (клиент), Offer (сервер), Request (клиент), Ack (сервер). Аренда продлевается за 50% TTL.
  • cmd-digdig - DNS-разведка с подробностямиdig - DNS-разведка. Запросить любую запись у любого сервера. +short - компактно, +trace - путь от корня, +dnssec - показать подписи. Современная замена nslookup для отладки.
  • smtp-mtaSMTP и MTA - доставка emailSMTP - текстовый протокол доставки почты. 25/tcp - server-to-server, 587 - submission (клиент с auth), 465 - implicit-TLS legacy. MX-запись в DNS, STARTTLS+SPF+DKIM+DMARC - стандартный набор.
  • systemd-resolvedsystemd-resolved - локальный DNS-stubsystemd-resolved - DNS stub-resolver, слушает на `127.0.0.53:53` и проксирует запросы на upstream-DNS, агрегируя данные от NetworkManager/DHCP/VPN. Управляется `resolvectl`.

§ упоминается в уроках

  • ›intermediate-01-network-101
  • ›intermediate-04-dns
  • ›intermediate-12-bind-dns-server
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки