Окружающая обстановка
Моя настройка локальной сети довольно проста:
- Маршрутизатор, подключенный к модему интернет-провайдера и интернету
- Мой компьютер для разработки напрямую подключен к роутеру
Маршрутизатор предоставляет 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-сервер.