Зворотний пошук DNS, уповільнюючи мережеві операції в локальній мережі


9

Навколишнє середовище

Моя настройка локальної мережі є досить базовою:

  • Маршрутизатор, підключений до модему провайдера та Інтернету
  • Моя розробка ПК безпосередньо підключена до роутера

Маршрутизатор забезпечує DHCP, але не запускає власний DNS-сервер. Насправді в моїй локальній мережі ніде не розміщений сервер DNS (типова настройка домашньої мережі). Маршрутизатор налаштований для передачі DNS-серверів ISP як частини інформації про оренду DHCP.

Я встановив на своєму розробниковому ПК VirtualBox і встановив на ньому Debian Squeeze (6.0.4). Режим мережі VirtualBox - Bridged Adapterце імітувати окремий сервер у моїй локальній мережі. Бути сервером VirtualBox замість фізичного сервера насправді не важливо, але я згадую його для повноти.

Проблема

Кожен раз, коли мережева операція виконує зворотний пошук DNS локальної мережі ip перед виконанням, сервер має великі затримки. Деякі приклади повільних мережевих операцій:

  • Підключення SSH до сервера з мого розробника
  • Підключення до порту адміністратора сервера Glassfish
  • netstat -l( netstat -nlдуже швидко)
  • Starting MTA: exim4 на завантаження потрібно тривати довгий час

Деякі з них мають обхідні шляхи, такі як додавання Ip мого ПК на /etc/hostsдодаток або додавання специфічної для команди опції, щоб уникнути зворотного пошуку DNS. Очевидно, що використання /etc/hostsлише йде так далеко, тому що це суперечить DHCP.

Однак я не можу не думати, що чогось мені не вистачає. Мені дійсно потрібно налаштувати DNS-сервер десь у моїй локальній мережі? Це здається величезним і марним зусиллям для моїх потреб, і я не можу повірити, що в такому середовищі DHCP, як у мене, немає іншого варіанту.

Я багато шукав у мережі для цього, і, можливо, у мене немає правильних пошукових термінів, але я не можу знайти рішення ...

оновлення 1 після відповіді BillThor

Використання хоста (копання дає ті самі результати):

# ip of stackoverflow.com
$ time host -v 64.34.119.12
Trying "12.119.34.64.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15537
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;12.119.34.64.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
12.119.34.64.in-addr.arpa. 143  IN      PTR     stackoverflow.com.

Received 74 bytes from 192.168.1.1#53 in 15 ms

real    0m0.020s
user    0m0.008s
sys     0m0.000s

# ip of dev pc
$ time host -v 192.168.1.50
Trying "50.1.168.192.in-addr.arpa"
;; connection timed out; no servers could be reached

real    0m10.004s
user    0m0.004s
sys     0m0.000s

Мій /etc/resolv.conf (був автоматично створений під час встановлення)

nameserver 192.168.1.1

Як хостинг, так і копання повертаються дуже швидко для публічного ip, але знадобиться 10 секунд на час очікування для ip локальної мережі. Я думаю, 10s - це моє поточне значення очікування.

оновлення 2

З dev-pcфайлом в / etc / hosts:

$ time getent hosts 192.168.1.50
192.168.1.50    dev-pc

real    0m0.001s
user    0m0.000s
sys     0m0.000s

Без dev-pcфайлу / etc / hosts:

$ time getent hosts 192.168.1.50

real    0m10.012s
user    0m0.004s
sys     0m0.000s

Це виглядає все більше і більше, як мені доведеться знайти параметри програм або параметри програми для кожного з них, які намагаються зробити зворотні пошуки DNS! Жодна з машин (віртуальна чи ні) не може діяти як DNS-сервер у моїй локальній мережі, оскільки вони не завжди працюють. На жаль, мікропрограмне забезпечення маршрутизатора не включає DNS-сервер.

Відповіді:


3

Чи IP-адреса вашого маршрутизатора 192.168.1.1?

nameserver 192.168.1.1 пропонує ваш маршрутизатор рекламувати себе як DNS-сервер, а не "надсилати DNS-сервери ISP".

Яка марка та модель маршрутизатора у вас є? Чи відображає веб-інтерфейс повідомлення журналу?

Мені цікаво, чи ваш маршрутизатор пересилає запит до серверів імен вашого провайдера, але сервери імен вашого провайдера відмовляються від запиту, оскільки вони не хочуть, щоб ви знали, як 192.168.1.50називається їх машина з IP-адресою .

Пропозиції:

  • Двічі перевірте налаштування вашого маршрутизатора. Він повинен відповідати на запити вашої власної приватної мережі . Можливо, ви можете додати статичний запис хосту у веб-інтерфейс свого маршрутизатора?
  • Спробуйте встановити Avahi у всіх системах вашої мережі.
  • Скажіть маршрутизатору використовувати Google Public DNS ( 8.8.8.8і 8.8.4.4) або OpenDNS

Мій маршрутизатор - це "NETGEAR маршрутизатор WNR3500L" @ 192.168.1.1. У журналах відображаються лише оренда DHCP та вхід в інтерфейс адміністратора. Ви маєте рацію, маршрутизатор надсилає 192.168.1.1 як сервер dns при обробці DHCP-оренди (підтверджено Wireshark). У адміністраторському інтерфейсі маршрутизатора я використовую "Отримати автоматично від ISP" для адрес DNS. Інший варіант - вказати безпосередньо DNS-сервери за IP. Я думаю, це означає, що маршрутизатори фактично пересилають запити DNS.
Берні

Так, я здогадуюсь, що він пересилає запити DNS. Що робити, якщо ви зміните це на використання натомість Google Public DNS ( 8.8.8.8і 8.8.4.4)?
Мікель

Нічого, це насправді велике значення! Мабуть, ці сервери DNS (Google і OpenDNS ') швидко виходять з ладу, отримуючи приватну IP-адресу. Я проведу ще кілька тестів, але я думаю, що це вирішує мою проблему!
bernie

Позначення цього як прийняту відповідь. 3 відповіді були корисними, але зміна серверів dns вирішила проблему "в цілому".
bernie

4

Помилка пошуку DNS повинна швидко вийти з ладу. Однак я, як правило, запускаю dnsmasq, який буде читати файл хостів і обслуговувати ці записи для прямого і зворотного пошуку. Він також виконує функцію кешування DNS-сервера, щоб зменшити навантаження на поточні DNS-сервери.

Ви можете скористатися командою hostабо, digщоб побачити, які пошуки повільні. Якщо ви перенаправлені на сервер DNS, який не працює, DNS буде тривати досить довго. Ви можете налаштувати тайм-аути та повторні спроби, /etc/resolv.confщоб прискорити помилки.

РЕДАКТУВАННЯ: Для тестування відповіді на роздільну здатність спробуйте скористатися time getent hosts 192.168.1.50. Це повинно повернути пошук з вашого /etc/hostsфайлу, а також DNS. Команди hostта digперевіряють лише DNS. Якщо це повертається, але займає кілька секунд, можливо, ви захочете змінити порядок hostsзапису в /etc/nsswitch.confпереміщенні файлів на передню частину списку.

Налаштування dnsmasqта використання його в якості основного сервера імен DNS /etc/resolve.confмає вирішити проблему, якщо у вас є програми, які для пошуку імен покладаються лише на DNS. Exim повинен використовувати роздільну здатність для базових підходів. Вам знадобиться /etc/hostsфайл, якщо ви не можете відключити DHCP-сервер на маршрутизаторі, ви можете використовувати dnsmasqдля DHCP. dnsmasqавтоматично реєструє імена, якщо вони надаються в DHCP-запитах, якими він обробляється.

EDIT2: Якщо жоден з ваших комп'ютерів не працює завжди, ви можете переглянути установку samba та використання winsу своїй конфігурації nsswitch. Він повинен бути швидким, тому він може спрацювати, якщо поставити його попереду dnsв хості запису.

Ви також можете поглянути на встановлення avahiутиліт, які дозволять автоматичне виявлення у локальних мережах посилань. У мене це працює на стороні IPv6, але він не публікує адреси IPv4. Домен за умовчанням для хостів - ".local". У вашому випадку це може не підходити, але його можна відмінити. Також здається, що повільніші пошуки, ніж winsте, що mdnsвипередження dnsв конфігурації nsswitch може бути не підходящим.


Я думаю, що він сказав, що все (і тільки) локальна мережа шукає повільно, і він взагалі намагається уникати файлів хостів.
ckhan

Оскільки це лише тестовий сервер (і віртуальний теж!), Я не можу покластися на нього як на DHCP-сервер для всієї локальної мережі. Є й інші епізодичні бездротові клієнти, яким потрібен IP, навіть коли мій ПК, а отже, і тестовий сервер, не працює.
bernie

Ще раз оновлено мою публікацію. Дякуємо за вашу допомогу.
bernie

3

Якщо ви не хочете пройти процедуру налаштування локального сервера DNS (і, можливо, DHCP) для вашої домашньої мережі, ви можете сказати службам, де це можливо, не виконувати зворотні пошуки DNS.

Наприклад, щоб відключити пошук зворотного dns для SSHD, додайте у sshd_configфайл (або подібне залежно від дистрибутива):

UseDNS no

Ви можете видалити цей рядок із конфігурації Exim, хоча мені не ясно, чи це вплине на швидкість запуску, це запобіжить зворотній пошук dns на підключенні клієнтів:

host_lookup = *

Схоже, ви можете експортувати цю змінну середовища для користувача, який запускає процес Glassfish:

export AS_NO_REVERSE_DNS=true


Я б хотів, щоб я міг налаштувати DNS-сервер із фактичним обладнанням, яке я маю, але це не реально, якщо я не завантажую на маршрутизатор іншу прошивку. Дякуємо за параметри конфігурації; Я не дізнався про AS_NO_REVERSE_DNSваріант для Glassfish, тож буду дивитись.
Берні

1

Була така ж проблема після переходу з динамічного на статичний IP. Моя мережа зараз налаштована: STATIC - НЕ IPv6 і не має наміру використовувати поштовий сервер.

Я вирішив проблему, зробивши:

1: запустіть dpkg-переконфігуруйте exim4-config

2: Коли ви перейдете до питання пошуку DNS -> Встановіть пошукові запити DNS як мінімум (набір номера)

Це дало мені помилку, що подібний пошук не буде працювати, і пропозиція редагувати / etc / hosts - але єдине, що я робив з / etc / hosts, - коментування ліній ip6-allnodes та ip6-allrouters.

Перезавантаження має бути швидким зараз (для мене це принаймні).

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