Начнем с того, что я не разбираюсь в DNS-серверах. Я застрял в разрешении проблемы с DNS-сервером, потому что я обнаружил проблему с одной из наших систем и определил, что она была вызвана разрешением DNS.
Мы используем внешний веб-сервис для некоторых критических операций. Наше программное обеспечение находится в постоянной связи с внешней службой. Внешний провайдер фактически имеет два хоста (каждый со своим собственным IP-адресом), которые предоставляют эту услугу, и изменяет записи DNS таким образом, чтобы одно имя (назовите его criticalservice.example.com) всегда разрешалось в текущий активный хост.
Наше программное обеспечение периодически проверяет подключение к внешней системе. Пока имя соответствует правильному активному хосту, все в порядке. Однако провайдер иногда меняет активный хост (и соответствующую запись DNS). Наша система хранит старый IP-адрес для имени хоста в кэше, пока не истечет TTL. Пока он не истечет и не получит правильный IP-адрес, наша система сообщит об ошибке связи, и ее нельзя будет использовать. Как только IP-адрес определится, наша система автоматически переподключится и вернется к работе. Время, которое он проводит в автономном режиме, может быть любым, вплоть до полного периода TTL - наш DNS-сервер, кажется, использует 3600 секунд в качестве TTL по умолчанию.
Услуга не критична, как в случае жизни и смерти, но важна в том смысле, что она не может как можно быстрее уведомить людей, которым может потребоваться справиться с ситуацией жизни и смерти. Учитывая это, мы действительно хотели бы сократить время, которое система проводит в ожидании TTL DNS.
DNS-сервер от ISP имеет очень короткий TTL для criticalservice.example.com, и ISP рекомендует либо использовать свой DNS напрямую, либо использовать очень короткий TTL на нашем внутреннем DNS-сервере.
Поскольку наш DNS-сервер также является сервером домена Active Directory, я не думаю, что изменение TTL для всего DNS-сервера - хорошая идея.
Лучшая идея - установить TTL только для criticalservice.example.com.
Как мне создать DNS-запись для criticalservice.example.com на нашем сервере Windows 2008 Server, которая ограничит время кеширования менее 1 минуты, но все же позволит нашему DNS-серверу получать правильный IP-адрес от DNS-сервера ISP? Насколько я могу судить, я могу установить TTL, только если добавлю запись, которая сопоставляет имя с IP-адресом - а я не могу этого сделать, потому что IP-адрес изменится.
В качестве альтернативы, могу ли я сделать что-нибудь с DNS-клиентом на нашем компьютере, который использует criticalservice.example.com, чтобы он обошел наш DNS-сервер, но только для criticalservice.example.com?
Дополнительная информация: nslookup -qa = A criticalservice.example.com local.dns.server возвращает TTL в 3600 секунд. nslookup -qa = A criticalservice.example.com isp.dns.com возвращает TTL в 15 секунд.
Я бы просто позволил вашему DNS-серверу делать то, для чего был разработан DNS. Не пытайтесь настроить домен на своем DNS-сервере. Ваш DNS-сервер будет кэшировать записи DNS для TTL, указанного поставщиком. В худшем случае у вас будет устаревшая запись для TTL, указанного поставщиком.
Если вы настроили запись в своем DNS, установите TTL на значение не больше, чем указано у поставщика. Вам все равно понадобится система для проверки DNS провайдера и обновления вашего DNS. Это усложнит вашу настройку и увеличит риск сбоя. Вы также будете генерировать как минимум такой объем DNS-трафика, как указано выше.
Можно определить TTL для каждой записи, хотя у меня нет опыта в этом в Active Directory. Ваш провайдер, вероятно, делает это на своем сервере.