dnsmasq не кеширует tcp результаты запросов
У меня настроен dnsmasq для кеширования dns запросов.
Если я буду использовать udp протокол для запросов, то кеширование работать будет.
Вот я 3 раза делаю запрос по udp:
root@dev ~ # nslookup gitlab.com > /dev/null
root@dev ~ # nslookup gitlab.com > /dev/null
root@dev ~ # nslookup gitlab.com > /dev/null
И в логе видно, что первый запрос выполнен, а остальные вернуло из кеша:
Nov 20 08:06:06 dev dnsmasq[5082]: query[A] gitlab.com from 127.0.0.1
Nov 20 08:06:06 dev dnsmasq[5082]: forwarded gitlab.com to 213.186.33.99
Nov 20 08:06:06 dev dnsmasq[5082]: forwarded gitlab.com to 8.8.8.8
Nov 20 08:06:06 dev dnsmasq[5082]: reply gitlab.com is 172.65.251.78
Nov 20 08:06:07 dev dnsmasq[5082]: query[A] gitlab.com from 127.0.0.1
Nov 20 08:06:07 dev dnsmasq[5082]: cached gitlab.com is 172.65.251.78
Nov 20 08:06:07 dev dnsmasq[5082]: query[A] gitlab.com from 127.0.0.1
Nov 20 08:06:07 dev dnsmasq[5082]: cached gitlab.com is 172.65.251.78
А если я очищу кеш и 3 раза сделаю запрос по tcp:
root@dev ~ # nslookup -vc gitlab.com > /dev/null
root@dev ~ # nslookup -vc gitlab.com > /dev/null
root@dev ~ # nslookup -vc gitlab.com > /dev/null
Тогда по логу будет видно, что запросы все сделались без кеширования:
Nov 20 08:10:43 dev dnsmasq[10503]: query[A] gitlab.com from 127.0.0.1
Nov 20 08:10:45 dev dnsmasq[10528]: query[A] gitlab.com from 127.0.0.1
Nov 20 08:10:47 dev dnsmasq[10554]: query[A] gitlab.com from 127.0.0.1
Nov 20 08:10:50 dev dnsmasq[10503]: forwarded gitlab.com to 8.8.8.8
Nov 20 08:10:50 dev dnsmasq[10503]: reply gitlab.com is 172.65.251.78
Nov 20 08:10:52 dev dnsmasq[10528]: forwarded gitlab.com to 8.8.8.8
Nov 20 08:10:52 dev dnsmasq[10528]: reply gitlab.com is 172.65.251.78
Nov 20 08:10:54 dev dnsmasq[10554]: forwarded gitlab.com to 8.8.8.8
Nov 20 08:10:54 dev dnsmasq[10554]: reply gitlab.com is 172.65.251.78
И по времени выполнения команды это заметно, что кеширование не работает.
Кстати, если сделать запрос по udp, а потом по tcp, тогда второй запрос возьмет результат из кеша. Не работает именно занесение результата запроса в кеш, если запрос был сделан по tcp.
Версия dnsmasq 2.76, система debian 9, конфиг:
listen-address=127.0.0.1
log-queries
log-async=5
domain-needed
no-dhcp-interface=
no-resolv
no-poll
server=8.8.8.8
server=213.186.33.99
Как это исправить?