После обновления до 13.10 мое разрешение DNS не удается. Похоже, что DNS-серверы, которые я получаю по DHCP (LAN), не используются.
Я мог бы временно решить проблему, добавив nameserver 8.8.8.8
к /etc/resolv.conf
. Но тогда хосты интрасети все еще не могут быть решены.
Если щелкнуть пункт меню Информация о соединении на индикаторе сети, первичный DNS и вторичный DNS установлены правильно. Но мой компьютер пытается их не использовать.
Итак, мои вопросы:
resolv.conf
, если что? Во-первых, вам нужно немного узнать о том, как распознавание имен работает в 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 сообщил серверу имен переадресации, выполнив команду
nmcli dev list iface eth0 | grep IP4.DNS
Обновление, вытекающее из комментариев:
Обратите внимание, что resolvconf фактически записывает файл /run/resolvconf/resolv.conf
к которому /etc/resolv.conf
предполагается символическая ссылка. Если /etc/resolv.conf
не является символической ссылкой, то вам нужно восстановить ее. Для этого вы можете запустить
sudo dpkg-reconfigure resolvconf
или
sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
Это на самом деле очень легко.
просто откройте файл conf вашего интерфейса -> sudo vi / etc / network / interfaces
и под вашим интерфейсом (вероятно, eth0) вы увидите все обычные конфигурации.
address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
После шлюза просто добавьте «dns-nameservers 8.8.8.8 8.8.8.9» или любой другой сервер имен, который вы собираетесь использовать.
Итак, ваша конфигурация должна быть:
address 192.168.22.71
netmask 255.255.255.0
gateway 192.168.22.1
dns-nameservers 8.8.8.8 8.8.8.9
, а затем просто выполните «перезагрузку сети службы sudo», и все готово!
РЕДАКТИРОВАТЬ 2: Предыдущая публикация была законно удалена модерацией, я публикую то, что я считаю решением. Извините за это.
РЕДАКТИРОВАТЬ: Я только что нашел ответ, и это на этой самой странице - извините за мою миопию. Я разместил свои выводы ниже, расширив правильный ответ Ричарда Линдштедта, найденный на этой странице. Я оставил свое раннее урчание для некоторого контекста. Пожалуйста, подтвердите ответ Ричарда, он этого заслуживает.
Это действительно очень просто.
просто откройте файл conf вашего интерфейса -> sudo vi / etc / network / interfaces
Это точно не помогло OP и не помогло мне сейчас. Нам не нужны статические адреса, мы хотим использовать те, которые нам отправляет DHCP-сервер. NetworkManager, кажется, распознает их, но Ubuntu прямо игнорирует их:
# nmcli dev list iface wlan0 | grep IP4.DNS
IP4.DNS[1]: 10.*.*.*
IP4.DNS[2]: 10.*.*.*
IP4.DNS[3]: 8.8.8.8
Но ...
# dig microsoft.com
; <<>> DiG 9.9.5-4.3-Ubuntu <<>> microsoft.com
;; global options: cmd
;; connection timed out; no servers could be reached
И мой / etc / network / interfaces:
auto lo
iface lo inet loopback
, что немного странно, я ожидаю, что все интерфейсы будут объявлены здесь (или я что-то упустил?).
Итак, вкратце:
dpkg-reconfigure resolvconf
Не открывать другой поток, потому что это точная проблема, за исключением того, что я нахожусь на 14.10 (но это беспокоит меня с момента обновления с 12.10 до 13.04).
РЕШЕНИЕ
Эта последняя фраза вывела меня на правильный путь, и только тогда я заметил ответ Ричарда.
Проблема, по-видимому, связана с конфликтующими пакетами dnsmasq
и resolvconf
. До 12.10 использовалось dnsmasq
. Начиная с 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 все еще ожидает его.
sudo service network-manager restart
для этого для вступления в силу.
– Aaron
13.05.2020, 14:15
dnsmasq
и dnsmasq-base
установленный, NM поместит 127.0.0.1
в /etc/resolv.conf
вместо 127.0.1.1
. Я просто удалил dnsmasq
(и включил NM), и все работает просто великолепно.
– K_ID
13.05.2020, 14:16
Я внес изменения, предложенные по ссылке ниже (отключение dnsmasq). Теперь все отлично работает! http://www.ubuntugeek.com/how-to-disable-dnsmasq-in-ubuntu-12-04precise.html
Открыть файл /etc/NetworkManager/NetworkManager.conf
.
sudo gedit /etc/NetworkManager/NetworkManager.conf
Прокомментируйте строку как:
#dnsmasq deactivated
#dns=dnsmasq
dns=default
к эти [main]
раздел. NetworkManager имеет свой собственный противный dnsmasq плагин, который он будет использовать иначе.
– Skurut
13.05.2020, 14:15
network-manager
- sudo service network-manager restart
– stovfl
13.05.2020, 14:16
sudo restart network-manager
.
– stuartd
13.05.2020, 14:16
sudo dpkg-reconfigure resolvconf
, как предложено в последней части ответа. – Tim 13.05.2020, 14:14sudo dpkg-reconfigure resolveconf
, казалось, работало отлично! – 2pha 13.05.2020, 14:14sudo dpkg-reconfigure resolvconf
, или можно сделатьmv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s ../run/resolvconf/resolv.conf /etc/resolv.conf
– Dimitri 13.05.2020, 14:15