[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Как работает локальный DNS кеш?



On 2015-11-22, Artem Chuprina wrote:

> resolvconf у меня живет весьма неплохо, но я не пользуюсь connman/nm.
> Пользуюсь wicd, и про него знаю, что он сам эту информацию не трогает,
> ею занимается dhclient (или кто там у тебя работает с DHCP) в связке с
> resolvconf.
>
> И кэшем работает dnsmasq.  На домашнем сервере - bind9, и ему приходится
> вручную добавлять скрипт, звездочка в документации неспроста.  А с
> dnsmasq работает из коробки.

В общем прояснилось, еще почитал:

  GETADDRINFO(3)
  `info libc "Name Service Switch"'
  http://www.tldp.org/LDP/nag2/x-087-2-resolv.library.html

Итого getaddrinfo(3), gethostbyname(3) встроены в GLib.

Есть ряд файлов настроек:

  /etc/host.conf
  /etc/hosts
  /etc/resolv.conf
  /etc/nsswitch.conf

которые считывает GLib. Как я понял GLib также умеет общаться с DNS серверами
(так как это делает dig, есть ощущение что nslookup использует
getaddrinfo(3)).

Кеширование DNS запросов может быть сделано либо в GLib, либо в приложении,
либо прописыванием localhost в /etc/resolv.conf и поднятием локального DNS
сервера кеша.

dhclient по успешному выполнению вызывает тригеры, пример доступной информации
в дригере в файле:

  /etc/dhcp/dhclient-enter-hooks.d/debug

    for prefix in '' 'cur_' 'new_' 'old_'; do
        for basevar in reason interface medium alias_ip_address \
                   ...
                   domain_name domain_search domain_name_servers \
                   ...
                   dhcp6_domain_search dhcp6_name_servers ; do
            var="${prefix}${basevar}"
            eval "content=\$$var"
            echo "$var='${content}'" >> /tmp/dhclient-script.debug

resolvconf поставляет свой хук /etc/dhcp/dhclient-enter-hooks.d/resolvconf и
затем сообщает кеширующему DNS серверу о новых настройках.

У меня только сомнения по поводу наличия кода в GLibc работающего с DNS
серверами на подобии как это делает dig.

-- 
Best regards!


Reply to: