Почему dnsmasq пересылает уже разрешенные адреса?

353
DanMetro

Я могу пинговать хост:

dig registry.mynet 

И DNS-сервер делает то, что ожидается:

dnsmasq[1]: 895 127.0.0.1/44580 query[A] registry.mynet from 127.0.0.1 dnsmasq[1]: 895 127.0.0.1/44580 /etc/hosts registry.mynet is 42.42.42.42 

Но если я попробую более сложный запрос, это займет много времени:

» time http -h http://registry.mynet/v2/_catalog?n=100 HTTP/1.1 200 OK Connection: keep-alive Content-Length: 97 Content-Type: application/json; charset=utf-8 Date: Fri, 23 Mar 2018 10:42:13 GMT Docker-Distribution-Api-Version: registry/2.0 Server: nginx/1.13.9 X-Content-Type-Options: nosniff  real 0m15.297s user 0m0.252s sys 0m0.028s 

И это не имеет никакого отношения к сервису (который очень отзывчив). Это потому, что DNS-сервер делает что-то странное:

dnsmasq[1]: 887 127.0.0.1/53345 query[A] registry.mynet from 127.0.0.1 dnsmasq[1]: 887 127.0.0.1/53345 /etc/hosts registry.mynet is 42.42.42.42 dnsmasq[1]: 888 127.0.0.1/53345 query[AAAA] registry.mynet from 127.0.0.1 dnsmasq[1]: 888 127.0.0.1/53345 forwarded registry.mynet to 208.67.220.220 dnsmasq[1]: 888 127.0.0.1/53345 forwarded registry.mynet to 8.8.4.4 dnsmasq[1]: 888 127.0.0.1/53345 forwarded registry.mynet to 8.8.8.8 dnsmasq[1]: 888 127.0.0.1/53345 forwarded registry.mynet to 8.8.8.8  dnsmasq[1]: 889 127.0.0.1/53345 query[A] registry.mynet from 127.0.0.1 dnsmasq[1]: 889 127.0.0.1/53345 /etc/hosts registry.mynet is 42.42.42.42 dnsmasq[1]: 890 127.0.0.1/53345 query[AAAA] registry.mynet from 127.0.0.1 dnsmasq[1]: 890 127.0.0.1/53345 forwarded registry.mynet to 208.67.220.220 dnsmasq[1]: 890 127.0.0.1/53345 forwarded registry.mynet to 8.8.4.4 dnsmasq[1]: 890 127.0.0.1/53345 forwarded registry.mynet to 8.8.8.8 dnsmasq[1]: 890 127.0.0.1/53345 forwarded registry.mynet to 8.8.8.8  dnsmasq[1]: 891 127.0.0.1/41484 query[A] registry.mynet from 127.0.0.1 dnsmasq[1]: 891 127.0.0.1/41484 /etc/hosts registry.mynet is 42.42.42.42 dnsmasq[1]: 892 127.0.0.1/58752 query[AAAA] registry.mynet from 127.0.0.1 dnsmasq[1]: 892 127.0.0.1/58752 forwarded registry.mynet to 208.67.220.220 dnsmasq[1]: 892 127.0.0.1/58752 forwarded registry.mynet to 8.8.4.4 dnsmasq[1]: 892 127.0.0.1/58752 forwarded registry.mynet to 8.8.8.8 dnsmasq[1]: 892 127.0.0.1/58752 forwarded registry.mynet to 8.8.8.8 

У меня есть два вопроса:

  • DNS-сервер находит правильный ответ ( /etc/hosts registry.mynet is 42.42.42.42): почему обработка продолжается?
  • что означают «перенаправленные» записи?
2

1 ответ на вопрос

1
dangonfast

Прежде всего:

dig registry.mynet 

Выполняет только запросы IPv4 ( [A]запросы). Вы dnsmasqотвечаете на эти запросы просто отлично. Вы можете заставить digделать AAAAзапросы, выполнив:

dig registry.mynet AAAA 

Из журналов видно, что httpотправляет запросы IPv4 и IPv6 ( [AAAA]запросы). Вы dnsmasqотвечаете на первое, но не на второе, возможно, потому что вы не настроили адреса IPv6 для своих хостов.

Вы можете избежать этого, убедившись, что dnsmasqне пересылает запросы на хосты в вашей сети:

local=/mynet/