Как стать автором
Обновить

Комментарии 6

По заголовку думал, что статья про ARP, а внутри какой то сплошной «резолв хостнеймов».
В целом, расписали много полезного, но столько трепаться про getaddrinfo и не упомянуть о существовании /etc/gai.conf, считаю неверным.
Все остальные запросы отправляются на основной DNS сервер с адресом 192.168.100.1.

Вот это новость для меня. Всегда был другой алгоритм — если первый в списке не ответил, опрашиваем второй, затем третий (при необходимости и наличии). И man resolv.conf подтверждает это:
(The algorithm used is to try a name server, and if the query times out, try the next, until out of name servers, then repeat trying all the name servers until a maximum number of retries are made.)
Это же просто адрес из его примера с локальным кэширующем dns сервером. Потому, для автора, 192.168.100.1 — это «основной».
Как в тогда понимать это?
В моем случае, первым выступает локальный DNS сервер (я использую dnsmasq) для задания локальных адресов .priv зон. Если находится совпадение, то возвращается адрес из локальной сети. Все остальные запросы отправляются на основной DNS сервер с адресом 192.168.100.1.

При том что
$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.1
nameserver 192.168.100.1


Я понял так, что сначала ответит dnsmasq, а если он не смог разрешить имён, то запрос будет передан на 192.168.100.1.

Полезная статья, спасибо. Но при таком уровне технических деталей удивлен отсутствием сравнения поведения функций gethostbyname и getaddrinfo, а ведь из-за их особенностей можно схватить хорошие грабли – например, неработающий round-robin DNS.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.