Я пытаюсь настроить DNS-сервер для изменения нескольких доменов в моей локальной сети - сначала с помощью bind9, затем с помощью dnsmasq. С обоими программами у меня возникла одна и та же проблема: при выполнении nslookup / dig на самом DNS-сервере я получаю правильно измененные совпадения IP.
Однако при поиске на машинах, использующих DNS-сервер, он возвращает неправильный (исходный) IP-адрес хоста вместо измененного.
На самой днс
nslookup mydomain.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: mydomain.com
Address: <correctly modified host ip>
На устройствах с очищенными кешами (mac / android):
nslookup mydomain.com
Server: <dns server ip>
Address: <dns server ip>#53
Non-authoritative answer:
Name: mydomain.com
Address: <original host ip>
Вопрос в том, почему запись на сервере правильная, а на клиентах ошибочная?
Проблема была очень глупой и очевидной: у моего хостера был активен блок UDP на машине.
Я предполагаю, что Mac и Android используют резервный DNS-сервер на случай, если один из них недоступен? Это объяснило бы неправильные (правильные) результаты.
Однако на Linux-машине nslookup / dig с использованием нового DNS-сервера приводил к тайм-ауту.
На распространение вашей измененной DNS-записи в Интернет требуется время. Новая запись будет автоматически заменена, когда срок вашей старой записи истечет, как определено в TTL. Вам нужно подождать, пока истечет TTL.