Как исправить разрешение DNS, которое не работает после обновления до Ubuntu 13.10 (Saucy)

После обновления до 13.10 мое разрешение DNS не удается. Похоже, что DNS-серверы, которые я получаю по DHCP (LAN), не используются.

Я мог бы временно решить проблему, добавив nameserver 8.8.8.8 к /etc/resolv.conf. Но тогда хосты интрасети все еще не могут быть решены.

Если щелкнуть пункт меню Информация о соединении на индикаторе сети, первичный DNS и вторичный DNS установлены правильно. Но мой компьютер пытается их не использовать.

Итак, мои вопросы:

  • Что мне добавить в resolv.conf, если что?
  • Как узнать, какие серверы имен запрашивает мой компьютер?
  • Где искать дальше, чтобы выяснить, почему серверы имен, полученные DHCP, не используются?
63
задан 13.05.2020, 14:12

4 ответа

Во-первых, вам нужно немного узнать о том, как распознавание имен работает в 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        
0
ответ дан 13.05.2020, 14:13
  • 1
    Большое спасибо за эту информацию. В моем случае команда показывает корректные серверы DNS. Но resolf.conf файл не обновляется. Это имеет метку времени от того, когда я поместил свои значения там. Таким образом, я должен буду узнать, почему resolvconf не пишет файл. – Conor8630 13.05.2020, 14:13
  • 2
    Фиксация может быть должна работать sudo dpkg-reconfigure resolvconf, как предложено в последней части ответа. – Tim 13.05.2020, 14:14
  • 3
    Спасибо!!! Я не уверен, что произошло с моей системой, но выполнение эти sudo dpkg-reconfigure resolveconf, казалось, работало отлично! – 2pha 13.05.2020, 14:14
  • 4
    Это имеет все кроме ' fix'. как я могу решить этот вопрос? – stuartd 13.05.2020, 14:15
  • 5
    Resolvconf на самом деле пишет файл/run/resolvconf/resolv.conf, и/etc/resolv.conf, как предполагается, является символьной ссылкой на/run/resolvconf/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 – Dimitri 13.05.2020, 14:15

Это на самом деле очень легко.

просто откройте файл 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», и все готово!

0
ответ дан 13.05.2020, 14:13

РЕДАКТИРОВАТЬ 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
  • Правая символическая ссылка на месте
  • NetworkManager извлекает правильные DNS-серверы из DHCP
  • Ubuntu НЕ использует такие адреса
  • Временное решение: установить исправленное 8.8.8.8 в / etc / network / interfaces ЧТО Я НЕ ХОЧУ
  • Я хочу использовать предоставленные DHCP DNS-серверы во всех без исключения ситуациях.

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

0
ответ дан 13.05.2020, 14:14
  • 1
    Будущие Сотрудники Google должны отметить, что Вы имеете к sudo service network-manager restart для этого для вступления в силу. – Aaron 13.05.2020, 14:15
  • 2
    Положительная сторона на сервисном перезапуске администратора сети! – F.Madsen 13.05.2020, 14:15
  • 3
    ЭТО ЯВЛЯЕТСЯ НАСТОЛЬКО ПОТРЯСАЮЩИМ! – K_ID 13.05.2020, 14:16
  • 4
    OMG это решило мои проблемы DNS, которые я имел в течение прошлых 3 лет! Если Вы будете иметь 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
0
ответ дан 13.05.2020, 14:14
  • 1
    Одно из моего поля не имело никакого dns после обновления 17,10, и оказывается, что/etc/resolv.conf не был символьной ссылкой. Зафиксированный это. Другое поле не закончило обновлять, и я нашел .dpkg-новый файл в dir, разность их, основным различием является dnsmasq. Скопированный это и работало без перезапуска любой демон – VCM 13.05.2020, 14:15
  • 2
    Если у Вас есть этот случай с Вами, даже при том, что нет никакого dnsmasq, установленного, и нет ничего, чтобы выровнять комментарий, добавить dns=default к эти [main] раздел. NetworkManager имеет свой собственный противный dnsmasq плагин, который он будет использовать иначе. – Skurut 13.05.2020, 14:15
  • 3
    В моем случае (Xubuntu) команда: sudo /etc/init.d/network-manager restart – 2pha 13.05.2020, 14:16
  • 4
    Я должен сделать этот перезапуск network-manager - sudo service network-manager restart – stovfl 13.05.2020, 14:16
  • 5
    После комментирования dnsmasq, необходимо перезапустить администратора сети: sudo restart network-manager. – stuartd 13.05.2020, 14:16

Теги

Похожие вопросы