Используя BIND9 в качестве сервера кэширования, есть ли способ установить срок действия кэшированных элементов / имен?
Мой BIND9 в настоящее время работает нормально, но есть ли способ установить время и дату истечения срока хранения кэшированных имен? Если так, то как?
Заранее спасибо ребята
2 ответа
Каждая запись DNS уже содержит значение времени жизни (TTL), которое указывает количество секунд, в течение которых она может кэшироваться, и SOA Запись для зоны содержит TTL для отрицательных результатов.
Всякий раз, когда результат пересылается с DNS, который не является уполномоченным сервером для зоны, TTL уменьшается на время, когда результат уже был кэширован.
Например, когда я разрешаю google.de:
google.de. 300 IN A 216.58.205.227
Если я сделаю это снова через десять секунд:
google.de. 290 IN A 216.58.205.227
Исходный TTL записи был, скорее всего, 300, и DNS моего провайдера кэшировал его после того, как я впервые спросил, и вернул мне кэшированный результат на второй итерации.
Таким образом, время жизни отслеживается для каждой записи.
Когда вы запускаете собственный DNS-сервер, у него есть два способа разрешения имен: с помощью сервера пересылки или иерархического поиска.
Когда вы используете сервер пересылки, ваш сервер просто запрашивает другой сервер кэширования и получает кэшированный результат с укороченным TTL, если на другом сервере уже есть копия этой записи. Невозможно определить возраст этой кэшированной записи, только когда она должна истечь.
Когда вы выполняете рекурсивный поиск самостоятельно, вы в значительной степени гарантируете получение свежих результатов за счет необходимости выполнять поиск для каждого компонента пути в пути. Если ваша ссылка имеет большое время приема-передачи (GPRS или спутниковая связь), вполне вероятно, что исходный запрос от приложения истечет, прежде чем ваш сервер сможет получить результат.
В любом случае вы можете ограничить TTL для кэшированных записей на вашем сервере, используя max-cache-ttl а также max-ncache-ttl Настройки в BIND.
В настройке сервера пересылки это не сильно поможет, потому что все, что он сделает, - это заставит ваш сервер снова запросить сервер пересылки, который ответит кэшированным значением, если оно все еще допустимо.
В рекурсивной настройке это сократит время кэширования результатов вашего сервера - но все результаты на всех уровнях. Таким образом, по истечении этого времени он выполнит полный рекурсивный запрос.
Как правило, администраторы DNS уделяют большое внимание настройке соответствующих TTL для записей, например, я использую 60 секунд для записей, которые я использую, чтобы найти свою домашнюю сеть, в то время как на моих серверах TTL составляет один день. Когда я планирую переместить сервер, я уменьшу его TTL до часа накануне и до пяти минут перед отправкой в центр обработки данных, чтобы вы могли получить разумные TTL из кэшей. Если вы меня угадываете, производительность будет только ухудшаться, поскольку ваш DNS обновляет записи без необходимости. Если некоторые записи часто устарели, это проблема конфигурации на стороне другого человека, а не на вашей стороне.
tl; dr: вы можете, но не должны.
Время истечения известно как "TTL" или время жизни. Вы устанавливаете эту переменную в своем конфигурационном файле, как правило, /etc/bind/db.local или любой другой файл конфигурации, который вы используете.
TTL в секундах, поэтому установите его на более низкое значение, 60x60 = 3600 в течение часа, например
sudo -e /etc/bind/db.local
Установите ttl:
3600 долл. США
и перезапустите привязку.
Для получения дополнительной информации см.:
Как выполнить полную настройку DNS-сервера BIND9 с именем хоста?
а также
https://help.ubuntu.com/10.04/serverguide/dns-configuration.html