Найкращий спосіб налаштування кешування DNS?


28

Щоб пришвидшити пошук DNS, я хочу встановити кеш-пам'ять або проксі-сервер DNS.

Я бачу щонайменше три програми, які, на мою думку, виконають цю роботу: bind9, pdnsd або dnsmasq.

Я хотів би переконатися, що якщо я встановлю одну, я не залишаю її погано налаштованою з точки зору продуктивності чи безпеки. Отже, що б рекомендували люди, а чи слід змінити конфігурацію, яку слід негайно внести після встановлення?


Для однієї робочої станції, правда? Або ми говоримо LAN / ISP?

Так, це для прискорення роботи окремих робочих станцій, а не для локальної мережі.

Відповіді:


15
  1. Встановіть bind9
  2. Вкажіть роздільну здатність.conf на 127.0.0.1

Для цього виконайте наступні дії:

Щоб встановити Bind9

  1. Відкрийте "Центр програмного забезпечення Ubuntu" (Програми-> Центр програмного забезпечення Ubuntu)
  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, ви його неправильно налаштували. Примітка. Інструкції з налаштування resol.conf можуть бути різними для різних версій Ubuntu.
thomasrutter

Отже, ви запускаєте кеш-сервер імен у вікні gui? Так, це можливо, звичайно. Більше ніж, ймовірно, для більшості читачів цього редактора буде встановлено сервер - і графічний інтерфейс необов’язковий. Простий sudo apt install bind9і sudo nano /etc/resolv.confповинен бути доданий до вашої відповіді в якості альтернативи.
bshea

Я зробив усе, але налаштування не працює. Я зробив resolv.confнарешті 127.0.0.1. Чи може це не вдатися? dig ubunut.comкаже: "Час з'єднання вичерпано; жодного сервера не вдалося досягти"
Satya Prakash

9

Я рекомендую dnsmasq,

Дивіться приємний підручник тут; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

Ви можете прочитати тут порівняння;

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


Я використовую dnsmasq для кешування DNS. Також надаються локальні відображення з / etc / hosts та DHCP (необов'язково з використанням / etc /
ethers

Я спробував dnsmasq, і він працює так само добре, як bind9 для кешування пошуку імен, але він також не здається кешувати пошук IP-адрес. Чи можливо це за допомогою dnsmasq?

1
Остерігайтеся мережевого менеджера перезаписуючи свою резолюцію.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/@

Я думаю, що файл resv.conf перезаписаний, коли ми використовуємо DHCP. Я вибираю собі статичну IP-адресу та видаляю програмне забезпечення, яке її розчавлює, редагуючи файл інтерфейсів для встановлення статичної IP-адреси. Але ви можете спробувати працювати з Менеджером мережі, якщо ви настільки схильні.

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 Так .. так, щоб ваш локальний кеш запитав Google. Ву-ху!

6
Хоча у @ user8290 є пункт, я б не сказав, що використання GoogleDNS швидше, ніж локальний. Так, Google має результати кешування, але давай - якщо ваша міжнародна швидкість падає, це не має значення, навіть якщо Google отримав усі результати DNS у світі. Локальні мережі зазвичай мають 100 Мбіт / с, тому запитувати відповідь вашого локального сервера dns на відповідь буде принаймні в 10 разів швидше, ніж запитувати 8.8.8.8/8.8.4.4 (залежно від вашої міжнародної швидкості). Звичайно, це полягає в тому, що ви кешуєте результат на своєму DNS-сервері.
tftd

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 простий у налаштуванні та добре документований. Якщо ви встановите його на брандмауер, вкажіть інтерфейси, які слід прив'язувати до виключення інтерфейсу Інтернету.

Bind важче налаштувати і може бути зайвим для кешу для невеликої мережі. Я вважаю, що конфігурація за замовчуванням кеширується лише. Ви можете додати ACL, щоб обмежити, які адреси можуть використовувати ваш сервер.


0

Пакет dnscache-запуску мав найменші конфлікти з іншими пакетами, такими як libvirt, які використовують мережеві мости та dnsmasq.

sudo apt-get install dnscache-run

Цей пакет видаляє reslavconf (/etc/resolv.conf), і вам потрібно буде використовувати / etc / network / інтерфейси або мережевий менеджер для перегляду вашої конфігурації.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.