Подтвердить что ты не робот

DNS-кэширование в Linux

Я запутался в кэшировании DNS. Я пишу небольшой прямой прокси-сервер и хочу использовать кеш OS DNS в системе Linux.

Если я правильно понимаю, тогда на уровне браузера есть кэширование DNS. Тогда есть кеширование DNS на уровне ОС (в Windows это. Я не уверен, что дистрибутивы Linux по умолчанию).

Итак, как браузер /proxy _server использует кэширование OS DNS? Я пытаюсь найти, могу ли я полагаться на Linux для кэширования DNS вместо того, чтобы делать это самостоятельно внутри моего прокси.

Спасибо

4b9b3361

Ответ 1

В Linux (и, вероятно, в большинстве Unix) нет кэширования DNS на уровне ОС, если не установлено nscd. Даже тогда функция кэширования DNS nscd по умолчанию по умолчанию отключена, по крайней мере, в Debian, потому что она сломана. Практический результат заключается в том, что ваша система Linux очень, вероятно, не выполняет кэширование DNS на уровне ОС.

Вы можете реализовать свой собственный кеш в своем приложении (например, для Squid, в соответствии с комментарием diegows), но я бы рекомендовал против него. Это большая работа, легко понять, что это неправильно (nscd получил это неправильно!!!), вероятно, это будет не так легко настраиваться, как выделенный DNS-кеш, и он дублирует функции, которые уже существуют вне вашего приложения.

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

Ответ 2

Вот два других пакета программного обеспечения, которые можно использовать для кэширования DNS в Linux:

  • Dnsmasq
  • привязка

После настройки программного обеспечения для переадресации и кеширования DNS вы затем установите системный DNS-преобразователь на 127.0.0.1 в /etc/resolv.conf.

Если ваша система использует NetworkManager, вы можете либо попробовать использовать параметр dns=dnsmasq в /etc/NetworkManager/NetworkManager.conf, либо изменить параметры подключения на "Автоматически" (только адрес), а затем использовать script в каталоге /etc/NetworkManager/dispatcher.d, чтобы получить сервер имен DHCP, установить его как сервер пересылки DNS в вашем программном обеспечении кеша DNS и затем запустить перезагрузку конфигурации.

Ответ 4

Firefox содержит кэш DNS. Чтобы отключить кеш DNS:

  • Откройте браузер
  • Введите примерно: config в адресной строке
  • Щелкните правой кнопкой мыши на списке свойств и выберите "Создать" > "Целое" в контекстном меню
  • Введите 'network.dnsCacheExpiration' в качестве имени предпочтения и 0 как целочисленное значение

При отключении Firefox использует кеш DNS, предоставляемый ОС.