nameserver 127.0.1.1 в resolv.conf не исчезнет!
Я прочитал, что я должен был nameserver 127.0.1.1
в моем /etc/resolv.conf
файл, только если моя машина имеет свой собственный DNS-сервер. Поскольку это не так, то это вызывает проблемы. Но независимо от того, что я делаю, я не могу избавиться от этого!
Вот что я сделал до сих пор:
- Добавление
nameserver 192.168.1.3
в/etc/resolvconf/resolv.conf.d/base
файл. (192.168.1.3 - это DNS нашей сети). - Бег:
sudo resolvconf --enable-updates
, - Бег:
sudo resolvconf -u
, - Бег:
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