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: