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! Откуда этот адрес?

1
задан 26 May 2015 в 11:03

2 ответа

Возможно, что 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
11
ответ дан 23 May 2018 в 20:16

В моем случае не было строки 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
1
ответ дан 23 May 2018 в 20:16

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

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