Обратный поиск 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

Использование хоста (dig дает те же результаты):

# 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

И хост, и dig возвращаются очень быстро для публичного ip, но для ip локальной сети требуется 10 секунд. Я думаю, 10с - это мое текущее значение тайм-аута.

обновление 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

Является ли 192.168.1.1 IP-адресом вашего роутера?

nameserver 192.168.1.1 предполагает, что ваш маршрутизатор рекламирует себя как DNS-сервер, а не «отправляет DNS-серверы интернет-провайдера».

Какая марка и модель роутера у вас есть? Веб-интерфейс показывает сообщения журнала?

Мне интересно, пересылает ли ваш маршрутизатор запрос на серверы имен вашего провайдера, но серверы имен вашего провайдера отбрасывают запрос, потому что они не хотят, чтобы вы знали, какая у них машина с IP 192.168.1.50 называется .

Предложения:

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

Мой маршрутизатор - «NETGEAR Router WNR3500L» @ 192.168.1.1. Журналы показывают только аренду DHCP и входы в интерфейс администратора. Вы правы, маршрутизатор отправляет 192.168.1.1 в качестве DNS-сервера при обработке аренды DHCP (подтверждено Wireshark). В интерфейсе администратора маршрутизатора я использую «Получить автоматически от интернет-провайдера» для адресов DNS. Другим вариантом является непосредственное указание DNS-серверов по IP. Я предполагаю, что это означает, что запросы DNS фактически передаются маршрутизатором.
Берни

Да, я предполагаю, что это пересылает запросы DNS. Что если вы измените его на использование Google Public DNS ( 8.8.8.8и 8.8.4.4) вместо этого?
Микель

Вау, это на самом деле имеет большое значение! Очевидно, что эти DNS-серверы (Google и OpenDNS) быстро выходят из строя, когда им присваивается частный IP-адрес. Я проведу еще несколько тестов, но я думаю, что это решит мою проблему!
Берни

Отмечать это как принятый ответ. 3 ответа были полезны, но изменение DNS-серверов решило проблему «в целом».
Берни

4

Сбой поиска DNS должен быстро провалиться. Тем не менее, я обычно запускаю dnsmasq, который читает файл hosts и обслуживает эти записи для прямого и обратного поиска. Он также действует как сервер кэширования 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, которые он обрабатывает.

РЕДАКТИРОВАТЬ 2: Если ни один из ваших компьютеров не работает постоянно, вы можете посмотреть, как установить samba и использовать его winsв конфигурации nsswitch. Он должен быть быстрым, поэтому он может сработать, если вы поставите его перед dnsвходом hosts.

Вы также можете посмотреть на установку avahiутилит, которые позволят автоматическое обнаружение в локальных сетях связи. Он работает на стороне IPv6, но не публикует адреса IPv4. Домен по умолчанию для хостов - «.local». Это может не подходить в вашем случае, но может быть отменено. Кроме того, поиск выполняется медленнее, чем то, winsчто mdnsопережение dnsв конфигурации nsswitch может не подходить.


Я думаю, что он сказал, что все (и только) LAN смотрят медленно, и он пытается вообще избежать файла hosts.
чхан

Поскольку это всего лишь тестовый сервер (и виртуальный тоже!), Я не могу полагаться на него в качестве DHCP-сервера для всей локальной сети. Существуют и другие случайные беспроводные клиенты, которым требуется IP-адрес, даже если мой dev-компьютер и, следовательно, тестовый сервер не работают.
Берни

Обновил мой пост снова. Спасибо за вашу помощь.
Берни

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 на минимум (Dial up)

Это дало мне ошибку, что такой поиск не сработал, и предложение отредактировать / etc / hosts - но единственное, что я сделал с / etc / hosts, это закомментировал строки ip6-allnodes и ip6-allrouters.

Перезагрузка должна быть быстрой (для меня это как минимум).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.