Назад | Перейти на главную страницу

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

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

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

Спасибо Спарш Гупта

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

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

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

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

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