Вопрос: Отключить кеширование DNS PHP


Мне нужно получить последние записи A DNS в скрипте. Сценарий выполняет некоторые операции мониторинга. TTL по умолчанию для записи DNS составляет 5 минут, но скрипт мониторинга работает каждую минуту. Я использую функцию PHP dns_get_record для получения записей A, но мне было интересно, есть ли способ игнорировать кэширование TTL и получать записи с DNS-сервера, а не кешировать.

Конечно, любой способ заставить это, чтобы кеширование уровня сети не применимо, и каждый раз, когда я запускаю скрипт, он фактически попадает на DNS-сервер?

благодаря Sparsh Gupta


5
2017-08-05 10:01


Источник




Ответы:


Нет. У обычного клиента нет возможности требовать от кэширующего DNS-сервера, чтобы он очищал его кеш и требовал авторитетные серверы. Это по дизайну - я оставлю количество DDoS-хаоса, которое вы могли бы получить в качестве упражнения для читателя.

Если вы абсолютно положительно ДОЛЖНЫ иметь не кэшированную запись, запросите свой обычный сервер имен для NS-записи целевого домена, а затем запросите авторитетный сервер напрямую.

ЗАМЕТКА: Обычно это считается грубым поведением, и его действительно нельзя использовать, кроме как в крайнем случае - что именно так ужасно важно, что вам абсолютно необходимо совершенное перепроверять каждую минуту на всякий случай, если запись изменится, если вы не заметите?

... В этом отношении, почему ваши TTL по умолчанию пять минут?

расчетное время прибытия: Большинство DNS-серверов в дикой природе, особенно в пересылке, откажутся отказываться от TTL всего за 3600 секунд. Если вам повезет, они будут по умолчанию не менее 1 часа; если вы этого не сделаете, то по умолчанию будет принято стандартное значение 86400 секунд (24 часа) ...


6
2017-08-05 10:16



... также TTL менее 3600 секунд вряд ли будет иметь желаемый эффект. - symcbean
Хорошая точка зрения. Изменение ответа. - Shadur
Ну .. У нас есть DNS вокруг Robin, который делит трафик между несколькими серверами. У нас еще нет конфигурации отказоустойчивости IP, что означает, что если один из серверов опустится, мы все равно продолжаем отправлять трафик на него. Чтобы этого избежать, я хочу искать записи DNS и сопоставлять их с статусами серверов. У меня есть план B, в котором я буду получать некоторую информацию о моих состояниях без фактического запроса состояний, но у меня может быть больше проблем с ним. - Sparsh Gupta
... Я действительно рекомендую вам приступить к изучению различных решений сердечного ритма. СКОРО. Распространение DNS даже не CLOSE достаточно быстро, чтобы быть достойным откатом. - Shadur
@Sparch Gupta: «Если один из серверов опустится, мы все равно будем отправлять трафик на него» - нет, рукопожатие TCP должно быть тайм-аут, а затем повторить попытку с другим адресом - вы теряете только установленные соединения и получаете задержку при сбое , - symcbean