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

48

Я читал, что должен иметь 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 - это наша сеть).
  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 ! Откуда этот адрес?

    
задан Mehran 25.05.2015 в 08:38
источник

2 ответа

83

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
    
ответ дан 2707974 25.05.2015 в 08:51
источник
11

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

Для получения дополнительной информации ознакомьтесь с документацией resolvconf и записью блога Stéphane Graber.

Ссылка

Сначала вы должны знать, что оба 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.

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

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

  • /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
    
ответ дан jdthood 26.05.2015 в 09:52