Я читал, что должен иметь 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! Откуда этот адрес?
Возможно, что resolvconf неправильно сконфигурирован. Это особенно вероятно, если вы играли с файлами конфигурации, не понимая, как работают resolvconf и NetworkManager.
Для получения дополнительной информации прочтите документацию resolvconf и сообщение в блоге Stéphane Graber.
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 для работы в качестве локального сервера пересылки. Этот экземпляр dnsmasq, контролируемый NetworkManager, прослушивает запросы в 127.0.1.1. Когда NetworkManager запускает экземпляр dnsmasq, он сообщает resolvconf вставить адрес 127.0.1.1 в resolv.conf. Как уже упоминалось в другом ответе, если вы настроите NetworkManager не запускать локальный экземпляр сервера пересылки, он не запустит локальный сервер пересылки и не сообщит resolvconf, чтобы вставить адрес 127.0.1.1 в resolv.conf.
[d6 ] Эта настройка по умолчанию работает правильно, поэтому, если ваша ситуация не является особенной, вы должны восстановить конфигурацию по умолчанию.Чтобы восстановить конфигурацию по умолчанию, посмотрите на нее, что
/ 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 все еще было перезаписано Network Manager, чтобы иметь только nameserver 127.0.1.1
Исправление было для восстановления символической ссылки для правильного обновление:
sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf