Dnsmasq Cache и Internal Log в дампе сигнала USR1 (при запуске с или без --no-daemon и --log-query для анализа) всегда показывает: 0/0 cache, что означает, что функция кеширования Dnsmasq не работает.
Также наблюдается, что, хотя повторяющиеся записи DNS A? (Запрос хоста) и A (ответ) успешно заполняются через один и тот же интерфейс прослушивания непрерывно, но счетчик кеша по-прежнему остается равным 0.
Кто-нибудь знает, как решить / отладить эту проблему Dnsmasq Cache Not Working?
В качестве альтернативы, пожалуйста, предложите другой инструмент кэширования DNS, поддерживаемый Ubuntu linux, который можно настроить для целевого интерфейса.
dnsmasq: размер кеша 150, вставки кеша 0/0 повторно использовали неистекшие записи кеша
root@host1:~# sudo pkill -USR1 dnsmasq
dnsmasq: query[AAAA] host1 from 127.0.0.1
dnsmasq: query[AAAA] host1 from 127.0.0.1
dnsmasq: query[A] host1 from 127.0.0.1
dnsmasq: query[A] host1 from 127.0.0.1
sudo: unable to resolve host host1
dnsmasq: time 1432979095
dnsmasq: cache size 150, 0/0 cache insertions re-used unexpired cache entries.
dnsmasq: queries forwarded 0, queries answered locally 4
dnsmasq: Host Address Flags Expires
dnsmasq: ip6-loopback ::1 6F I H
dnsmasq: pep 127.0.1.1 4FRI H
dnsmasq: ip6-mcastprefix ff00:: 6FRI H
dnsmasq: ip6-allrouters ff02::2 6FRI H
dnsmasq: ip6-localhost ::1 6FRI H
dnsmasq: localhost 127.0.0.1 4FRI H
dnsmasq: ip6-allnodes ff02::1 6FRI H
dnsmasq: ip6-localnet fe00:: 6FRI H
[1]- User defined signal 1 /etc/init.d/dnsmasq restart
root@host1:~#
TCPDUMP ON DNSMASQ Interface:
05:40:47.555213 IP 172.20.20.10.52592 > 172.20.20.2.53: 8856+ A? app.host2.com. (45)
05:40:47.558364 IP 172.20.20.2.53 > 172.20.20.10.52592: 8856* 1/0/0 A 10.60.60.190 (61)
05:41:52.875128 IP 172.20.20.10.60448 > 172.20.20.2.53: 11981+ A? app.host2.com. (45)
05:41:52.878377 IP 172.20.20.2.53 > 172.20.20.10.60448: 11981* 1/0/0 A 10.60.60.190 (61)
05:42:44.241724 IP 172.20.20.10.65300 > 172.20.20.2.53: 6667+ A? app.host2.com. (45)
05:42:44.244808 IP 172.20.20.2.53 > 172.20.20.10.65300: 6667* 1/0/0 A 10.60.60.190 (61)
Dnsmasq setting: /etc/dnsmasq.conf
log-facility=/var/log/dnsmasq.log
log-queries
log-dhcp
no-daemon
listen-address=10.20.20.15
port=53
interface=eth0
bind-interfaces
cache-size=1000
neg-ttl=3600
Dnsmasq Running as inline from default:
root@host1:~# /etc/init.d/dnsmasq restart
* Restarting DNS forwarder and DHCP server dnsmasq
dnsmasq: started, version 2.68 cachesize 1000
dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP
DHCPv6 no-Lua TFTP conntrack ipset auth
dnsmasq: reading /etc/resolv.conf
dnsmasq: using nameserver 11.45.45.9#53
dnsmasq: read /etc/hosts - 7 addresses
User defined signal 1
root@host1:~# dnsmasq: time 1433019086
dnsmasq: cache size 1000, 0/0 cache insertions re-used unexpired cache
entries.
dnsmasq: queries forwarded 0, queries answered locally 0
dnsmasq: queries for authoritative zones 0
dnsmasq: Host Address
Flags Expires
dnsmasq: ip6-allnodes ff02::1
6FRI H
dnsmasq: ip6-localnet fe00::
6FRI H
dnsmasq: ip6-localhost ::1
6FRI H
dnsmasq: pep 127.0.1.1
4FRI H
dnsmasq: ip6-mcastprefix ff00::
6FRI H
dnsmasq: localhost 127.0.0.1
4FRI H
dnsmasq: ip6-loopback ::1
6F I H
dnsmasq: ip6-allrouters ff02::2
6FRI H
Dnsmasq process status:
root@host1:~# ps aux | grep dnsmasq
dnsmasq 23437 0.0 0.0 27636 936 ? S 16:36 0:00
/usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq
-r /var/run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-
old,.dpkg-new
Dnsmasq package status:
root@host1:~# dpkg -l | grep dnsmasq
ii dnsmasq 2.68-1 all Small caching DNS
proxy and DHCP/TFTP server
ii dnsmasq-base 2.68-1
amd64 Small caching DNS proxy
and DHCP/TFTP server
ii dnsmasq-utils 2.68-1
Я тоже столкнулся с этой проблемой и, как мне кажется, нашел первопричину.
Захватите дамп wirehark вашего ответа DNS и проверьте, установлено ли в поле «Доступна рекурсия» значение «Сервер может выполнять рекурсивные запросы», если оно не установлено, тогда эти ответы не будут добавлены в кеш.
Я столкнулся с той же проблемой. Удаление listen-address
в пользу interface
исправил это для меня - это действительно похоже на ошибку в dnsmasq.
Что касается ответа Аруна, в моем случае была доступна рекурсия.
Небольшой тестовый сценарий:
sudo kill -usr1 $(pidof dnsmasq)
for ((n=0;n<100;n++)); do dig @127.0.0.1 google.com; done
sudo kill -usr1 $(pidof dnsmasq)
tail /var/log/syslog