Кэширующий DNS сократит вам время определения доменных имен и улучшит общее качество браузинга. Я опишу, как настроить простенький DNS сервер dnsmasq в качестве кэширующего. Для начала установите пакет dnsmasq (Debian/Ubuntu).
sudo apt-get install dnsmasq
Простая конфигурация, которая отключает DHCP (он же вам не нужен, верно?), увеличивает размер кэша и отключает кэширование отрицательных ответов. В /etc/dnsmasq.conf включите следующие опции. По умолчанию там все закомментировано.
no-dhcp-interface=eth0
cache-size=10001
no-negcache
Больше опций можно посмотреть в man dnsmasq
Далее в /etc/dhcp/dhclient.conf настроим опцию подстановки нашего локального DNS в resolv.conf
prepend domain-name-servers 127.0.0.1;
Включаем и стартуем dnsmasq.
sudo systemctl enable dnsmasq
sudo systemctl start dnsmasq
Проверим в /var/log/syslog, что все хорошо
Dec 13 17:32:25 laptop dnsmasq[21454]: dnsmasq: syntax check OK.
Dec 13 17:32:25 laptop dnsmasq[21457]: started, version 2.72 cachesize 10000
Dec 13 17:32:25 laptop dnsmasq[21457]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect
Dec 13 17:32:25 laptop dnsmasq[21457]: DBus support enabled: connected to system bus
Dec 13 17:32:25 laptop dnsmasq[21457]: DNS service limited to local subnets
Dec 13 17:32:25 laptop dnsmasq[21457]: reading /etc/resolv.conf
Dec 13 17:32:25 laptop dnsmasq[21457]: ignoring nameserver 127.0.0.1 - local interface
Dec 13 17:32:25 laptop dnsmasq[21457]: using nameserver 8.8.8.8#53
Dec 13 17:32:25 laptop dnsmasq[21457]: using nameserver 192.168.1.1#53
Dec 13 17:32:25 laptop dnsmasq[21457]: read /etc/hosts - 6 addresses
Начнем тестировать наш кэширующий DNS. Для начала убедимся, что в /etc/resolv.conf первым адресом стоит 127.0.0.1
dig markzukerberg.com | grep "Query time"
;; Query time: 192 msec
dig markzukerberg.com | grep "Query time"
;; Query time: 0 msec
Для того, чтобы посмотреть статистику dnsmasq, пошлем его процессу kill сигнал USR1
sudo kill -USR1 $(pidof dnsmasq)
И проверим в логе статистику
Dec 13 17:59:50 laptop dnsmasq[21457]: time 1418482790
Dec 13 17:59:50 laptop dnsmasq[21457]: cache size 10000, 0/94 cache insertions re-used unexpired cache entries.
Dec 13 17:59:50 laptop dnsmasq[21457]: queries forwarded 43, queries answered locally 15
Dec 13 17:59:50 laptop dnsmasq[21457]: queries for authoritative zones 0
Dec 13 17:59:50 laptop dnsmasq[21457]: server 8.8.8.8#53: queries sent 25, retried or failed 0
Dec 13 17:59:50 laptop dnsmasq[21457]: server 192.168.1.1#53: queries sent 29, retried or failed 0
Как видно, закешировалось 94 запроса. К сожалению, хардкорный лимит на кэш 10000 записей, но думаю, что этого достаточно для комфортного браузинга.