Чи слід редагувати файл resv.conf, щоб виправити неправильну проблему DNS?


35

У мене проблема, що моя машина Ubuntu використовує неправильний DNS-сервер. Чомусь машина запитує localhostінформацію про DNS.

Я додав DNS-сервер у GUI налаштувань мережі, але він /etc/resolv.confвсе ще містить 127.0.0.1адресу DNS-сервера. Тепер я думав, що міг би просто відредагувати файл, але прямо сказано, що я не повинен редагувати файл вручну.

Тепер, оскільки налаштування мережі GUI не генерує файл із потрібними налаштуваннями, як я можу створити новий resolv.confфайл самостійно?


1
Якщо ви використовуєте Ubuntu Server 12.04 LTS, просто зробіть собі велику послугу та редагуйте /etc/resolvconf/resolv.conf.d/head безпосередньо так, як ви хочете, щоб ваш спадщина разрешила.conf виглядати. У мене не було нічого, крім вирішувальних питань, поки я грубо не змусив це.

askubuntu.com/questions/157154/…, можливо, пов'язане питання.
Ehtesh Choudhury

Відповіді:


40

Що жоден з відповідей не відповідав до сих пір адреси є поява , що запитувач не розуміє , що наявність nameserver 127.0.0.1в /etc/resolv.confправильна, якщо припустити , що локальний сервер імен працює. А в Ubuntu 12.04 Desktop за замовчуванням працює локальний сервер імен, а саме dnsmasqпроцес, керований NetworkManager, який слухає 127.0.0.1. У Ubuntu 12.10 адресу прослуховування було змінено на 127.0.1.1.

Тож рішення не полягає в тому, щоб робити якісь зміни resolv.conf. Це правильно, припускаючи, що запитуючий хоче використовувати локальний сервер імен.

Якщо служба імен не працює, то локальному серверу імен не надаються правильні адреси переадресації, або є якась інша проблема з мережею.

Запитуючий спробував використовувати "GUI налаштувань мережі" для "створення файлу з правильними налаштуваннями", і це не вдалося. Я не знаю точно, що це означає, але ось правильний спосіб ввести адреси серверів імен, щоб вони виявилися в resolv.confпотрібний час. Я припускаю, що запитувач використовує, NetworkManagerа не ifupналаштовує інтерфейси.

Найчастіше інтерфейси налаштовуються за допомогою протоколу DHCP. У цьому випадку нічого не потрібно конфігурувати в локальній системі. Сервер DHCP знає, яку адресу сервера імен повинні використовувати його клієнти, і надсилає цю інформацію клієнту DHCP, який надсилає його NetworkManager, який надсилає його до Resolvconf, який передає інформацію resolv.conf. Тож у цьому випадку може знадобитися налаштування DHCP-сервера.

Якщо мережевий інтерфейс на локальній машині є статично налаштованим, то правильні адреси серверів імен повинні бути введені в NetworkManager, наприклад, за індикатором мережі | Редагувати з'єднання ... | Бездротовий | myconnection | Редагувати ... | Налаштування IPv4 | Додаткові сервери DNS.

Можливо, локальний сервер імен працює неправильно. У такому випадку запитувач повинен редагувати/etc/NetworkManager/NetworkManager.conf

sudo gedit /etc/NetworkManager/NetworkManager.conf

і прокоментуйте рядок

dns=dnsmasq

у розділі "[головний]". Щоб прокоментувати рядок, поставте #на початку рядка, а потім збережіть файл. Потім перезапустіть мережевий менеджер.

sudo restart network-manager

Після цього будуть внесені не локальні адреси серверів імен resolv.confзамість адреси 127. *.

Якщо запитувач використовує, ifupа не NetworkManager для налаштування мережевих інтерфейсів , відповідь jmartin2279 правильна: вам потрібно додати адреси серверів імен до / etc / network / інтерфейсів у описаному способом jmartin2279.

Попри те , що радять деякі інші відповіді, в загальному , ви повинні НЕ додавати nameserver, domainабо searchваріанти файлів /etc/resolvconf/resolv.conf.d/. Дивіться мої коментарі до цих відповідей.


1
"DHCP-сервер знає, яку адресу сервера імен повинні використовувати його клієнти" - За винятком випадків, коли ви не маєте контролю над сервером DHCP (думайте, відкриті точки доступу Wi-Fi) і хочете переохочувати сервер імен, який використовується ... Встановлення тієї самої конфігурації для кожного з'єднання Основа - знову і знову для кожної точки доступу до WiFi - це не рішення.
Teoh Han Hui

Здається, мені потрібно виконати dhclientзміни, nameserverякі нарешті приходять etc/resolv.conf. Я запускаю налаштований наживо Xubuntu 14.04 (можливо, це і є причиною).
Sopalajo de Arrierez

Якими можуть бути недоліки відключення DNSMasq, jdthood? Звичайно, дозвіл назви та Інтернет, здається, спрацюють нормально після цього.
Sopalajo de Arrierez

Див. Bugs.launchpad.net/ubuntu/+source/dnsmasq/+bug/1003842 , наприклад, мій коментар №60.
jdthood

Моя резолюція.conf продовжує змінюватись, 127.0.0.1незважаючи на те, що мій менеджер мережі мав інші намерсервери + dnsmasq, коментували + перезавантажували + вбивали dnsmasq (як це все ще починається) + мережа перезапускається: /
деякий користувач

17

Якщо ви використовуєте ifup для статичного налаштування інтерфейсу, ви можете додати його у файл / etc / network / interfaces.

Відкрийте термінал і введіть:

sudo gedit /etc/network/interface*

Ви повинні побачити щось на кшталт:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Змінити в:

auto eth0
iface eth1 inet static
address 192.168.1.10 
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8

використовуючи власну мережеву інформацію. це дозволить встановити dns. Ви можете використовувати декілька серверів dns тут:

dns-nameservers 8.8.8.8 8.8.4.4

Після цього біжіть

ifdown eth0
ifup eth0

Якщо це ваш випадок, це рішення: "Якщо ви використовуєте ifup для налаштування інтерфейсу статично ...."
angelcervera

Ви це навіть тестували? ifdown: interface eth0 not configured
Серін

3
якщо ви з'єднані через ssh, ви не можете використовувати ifdown / ifup. натомість використовуйтеsudo /etc/init.d/networking restart
TD_Nijboer

11

В Ubuntu 12.04 змінилася обробка резолюції.conf.

Якщо ви хочете додати власні адреси серверів імен, відредагуйте файл /etc/resolvconf/resolv.conf.d/ head

sudo nano /etc/resolvconf/resolv.conf.d/head

і додайте туди свій сервер імен (наприклад: Google open dns)

nameserver 8.8.8.8

збережіть файл та запустіть

sudo resolvconf -u

Ні перезавантаження чи нічого іншого. Можливо, вам знадобиться перезапустити мережевий менеджер

sudo service network-manager restart

Зроблено.

Ви можете перевірити його за допомогою команди

nslookup www.google.com

Результат повинен бути подібним до

Server: 8.8.8.8
Address: 8.8.8.8#53

4
Додавання рядка "сервер імен" до /etc/resolvconf/resolv.conf.d/head може працювати як швидкий злом, але це не правильне рішення будь-якої проблеми. Це робить, що вирішувач використовує адресу цього сервера імен за будь-яких обставин, тоді як сервери імен використовувати залежать від обставин. Наприклад, якщо ви підключені до локальної мережі (можливо, через VPN), то, як правило, ви хочете використовувати сервери імен локальної мережі, щоб мати змогу вирішувати приватні імена в локальній мережі. І в цьому випадку система, здається, працює локальним сервером кешування імен, але додавання "nameserver 8.8.8.8" просто обходить його.
jdthood

@jdthood - Ви вказали на проблему. Хочете забезпечити рішення?
TJ Biddle

@TJ Я вже опублікував відповідь на головне запитання ("Як мені редагувати файл resv.conf?"), Якщо це саме ви маєте на увазі.
jdthood

1
Будь ласка, не рекомендуйте цього. У самому верхньому куті файлу "НЕ редагуйте цей файл рукою - ваші зміни будуть ЗАПЕЧЕНІ".
Серін

Я хотів би зазначити, що редагування /etc/resolv.conf вручну перезаписує зміни при перезавантаженні, однак редагування /etc/resolvconf/resolv.conf.d/head вручну НЕ перезаписує зміни при перезавантаженні, однак це, ймовірно, відбувається при повторному завантаженні встановлення resolvconf, що, ймовірно, є попередженням.
Кен

1

Щоб додати більше записів /etc/resolv.conf, створіть /etc/resolvconf/resolv.conf.d/tailфайл і додайте їх туди.

Але якщо вона /etc/resolv.confмістить 127.0.0.1, то додавання записів до /etc/resolvconf/resolv.conf.d/tailнічого не змінить. Вам потрібно встановити адреси DNS-сервера статично в NetworkManager, що надішле їх на dnsmasq, який слухає 127.0.0.1.

Конфігурація DNS для статичного інтерфейсу повинна містити записи " dns-nameservers", " dns-search" і " dns-domain", додані до відповідної строфи iface у/etc/network/interfaces

Прочитайте це для отримання додаткової інформації.

`Більше того:

Ви можете встановити інструмент gui з назвою, gnome-network-adminякий встановить ваш DNS. Спробуй це :

sudo apt-get install gnome-network-admin

3
(1) Ні, не додавати параметри "nameserver" в /etc/resolvconf/resolv.conf.d/tail. Це неефективно (тому що інші параметри "сервера імен" мають перевагу) і неоптимальне (оскільки це статична конфігурація, тоді як конфігурація повинна відображати мережеві обставини). (2) Ні, не використовуйте gnome-network-admin. Це не працює належним чином з Resolvconf. Див. Помилку № 60518 ( bugs.launchpad.net/ubuntu/+source/gnome-system-tools/+bug/60518 ).
jdthood
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.