Назад | Перейти на главную страницу

Поиск хоста в Ubuntu 12.04 очень медленный

У меня проблемы с одним из моих серверов, которым требуется много времени для поиска имен хостов. Это коробка Ubuntu 12.04, поэтому я пробовал следовать новой resolvconf директивы.

В моем /etc/network/interfaces файла, я определил свои серверы имен следующим образом:

auto eth0
iface eth0 inet static
 address someaddress
 netmask 255.255.255.0
 gateway 198.58.103.1
 dns-nameservers 74.14.179.5 72.14.188.5

В моем /etc/resolv.conf, Я вижу эти серверы имен, например:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 74.14.179.5
nameserver 72.14.188.5

В другом ящике я редактировал resolv.conf непосредственно в соответствии с указаниями файлов помощи по установке моих хостов. Выглядит это так:

domain members.linode.com
search members.linode.com
nameserver 72.14.179.5
nameserver 72.14.188.5
options rotate

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

Не мог domain и search директивы замедляют мой поиск? Под медленным я подразумеваю, что определение IP-адреса хоста занимает от 5 до 15 секунд.

Если я сделаю time dig @72.14.179.5 www.google.com Я получаю ответ быстро с "реальным" временем 0,170 секунды.

Если я сделаю ping google.com Я получаю реальное время 10.078 секунд, даже если я выхожу из пинга после одного ответа. Как это:

time ping google.com
PING google.com (74.125.228.37) 56(84) bytes of data.
^C64 bytes from iad23s06-in-f5.1e100.net (74.125.228.37): icmp_req=1 ttl=54 time=34.2 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 34.291/34.291/34.291/0.000 ms

real    0m10.078s
user    0m0.001s
sys     0m0.005s

Добавить dns-search и dns-domain директивы к вашему /etc/network/interfaces файл.

У вас загружен модуль ядра ipv6?

Если у вас есть, ваша система сначала будет искать запись AAAA, и если она вернет запись, она предпочтет использовать ее, а не запись A, и проблема в том, что служба, запросившая поиск, попытается подключиться с помощью AAAA ответ, который может не поддерживаться для используемого стека IP.

Отключите модуль ядра ipv6, и эта проблема исчезнет.

Хотя, возможно, и не так. Вы всегда можете установить dnsmasq локально, чтобы ваши серверы имен в /etc/resolv.conf были настроены на поиск по локальному хосту, а dnsmasq будет искать серверы имен восходящего потока и кэшировать результат, поэтому первый будет медленным, но все последующие одни будут молниеносными.

Мне не удалось заставить работать директиву dns-domain. Я также хотел добавить в конце «поворот опций». Я за то, чтобы этот файл генерировался динамически, но должна быть поддержка всего из файла интерфейсов. Я снова сделал resolv.conf файлом вместо символической ссылки.

У меня была такая же проблема 12.04, я решил ее, сделав это

Отредактируйте соединения в апплете сетевого менеджера -> Авто Ethernet (или беспроводной) -> вкладка IPV4 -> выберите метод "Только автоматические (DHCP) адреса"

Введите DNS-сервер - 8.8.8.8

Введите поисковые домены - google-public-dns-a.google.com (вы получите это хостом при поиске в 8.8.8.8) и сохраните

Вот и все, больше никаких "разрешений хоста"

Если у вас нет ipv6, возможно, вы также можете игнорировать его на вкладке Ipv6, но я не заметил каких-либо значительных изменений при этом.