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

Кэширование DNS в Linux для повышения производительности и безопасности

Я пытаюсь понять, как это сделать правильно. Мои серверы используют search-domain чтобы найти полное доменное имя, чтобы мой код мог подключиться, используя redis как ведущий и т. д.

Я столкнулся с проблемой, когда провайдер DNS для моего домена не работал, и поэтому "redis.example.com" не работал в течение нескольких секунд, что неприемлемо. Мне пришлось вручную добавить записи в файл хоста, пока они исправляют свою проблему.

Итак, мой вопрос: какой DNS-сервер пересылки я могу использовать для:

  1. Перенаправить DNS-запросы на другой сервер (пример: 8.8.8.8)
  2. Записи кеша
  3. Используйте кешированные записи на случай, если DNS-сервер не работает, даже если это означает игнорирование TTL (TTL моей записи составляет 60 секунд, но прошло 30 минут с момента последнего запроса из 8.8.8.8)
  4. Возможно, всегда всегда кэшировать и ставить в очередь запросы от DNS-сервера (поэтому каждые 60 секунд задержка не увеличивается немного, потому что он должен запрашивать ее с DNS-сервера)

Есть идеи, что я могу здесь сделать? Или я слишком многого хочу?

Я рекомендую использовать dnsmasq который будет делать все, что вы хотите:

  • Пересылка DNS-запросов на один или несколько DNS-серверов
  • Забрать записи в hosts
  • Кэшировать запросы

Он отлично работает и очень прост в настройке, просто установите его с помощью sudo apt-get install dnsmasq

Для того, что вы хотите, вы должны просто добавить строку

server=8.8.8.8

и делай sudo restart dnsmasq или sudo /etc/init.d/dnsmasq restart

Конечно, у вас может быть несколько server=... линий для использования более чем одного восходящего DNS-сервера.

P.S. Если вы хотите, dnsmasq также будет работать как полноценный сервер DHCP, а затем добавит имена хостов клиентов DHCP в систему DNS, что действительно очень приятно.