TGViewer
Сетевик Джонни // Network Admin Сетевик Джонни // Network Admin @iscode · 5.79K subscribers
Post #1126 2.27K
🥷 Как работает DNS в Linux. Часть 1: обработка resolv.conf и что делает res_query()

Файл /etc/resolv.conf содержит основные настройки клиента DNS, а именно: список серверов, параметры, search-домены. Например:

nameserver 192.168.1.1
search dev.local
options timeout:2 attempts:3


— Glibc и libresolv парсят его вручную при необходимости.

Важные моменты и ограничения:

- опции вроде rotate, ndots, timeout и attempts влияют на поведение запроса;

- опция rotate используется для циклического выбора серверов из списка nameserver, но она не поддерживается в musl;

- search используется для автодополнения, например, если имя db01 не является FQDN, к нему будут по очереди подставляться домены из директивы search.

Важно отметить, что файл resolv.conf может быть динамически изменён DHCP-клиентом, NetworkManager или утилитой resolvconf, что может вызывать путаницу при решении проблем с DNS. Об этом мы поговорим в одной из следующих частей.


Касательно res_query(), это функция из libresolv, вызываемая внутренне в процессе разрешения имени. Она формирует DNS-пакет вручную и отправляет его на указанные в resolv.conf DNS-серверы. Её используют утилиты вроде nslookup, а также некоторые программы, которые обходят getaddrinfo().

Функция отправляет DNS-запросы с помощью res_send() по UDP, а при необходимости, например, при получении ответов, превышающих 512 байт, переключается на TCP.

🕹 Важно: при использовании res_query() вы не получите информацию из /etc/hosts, NSS или других источников. Это DNS-запрос в чистом виде. Поэтому dig или nslookup могут получить один результат, а, например, ping или curl — совсем другой.

1. res_query() считается устаревшей функцией, использовать ее не рекомендуется. Для более удобной и безопасной работы с DNS лучше отдать предпочтение getaddrinfo() или таким библиотекам, как c-ares или libdns.

2. c-ares — легковесная библиотека для асинхронных DNS-запросов, часто используется в высоконагруженных приложениях (например, curl и Node.js)

3. libunbound (из проекта Unbound) — более мощная библиотека с поддержкой DNSSEC и гибкой настройкой запросов.

В следующем посте расскажу о порядке реализации запросов и приоритетов, ожидайте, сегодня продолжение 🪳

#DNS #Linux | 😏 @iscode | YouFast VPN — сильнейший из всех
Telegram YouFast VPN™ | Надежный ВПН 🛡 Самый быстрый и безопасный VPN-сервис прямо в Телеграме. Не храним логи и не воруем ваши данные. Нажмите «СТАРТ» ⬇️
  • 🔥 10
  • 👍 3
More from @iscode
  1. Oct 1, 2026🥷 Подключилось новое устройство. Назвалось «принтер_бухгалтерия». IP свободный, MAC похож…
  2. Oct 1, 2026🎇Главная идея DevSecOps: безопасность перестаёт тормозить разработку. Вместо проверок «по…
  3. Sep 29, 2026Заморочились 😀
  4. Sep 28, 202622 октября встречаемся в Москве: Kuber Conf уже совсем скоро! Что будет на конференции: –…
  5. Aug 23, 2026🥸 OWASP Agentic Skills Top 10: критические уязвимости при работе с агентами Свежак от OWA…
  6. Aug 8, 2026Технологический радар и принятие изменений Когда вы уже достаточно выросли из штанишек и к…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →