Наш DNSMasq не может разрешить записи A, CNAME или Alias из общедоступных доменов, которые указывают частные IP-адреса .
Например:
$ nslookup
> server 172.16.1.1
Default server: 172.16.1.1
Address: 172.16.1.1#53
> www.work-domain.com
Server: 172.16.1.1
Address: 172.16.1.1#53
Non-authoritative answer:
Name: www.work-domain.com
Address: 55.77.XXX.XXX
> server-b.work-domain.com
Server: 172.16.1.1
Address: 172.16.1.1#53
Non-authoritative answer:
*** Can't find server-b.work-domain.com: No answer
Но переключение на общедоступное DNS работает нормально:
$ nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> www.work-domain.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: www.work-domain.com
Address: 55.77.XXX.XXX
> server-b.work-domain.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: server-b.work-domain.com
Address: 10.1.XXX.XXX
Обратите внимание, что запись server-b.work-domain.com
правильно разрешается в немаршрутизируемый IP-адрес 10.1.XXX.XXX
? Это моя проблема, это не работает с моим локальным dnsmasq в локальной сети.
Эти IP-адреса являются частью наших частных подсетей Amazon AWS, и у нас есть VPN для доступа к ним.
Это все на 100% согласовано со всеми 200+ серверами, зарегистрированными в 4 разных публичных доменах в нескольких подсетях, все из которых используют частный немаршрутизируемый IP-адрес. Но все же все остальные записи, использующие общедоступные маршрутизируемые IP-адреса, работают нормально в том же домене!
@HekanLindqvist прокомментировал меня в правильном направлении. Как только он ответит, я пометил его как ответ. До тех пор...
Его комментарий указывал мне на rebind
опции для dnsmasq:
--stop-dns-rebind
Reject (and log) addresses from upstream nameservers which are in the private IP ranges. This blocks an attack where a browser behind a firewall is used to probe machines on the local network.
--rebind-localhost-ok
Exempt 127.0.0.0/8 from rebinding checks. This address range is returned by realtime black hole servers, so blocking it may disable these services.
--rebind-domain-ok=[<domain>]|[[/<domain>/[<domain>/]
Do not detect and block dns-rebind on queries to these domains. The argument may be either a single domain, or multiple domains surrounded by '/', like the --server syntax, eg. --rebind-domain-ok=/domain1/domain2/domain3/
Вооруженный этим знанием, я вижу, что это и есть то, что происходит:
# cat /tmp/etc/dnsmasq.conf
...
rebind-localhost-ok
...
Тогда я добавил в свой dnsmasq.conf следующее, чтобы исправить это:
rebind-domain-ok=/work-domain1.com/work-domain2.com/
Woohoo! Это работает!
Мой dnsmasq, должно быть, был скомпилирован со строгой опцией по умолчанию с.
.