nameserver 127.0.1.1 в resolv.conf не исчезнет!

Я прочитал, что я должен был nameserver 127.0.1.1 в моем /etc/resolv.conf файл, только если моя машина имеет свой собственный DNS-сервер. Поскольку это не так, то это вызывает проблемы. Но независимо от того, что я делаю, я не могу избавиться от этого!

Вот что я сделал до сих пор:

  1. Добавление nameserver 192.168.1.3 в /etc/resolvconf/resolv.conf.d/base файл. (192.168.1.3 - это DNS нашей сети).
  2. Бег: sudo resolvconf --enable-updates,
  3. Бег: sudo resolvconf -u,
  4. Бег: sudo service network-manager restart (просто чтобы убедиться).

Тем не менее, когда я открываю /etc/resolv.conf файл это говорит: nameserver 127.0.1.1! У кого-нибудь есть идеи, что не так?

Обратите внимание, что это на самом деле 127.0.1.1! И я понятия не имею, почему это не 127.0.0.1!

Даже когда я обновляю /etc/resolv.conf вручную и изменить его на что-либо еще, sudo resolvconf -u вернет его обратно 127.0.1.1! Откуда этот адрес?

3 ответа

Решение

NetworkManager - это программа, которая (через утилиту resolvconf) вставляет адрес 127.0.1.1 в resolv.conf, NM вставляет этот адрес только в том случае, если он настроен на запуск экземпляра программы dnsmasq, служащего в качестве локального сервера пересылки имен. Этот экземпляр dnsmasq прослушивает запросы по адресу 127.0.1.1.

Если вы не хотите использовать локальный сервер переадресации имен, настройте NetworkManager, чтобы он не запускал экземпляр dnsmasq и не вставлял этот адрес. В /etc/NetworkManager/NetworkManager.conf закомментируйте строку dns=dnsmasq

sudo nano /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

и перезапустите службу NetworkManager.

sudo service network-manager restart

В этом режиме обновления NetworkManager /etc/resolv.conf (по-прежнему через resolvconf) для включения адресов серверов имен, которые NetworkManager имеет для активных соединений.

Если вы хотите отключить механизм resolvconf для обновления resolv.conf и просто использовать статический файл resolv.conf, выполните следующие действия.

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo nano /etc/resolv.conf   # Create static file

# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8

Возможно, resolvconf настроен неправильно. Это особенно вероятно, если вы играли с его конфигурационными файлами, не понимая, как работают resolvconf и NetworkManager.

Для получения дополнительной информации, пожалуйста, прочитайте документацию resolvconf и сообщение в блоге Стефана Грабера.

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

Во-первых, вы должны знать, что как Ubuntu Desktop, так и Ubuntu Server по умолчанию имеют и активируют resolvconf. Resolvconf предоставляет платформу для динамического обновления файла /etc/resolv.conf упорядоченным и обратимым способом.

Во-вторых, вы должны знать, что по умолчанию в Ubuntu Desktop установлен и активирован NetworkManager. По умолчанию NetworkManager запускает экземпляр dnsmasq в качестве локального сервера пересылки имен. Этот контролируемый NetworkManager экземпляр dnsmasq прослушивает запросы в 127.0.1.1. Когда NetworkManager запускает экземпляр dnsmasq, он говорит resolvconf вставить адрес 127.0.1.1 в resolv.conf. Как уже упоминалось в другом ответе, если вы настроите NetworkManager не запускать экземпляр сервера локальной пересылки, то он не запустит сервер имен локальной пересылки и не скажет resolvconf вставить адрес 127.0.1.1 в resolv.conf.

Эта конфигурация по умолчанию работает правильно, поэтому, если ваша ситуация не является особенной, вы должны восстановить конфигурацию по умолчанию.

Чтобы восстановить конфигурацию по умолчанию, проследите, чтобы

  • /etc/resolvconf/resolv.conf.d/head содержит только текст заголовка resolvconf, состоящий из двух строк, начинающихся с # персонаж
  • /etc/resolvconf/resolv.conf.d/base - пустой файл
  • /etc/resolvconf/resolv.conf.d/tail - это пустой файл
  • /etc/resolv.conf - это символическая ссылка с контентом ../run/resolvconf/resolv.conf

Для этого выполните следующие команды.

sudo su
dpkg-reconfigure resolvconf   # And answer `Yes` to agree to dynamic updates
cd /etc/resolvconf/resolv.conf.d
echo '# 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' > head
rm -f base tail original
:> base
:> tail

Исходная конфигурация NetworkManager должна иметь

[main]
...
dns=dnsmasq
...

в /etc/NetworkManager/NetworkManager.conf. Это разумный выбор, чтобы отключить управляемый NetworkManager локальный сервер пересылки имен, закомментировав dns=dnsmasq линия.

[main]
...
#dns=dnsmasq
...

После всего этого рекомендуется перезагрузить компьютер, чтобы очистить устаревшие записи информации сервера имен.

sudo reboot

В моем случае не было dns=dnsmasq линия в /etc/NetworkManager/NetworkManager.conf файл и /etc/resolv.conf был по-прежнему перезаписан сетевым менеджером, чтобы иметь только nameserver 127.0.1.1

Исправление состояло в том, чтобы восстановить символическую ссылку для правильного обновления:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf

Ubuntu 16.04 + Ubuntu 18.04 Server - Настройте /etc/resolv.conf для сохранения после перезагрузки

На сервере Ubuntu 16.04 нет /etc/NetworkManager/NetworkManager.conf файл.

Выполнение следующей команды покажет вам, что /etc/resolv.conf файл связан с /run/resolvconf/resolv.conf файл:

sudo ls -la /etc/resolv.conf

Удалите этот файл и создайте его заново:

       sudo rm -f /etc/resolv.conf
sudo echo '#== My Static /etc/resolv.conf File
#== ===============================
nameserver 8.8.8.8
nameserver 8.8.4.4' > /etc/resolv.conf

Теперь вы увидите, что ссылки больше нет и ваш статический /etc/resolv.conf файл присутствует.

sudo ls -la /etc/resolv.conf

Теперь, чтобы настроить resolvconf НЕ для восстановления значения по умолчанию /etc/resolv.conf файл, чтобы ваш статический файл сохранялся после перезагрузки, выполните следующую команду:

sudo dpkg-reconfigure resolvconf

НА первом экране нажмите кнопку вкладки, чтобы выбрать NO

НА втором экране нажмите клавишу табуляции, чтобы выбрать ОК, и нажмите Enter.

Ваш /etc/resolv.conf файл сохранится после перезагрузки сервера.

Сервер Ubuntu 18.04

Если вы добавите ips в свой /etc/netplan/50-cloud-init.yaml файл, скорее всего, вам придется применить новые настройки с netplan apply или netplan --debug apply. Это воссоздает /etc/resolve.conf ссылка на ../run/resolvconf/resolv.conf. Если это произойдет, просто rm -f /etc/resolv.conf и воссоздайте его, как описано выше.

Теперь тебе нужно chattr файл так:
chattr +i /etc/resolv.conf

Ваш /etc/resolv.conf файл сохранится после перезагрузки сервера.

Если вам нужно отредактировать файл, не забудьте перевернуть chattr вот так:
chattr -i /etc/resolv.conf

Теперь вы можете редактировать /etc/resolve.cfg

Другие вопросы по тегам