nameserver 127.0.1.1 у резолюції.conf не піде!


60

Я читав, що я повинен мати 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! Звідки ця адреса?

Відповіді:


100

NetworkManager - це програма, яка (за допомогою утиліти resoluvconf) вставляє адресу 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(все ще через резольконф), щоб включити адреси серверів імен, які NetworkManager має для активних з'єднань.

Якщо ви хочете відключити механізм Resolvconf для оновлення Resol.conf і просто використовувати статичний файл резолюції.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

У мене є 3 DNS і запит ніколи не досягає 3-го, якщо я відключу dnsmasq, будь-яку пораду? Я хочу запитувати Google, потім запитувати інтранет dns. Спасибі
JorgeeFG

3
restart network-managerне працює на Xenial, оскільки він використовує systemd замість запуску. спробуйтеsystemctl restart network-manager
Маттіас Вайлер

Моє запитання - програма dnsmasq запитає, який DNS-сервер? він запитає DNS-сервер DHCP для запиту IP-адреси хоста?
Годинник ZHONG

11

Можливо, що резольконф неправильно налаштований. Це особливо ймовірно, якщо ви бавилися з його файлами конфігурації, не розуміючи, як працюють resoluvconf та NetworkManager.

Для отримання додаткової інформації, будь ласка, ознайомтеся з документацією на резолюціюconf та в блозі Stéphane Graber.

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

Спочатку слід знати, що як Ubuntu Desktop, так і Ubuntu Server за замовчуванням встановлено і активовано resoluvconf. Resolvconf забезпечує основу для динамічного оновлення файлу /etc/resolv.conf впорядкованому та оборотному способі.

По-друге, ви повинні знати, що за замовчуванням Ubuntu Desktop встановлено та активовано NetworkManager. За замовчуванням NetworkManager запускає екземпляр dnsmasq, який служить локальним сервером переадресації імен. Цей керований NetworkManager екземпляр dnsmasq прослуховує запити за номером 127.0.1.1. Коли NetworkManager запускає екземпляр dnsmasq, він повідомляє Resolvconf вставити адресу 127.0.1.1в разрез.conf. Як було сказано в іншій відповіді, якщо ви налаштуєте NetworkManager не запускати локальний екземпляр сервера імен, то він не запустить локальний сервер перенаправлення імен і не скаже Reslavvconf вставляти адресу 127.0.1.1в Resol.conf.

Ця конфігурація за замовчуванням працює належним чином, тому, якщо ваша ситуація не є спеціальною, вам слід відновити конфігурацію за замовчуванням.

Щоб відновити конфігурацію за замовчуванням, слідкуйте за цим

  • /etc/resolvconf/resolv.conf.d/head містить лише текст заголовка resvconcon, що складається з двох рядків, що починаються з #символу
  • /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

1

У моєму випадку файлу не було dns=dnsmasqрядка, /etc/NetworkManager/NetworkManager.confі /etc/resolv.confвін все ще був перезаписаний Менеджером мережі, щоб мати лише йогоnameserver 127.0.1.1

Виправлення полягало в тому, щоб відновити симпосилання для належного оновлення:

sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.