После обновления до 13.10 мое разрешение DNS не удается. Кажется, DNS-серверы, которые я получаю по DHCP (LAN), не используются.
Я мог бы временно решить проблему, добавив nameserver 8.8.8.8
в /etc/resolv.conf
. Но тогда узлы внутренней сети все еще не могут быть решены.
При нажатии на пункт меню « Информация о соединении» на индикаторе сети первичный DNS и вторичный DNS установлены правильно. Но мой компьютер, кажется, не использовать их.
Итак, мои вопросы:
- Во что мне вложить
resolv.conf
, если что? - Как узнать, какие серверы имен запрашивает мой компьютер?
- Где искать дальше, чтобы узнать, почему серверы имен, полученные DHCP, не используются?
network-manager
Витек
источник
источник
Ответы:
Во-первых, вам нужно немного узнать о том, как распознавание имен работает в Ubuntu, начиная с Ubuntu 12.04.
Стефан Грабер опубликовал информацию об этом в прошлом году здесь . Самое важное, что нужно знать, это то, что Ubuntu Server и Ubuntu Desktop используют resolvconf для управления
resolv.conf
файлом. Это означает, что вы больше не должны редактировать/etc/resolv.conf
напрямую; вместо этого вы должны сконфигурировать вашу утилиту настройки сетевого интерфейса, чтобы предоставить правильную информацию для resolvconf. Для Ubuntu Server утилита конфигурирования сетевого интерфейса - ifup, и она настраивается файлом/etc/network/interfaces
. Для Ubuntu Desktop утилита настройки сетевого интерфейса - NetworkManager . Это то, что вы используете.NetworkManager настраивается с помощью индикатора «Сеть»> «Редактировать соединения» . Однако для сетевых интерфейсов, настроенных DHCP, обычно нет необходимости изменять какие-либо настройки вручную. Обычно случается, что (удаленный) DHCP-сервер предоставляет NetworkManager как IP-адрес для локального интерфейса, так и адрес (удаленного) DNS-сервера имен для использования. NetworkManager запускает экземпляр перенаправляющего сервера имен, который прослушивает локально на 127.0.1.1. Этот адрес 127.0.1.1, отправляется Resolvconf , который ставит
nameserver 127.0.1.1
в/etc/resolv.conf
, NetworkManager также передает (удаленный) IP-адрес DNS-сервера, предоставленного DHCP, перенаправляющему серверу имен. Таким образом, программа, работающая в локальной системе, просит преобразователь преобразовать имя хоста в IP-адрес; распознаватель запрашивает локальный сервер переадресации имен на 127.0.1.1; перенаправляющий сервер имен запрашивает удаленный сервер (ы), о котором ему было сказано, получает ответ и отправляет его обратно по цепочке.NetworkManager связывается с процессом переадресации имен через D-Bus. Вы можете увидеть, что NetworkManager сказал перенаправляющему серверу имен, выполнив команду
Обновление, вытекающее из комментариев:
обратите внимание, что resolvconf фактически записывает файл,
/run/resolvconf/resolv.conf
на который/etc/resolv.conf
должна быть символическая ссылка. Если/etc/resolv.conf
это не символическая ссылка, то вам нужно восстановить ее. Для этого вы можете запуститьили же
источник
sudo dpkg-reconfigure resolvconf
или вы можете сделатьmv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
sudo dpkg-reconfigure resolvconf
как предложено в последней части ответа.sudo dpkg-reconfigure resolveconf
похоже, он работал отлично!Я внес изменения, предложенные по ссылке ниже (отключение dnsmasq). Теперь все отлично работает! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html
Открыть
/etc/NetworkManager/NetworkManager.conf
файлЗакомментируйте строку как:
источник
sudo restart network-manager
.sudo /etc/init.d/network-manager restart
dns=default
в[main]
раздел. NetworkManager имеет свой собственный плагин dnsmasq, который он будет использовать иначе.network-manager
-sudo service network-manager restart
РЕДАКТИРОВАТЬ 2: предыдущий пост был по праву удален модератором, я публикую то, что я нашел решение. Простите за это.
РЕДАКТИРОВАТЬ: Я только что нашел ответ, и это на этой самой странице - извините за мою миопию. Я разместил свои выводы ниже, расширив правильный ответ Ричарда Линдштедта, найденный на этой странице. Я оставил свое раннее урчание для некоторого контекста. Пожалуйста, подтвердите ответ Ричарда, он этого заслуживает.
Это точно не помогло ОП и не помогает мне сейчас. Нам не нужны статические адреса, мы хотим использовать те, которые нам отправляет DHCP-сервер. NetworkManager, кажется, распознает их, но Ubuntu прямо игнорирует их:
Но...
И мой / etc / network / interfaces это:
что немного странно, я ожидаю, что все интерфейсы будут объявлены здесь (или я что-то упустил?).
Итак, вкратце:
dpkg-reconfigure resolvconf
Не открывать другой поток, потому что это точная проблема, за исключением того, что я сейчас на 14.10 (но это меня мучает с момента обновления с 12.10 до 13.04).
РЕШЕНИЕ
Эта последняя фраза вывела меня на правильный путь, и только тогда я заметил ответ Ричарда.
Кажется, проблема связана с конфликтом
dnsmasq
иresolvconf
пакетами. До 12.10dnsmasq
использовался. Начиная с 13.04 Ubuntu, похоже, переключился на гибрид dnsmasq / resolvconf, где вы установили пакетыdnsmasq-base
иresolvconf
, но неdnsmasq
себя.Я не могу сказать, является ли это ошибкой в скриптах обновления для 13.04 или чем-то еще, потому что при обновлении (как в новых установках) resolvconf установлен, dnsmasq-base обновляется, а dnsmasq (правильно) удаляется.
Уловка в том, что скрипт обновления не может закомментировать
dns=dnsmasq
строку в/etc/NetworkManager/NetworkManager.conf
. Таким образом, хотя демон dnsmasq больше не присутствует в системе, /etc/resolv.conf все еще ожидает его появления.источник
dnsmasq
иdnsmasq-base
установлен, NM поместит127.0.0.1
в/etc/resolv.conf
вместо127.0.1.1
. Я просто удалилdnsmasq
(и включил NM) и все работает просто отлично.sudo service network-manager restart
это вступило в силу.На самом деле это действительно легко.
просто откройте файл conf интерфейсов -> sudo vi / etc / network / interfaces
и под вашим интерфейсом (вероятно, eth0) вы увидите все обычные конфигурации.
После шлюза просто добавьте 'dns-nameservers 8.8.8.8 8.8.8.9' или любой другой сервер имен, который вы собираетесь использовать.
Итак, ваш конфиг должен быть:
затем просто выполните «перезагрузку сети службы sudo», и все готово!
источник