У меня два сервера домена: один (172.25.250.254) частный для обслуживания частный запрос * .lab.example.com, а другой (192.168.1.1 в моем поле) предназначен для обслуживания общедоступных запросов, таких как index.docker.io или google.com.
Моя конфигурация
/etc/dnsmask.conf
# Include all files in /etc/dnsmasq.d except RPM backup files
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig
/etc/dnsmask.d/node-dnsmask.conf
server=/in-addr.arpa/127.0.0.1
server=/cluster.local/127.0.0.1
/etc/dnsmask.d/origin-dns.conf
no-resolv
domain-needed
no-negcache
max-cache-ttl=1
enable-dbus
dns-forward-max=5000
cache-size=5000
bind-dynamic
except-interface=lo
# End of config
/ etc / dnsmask.d / origin-upstream-dns.conf
server=172.25.250.254
server=192.168.1.1
И либо dnsmask разрешает частное имя, но не публичное, либо разрешает публичное, но не частное:
dig index.docker.io -> answer 0
dig node1.lab.example.com -> answer 1
И через 10 минут
dig index.docker.io -> answer 3
dig node1.lab.example.com -> answer 0
Я частично отвечаю на свой вопрос
Читая страницу руководства dnsmask в опции всех серверов
--all-servers
By default, when dnsmasq has more than one upstream server available,
it will send queries to just one server. Setting this flag forces dnsmasq to
send all queries to all available servers. The reply from the server which
answers first will be returned to the original requester.
, говорится, что запрос будет отправлен только одному сервер, который объясняет эту ситуацию.
Если я добавлю эту опцию, проблема будет решена.
Однако я не понимаю, что означает «первый ответ», первый, кто ответит, будет победителем или тот, кто первым с ненулевым ответом станет победителем ?
Если первое верно, поведение может быть нестабильным с течением времени.