Лучший способ настроить DNS-кэширование?

28

Чтобы ускорить поиск DNS, я хочу установить кэш DNS или прокси.

Я вижу, по крайней мере, три программы, которые, я думаю, будут работать: bind9, pdnsd или dnsmasq.

Я хотел бы убедиться, что, если я установлю один из них, я не оставлю его плохо настроенным с точки зрения производительности или безопасности. Итак, что бы люди порекомендовали, и есть ли какие-либо изменения конфигурации, которые я должен сделать сразу после установки?


источник
Для одной рабочей станции, верно? Или мы говорим о LAN / ISP?
Да, это для ускорения работы отдельных рабочих станций, а не для локальной сети.

Ответы:

15
  1. Установить bind9
  2. Укажите resolv.conf на 127.0.0.1

Для этого выполните следующие действия:

Чтобы установить Bind9

  1. Откройте "Ubuntu Software Center" (Приложения-> Ubuntu Software Center)
  2. Поиск bind9
  3. Установите флажок для отображения «Технические элементы»
  4. Отметьте bind9 и установите его

Обновление /etc/resolv.conf

  1. Откройте Диспетчер сети (Система-> Настройки-> Диспетчер сети).
  2. Найдите ваше соединение и отредактируйте его (проводное или беспроводное)
  3. Переключить вкладку «Конфигурация IPV4»
  4. В поле «DNS-серверы» напишите 127.0.0.1

Это сделано!

Тестировать

Откройте gnome-терминал (Приложения> Принадлежности> Терминал) и введите

dig ubuntu.com 

(если у вас его нет, установите пакет dnsutils, как описано в bind9)

Проверьте последние ответы, например:

Мой первый запрос на ubuntu.com

;; Query time: **209 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:20:12 2011
;; MSG SIZE  rcvd: 196

Мой второй запрос:

;; Query time: **0 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:18:23 2011
;; MSG SIZE  rcvd: 156

Сервер 127.0.0.1 означает, что вы решаете локально. Посмотрите на время запроса (в окружении **), второе кэшируется.

Лин
источник
Спасибо, Игорь. Я попробовал этот подход, и он хорошо работает для поиска по имени, но, похоже, он не кэширует обратный поиск по IP-адресу. Как бы я сделал это с помощью bind9?
Это ничего не сделало в моей настройке. Время запроса все еще ~ 100 мс
Ashfame
Вы оба: если кажется, что это не работает, проверьте, с какого сервера вы получите ответ. Если он не говорит 127.0.0.1, значит, вы не настроили его должным образом. Примечание. Инструкции по настройке resolv.conf могут отличаться для разных версий Ubuntu.
Томасруттер
Итак, вы используете кеширующий сервер имен на графическом интерфейсе? Да, это возможно, конечно. Более вероятно, что большинство читателей этого процесса будут устанавливать сервер - и графический интерфейс не обязателен. Простой sudo apt install bind9и sudo nano /etc/resolv.confдолжен быть добавлен к вашему ответу в качестве альтернативы.
bshea
Я сделал все, но настройка не работает. Я сделал resolv.confдо 127.0.0.1 наконец. Может ли это потерпеть неудачу? dig ubunut.comговорит: «
Сатья Пракаш
9

Я бы порекомендовал dnsmasq,

Смотрите хороший учебник здесь; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

Вы можете прочитать сравнение здесь;

http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software

dblang
источник
Я использую dnsmasq для кеширования DNS. Также предоставлены локальные сопоставления из / etc / hosts и DHCP (опционально с использованием / etc /
ethers
Я пробовал dnsmasq, и он работает так же хорошо, как bind9 для кэширования поиска имен, но, похоже, он также не кэширует поиск IP-адресов. Возможно ли это с помощью dnsmasq?
1
Остерегайтесь Network Manager, перезаписывая ваш resolv.conf при каждом запуске.
daithib8
6

«Чтобы ускорить поиск DNS, я хочу установить кэш DNS или прокси».

Хорошо. Но есть и более простой способ. Использование серверов имен OpenDNS и / или Google будет быстрее, чем ваш собственный локальный кеш для имен, которые уже существуют в кешах OpenDNS / Google. Использование 208.67.222.222, 208.67.220.220 и / или 8.8.8.8 в качестве имен служит быстрее почти все время. Вы можете проверить это с помощью time nslookup www.google.com 208.67.222.222теста скорости на одном из серверов имен OpenDNS, time nslookup www.google.com 8.8.8.8для Google или time nslookup www.google.com 127.0.0.1в локальном кэше. Когда я говорю быстрее, я имею в виду технически быстрее и не так быстро, чтобы человек мог легко заметить разницу.

«Я вижу, по крайней мере, три программы, которые, я думаю, будут работать: bind9, pdnsd или dnsmasq».

Вы открыты для dnscache части djbdns? Инструкции ниже. Впрочем, кеш без патча не сохраняет ...

sudo apt-get remove bind9 dnsmasq-base
sudo apt-get install djbdns dnscache-run
sudo killall -9 dnsmasq
sudo update-rc.d -f bind9 remove

Затем нам нужно указать системе использовать наш кеш.

sudo gedit /etc/resolv.conf

Отредактируйте файл, чтобы он выглядел как этот пример. Этот файл определяет, какие серверы имен использовать, домен по умолчанию и суффикс поиска. Суффикс поиска позволяет выполнять запросы, используя только часть имени хоста полного доменного имени. Например, nslookup www автоматически превращается в nslookup www.example.com, когда example.com является значением параметра «поиск».

nameserver 127.0.0.1      # Use the local resolver first.
nameserver 208.67.222.222 # OpenDNS
nameserver 8.8.8.8        # Google
domain example.com
search example.com

Это немного необычно, но нам нужно получить самые последние корневые серверы имен.

sudo dnsip $(dnsqr ns . | sed -e '/answer/!d;s/\(.*\)NS \(.*\)/\2/') | sudo tee /etc/dnscache/root/servers/@

Я думаю, что файл resolv.conf перезаписывается при использовании DHCP. Я выбираю себе статический IP-адрес и удаляю программное обеспечение, которое его подавляет, редактируя файл интерфейсов для установки статического IP-адреса. Но вы можете попробовать работать с Network Manager, если вы так склонны.

sudo apt-get purge network-manager network-manager-gnome
sudo gedit /etc/network/interfaces

Мой файл интерфейсов выглядит следующим образом, но измените ваш в соответствии с вашей конфигурацией.

# Loopback
#
auto lo
iface lo inet loopback

# First network card (attached to NAT router, attached to cable internet)
#
auto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

Теперь давайте просто перезагрузим.

sudo reboot

Теперь вы используете локальный распознаватель и последние корневые серверы. Но вы заметите, если попробуете, чтобы OpenDNS и Google на самом деле отвечали быстрее (для имен, которые находятся в их кешах, что является наиболее популярным доменом). Не существует дополнительной конфигурации, которая могла бы сделать программное обеспечение более безопасным, чем оно уже есть.


источник
Спасибо Кристофер. Можете ли вы объяснить, почему Google DNS работает быстрее, чем мой локальный кеш? Я считаю, что это быстро, но как может быть быстрее пройти весь путь к их серверу, чем идти в мой локальный кеш?
Эрик Джонсон
Потому что очень велики шансы, что у него уже есть ответ без необходимости искать его снова.
@Christopher: Но как только ваш локальный кеш имеет его, поиск происходит мгновенно. Если вы используете Google DNS, вам придется ждать 80 мс каждый раз, когда вы делаете запрос.
Зан Рысь
@Zan Lynx Да .. так что сделай свой локальный кеш спроси у гугла. Woo-Hoo!
6
Хотя @ user8290 имеет смысл, я бы не сказал, что использование GoogleDNS быстрее, чем локальное. Да, в Google кешируются результаты, но давайте - если ваша международная скорость - отстой, это не имеет значения, даже если у Google были все результаты DNS в мире. Локальные сети обычно имеют скорость 100 Мбит / с, поэтому запрос ответа у вашего локального сетевого сервера DNS будет как минимум в 10 раз быстрее, чем запрос 8.8.8.8/8.8.4.4 (в зависимости от вашей международной скорости). Конечно, это означает, что у вас есть результат, который кэшируется на вашем DNS-сервере.
вторник,
3

Я использую " dnscache " ( пакет "dnscache-run" ), и это очень просто. Не нужно ничего настраивать.
Он захватывает петиции DNS ( порт 53 ) и кэширует ответы, и в следующий раз, когда Linux запросит этот домен, dnscache немедленно вернет IP.
Хотя есть два параметра, которые можно изменить для улучшения этой программы:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT
Хуан Симон
источник
0

Какой бы инструмент вы ни использовали, убедитесь, что на вашем брандмауэре не включен входящий порт 53. Возможно, вы захотите разрешить только хост с исходящим доступом к кешу.

DNSMasq прост в настройке и хорошо документирован. Если вы устанавливаете его на брандмауэр, укажите интерфейсы для привязки, за исключением интерфейса Интернета.

Привязка более сложна в настройке и может быть излишней в качестве кеша для небольшой сети. Я полагаю, что конфигурация по умолчанию кэшируется только. Возможно, вы захотите добавить ACL, чтобы ограничить, какие адреса могут использовать ваш сервер.

BillThor
источник
0

Пакет dnscache-run меньше всего конфликтует с другими пакетами, такими как libvirt, которые используют мостовую сеть и dnsmasq.

sudo apt-get install dnscache-run

Этот пакет удаляет resolvconf (/etc/resolv.conf), и вам потребуется использовать / etc / network / interfaces или network manager для просмотра вашей конфигурации.

rickfoosusa
источник