nscd - кэширование dns запросов

07 June 2009 #dns#linux

В статье pdnsd – локальный кэширующий dns сервер я уже рассказывал о том, как можно организовать локальный кэширующий сервер.

Сегодня рассмотрим еще один вариант кэширования dns-запросов.

Во многих Linux-системах используется демон кэширования службы имен nscd. Он ставиться по умолчанию. И что интересно, о нем очень мало статей и информация, которая представлена в сети, очень скудна. В archlinux данный демон так же представлен и по умолчанию отключен.

Согласно man nscd:

Nscd предоставляет кэширование для баз данных passwd, group, и hosts через стандартные интерфейсы libc, такие как getpwnam, getpwuid, getgrnam, getgrgid, gethostbyname, и другие. Каждый кэш имеет для своих данных отдельное TLL (time-to-live -- время жизни); изменения в локальной базе данных (/etc/passwd, и других) приводит к тому что кэш становится неправильным в течении пятнадцати секунд. Заметим, что файл shadow специально не кэшируется. Вызовы getspnam оставляют результат некэшированным.

Для того, чтобы активировать его, достаточно запустить данный демон:

$ sudo /etc/rc.d/nscd start

Все! Все запросы к серверам имен теперь будут кэшироваться, и при следующем обращении браузера к dns-серверу будут браться значения из кэша.

Для того, чтобы запускать демон при загрузке системы, меняем строку DAEMONS в файле /etc/rc.conf:

DAEMONS=(syslog-ng crond hal iptables network !netfs hddtemp sensors <strong>nscd</strong> alsa mpd mpdscribble xinetd preload fam slim)

Nscd ничего не знает о протоколах службы. Это также означает, что если вы изменяете /etc/resolv.conf для DNS запросов, nscd продолжит использование старых данных. В этом случае, вам нужно перезапустить nscd.