resoluv.conf продовжує щось скидати


29

Мені потрібна допомога, щоб з'ясувати, чому мій процес resolv.confпостійно змінюється, через що я не маю доступу до зовнішнього Інтернету та лише до локальної мережі:

$ cat /etc/resolv.conf
nameserver 192.168.16.1
domain localdomain
search localdomain

Я подумав, що це вирішив, позбувшись інтерфейсу зворотного зв'язку та додавши в інтерфейс eth0 /etc/network/interfacesвказівки з постірного блогу jontsai .

Я спробував такі речі, як робити:

$ sudo ifconfig eth0 down
$ sudo ifconfig eth0 up
$ sudo /etc/init.d/networking restart
$ sudo dhclient

І тоді все буде тимчасово працювати, і врешті-решт сервер імен у resoluv.conf знову повернеться.

PS Я також розмістив це на ubuntuforums .


Редагувати: Існує принаймні ще одна програма, окрім NetworkManager, до якої пишуть resolv.conf, і я знаю це, тому що, коли я оновлюю NetworkManager, у resolv.confфайлі, що генерується, є коментар, який говорить # Generated by NetworkManager, а версія, на яку він постійно змінюється, не робить.

Тому я намагаюся це:

while true; do echo listening; lsof | grep /etc/resolv.conf; echo sleeping; sleep 1; done


Редагувати 2:

Додавання виводу файлів:

$ cat /etc/network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Немає такого файлу як /etc/NetworkManager/NetworkManager.conf

$ sudo cat /etc/NetworkManager/system-connections/Auto\ Ethernet 

[connection]
id=Auto Ethernet
uuid=#######omitted#######
type=802-3-ethernet
autoconnect=true
timestamp=1314377063

[ipv4]
method=auto
ignore-auto-routes=false
ignore-auto-dns=false
dhcp-send-hostname=false
never-default=false

[802-3-ethernet]
speed=0
duplex=full
auto-negotiate=true
mtu=0

[ipv6]
method=ignore
ignore-auto-routes=false
ignore-auto-dns=false
never-default=false

Я підозрюю або помилку Менеджера мережі, або скоріше неправильну конфігурацію. Яку версію Ubuntu ви запускаєте? У вас встановлений resolvconfпакет? Дати зміст /etc/network/interfaces, /etc/NetworkManager/NetworkManager.confі /etc/NetworkManager/system-connections/*.
Жил "ТАК - перестань бути злим"

Я бігаю 10.04, без resolvconfпакета. У якийсь момент мій DSL-модем пішов погано (за маршрутизатором), коли моя локальна мережа була в порядку, тому я, можливо, спробував встановити nscdабо - dnsmasqвони зараз видалені, але це, можливо, залишило деякі артефакти, які заважають?
jontsai

Гаразд, я просто перезавантажив комп’ютер вперше за 3 тижні, і я думаю, що проблема пішла. o_O
jontsai

Не впевнений, але я думаю, виникла проблема з сервером DHCP на vmnet1або vmnet8(NAT і лише для хоста)
jontsai

1
Вся ця дискусія має зменшену актуальність, оскільки Ubuntu 12.04, який представив резолюціюconf в базову систему, принципово змінивши спосіб обробки Resol.conf.
jdthood

Відповіді:


13

Ви можете робити статичні доповнення до /etc/resolv.conf. Ці доповнення можуть змінити те, що автоматично додається.

Спочатку встановіть resolvconfпакет.

Потім натисніть Alt + F2 і запустіть gksudo nautilus. Відкрити, /etc/resolvconf/resolv.conf.d/headякщо ви хочете додати до початку файлу; відкрити, /etc/resolvconf/resolv.conf.d/tailякщо ви хочете додати до кінця. Внесіть зміни, збережіть / закрийте файли та запустіть, sudo resolvconf -uщоб застосувати зміни.

(Вибачте, що не пам'ятаю, чи налаштування на початку чи в кінці файлу мають найвищий пріоритет.)


Зміни мого менеджера мережі будуть повернені під час підключення до будь-якої VPN. Це дозволило мені утримувати 8.8.8.8 у списку дозволів незалежно від того, до якої мережі я підключився.
Стівен П

8

У мене була точно така ж проблема - resolutionv.conf буде переписуватися кожного разу при перезавантаженні сервера.

Це було спричинено DHCP. Щоб встановити resolutionv.conf таким, яким я його хочу, я відредагував /etc/dhcp/dhclient.confі додав наступне:

supersede domain-name "my.domain.com";
prepend domain-search "my.domain.com";

Ви можете фактично керувати своїм файлом resolutionv.conf, вносячи зміни до цього.

Сподіваюся, це допомагає.


2
Це було б найчистішим рішенням, але я чомусь перестав працювати на моїх системах кілька років тому. Я з тих пір затримався вимкненням скрипта Resolvconf або chattr + i /etc/resolv.conf.
Tronic

7

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

Можливим пусковим механізмом, здавалося б, спонтанних оновлень /etc/resolv.confє коли оновлення вашої DHCP оренди. Перевірте, на який термін ви отримуєте оренду DHCP (це, мабуть, повинно з’являтися в системних журналах /var/log/syslog).

Ви можете використовувати auditd, Встановіть аудит щоб дізнатися, що модифікує файл. Запустіть демон ( sudo service auditd start) і скажіть йому, щоб слідкувати за змінами у цьому файлі:

sudo auditctl -w /etc/resolv.conf -p w

Журнали аудиту є /var/log/audit/audit.log. Ви побачите час модифікації файлу та назву програми, яка його змінила.

Якщо у вас встановлений resolvconfпакет, Менеджер мережі може наступити на ноги. Спробуйте збити всі мережеві інтерфейси, а потім зупиніть Менеджер мереж ( sudo service network-manager stop), а потім перезапустіть його.


1
Я вважаю, що ви маєте рацію щодо версій DHCP. Ви можете змінити налаштування DHCP у мережевому менеджері наступним чином: Запустіть nm-connection-editorу своєму терміналі. Виберіть інтерфейс і натисніть правка. У налаштуваннях IPv4 має бути метод, який називається лише адресами DHCP (або чимось подібним). Якщо я не помиляюся, це дозволить вам отримувати IP адреси через DHCP, але не сервери імен (ви можете вказати їх у полях нижче).
Крістіан Скьодт

Я встановив свій маршрутизатор для відображення MAC-адреси на статичні IP-адреси, тому DNS-оренда є на тривалий час. auditctlЛінія не працює для мене, і я вважаю , що ім'я служби для Network Manager є network-manager(включає в себе дефіс). У мене не було встановлено resolvconfпакету, але у мене були речі всередині /etc/resolvconf/папки, і коли я порівняв його з іншою машиною Ubuntu, у нього його не було, тому я встановив і видалив пакунок і вручну вилучив цю папку. /etc/resolv.confпросто переписали знову, тож я думаю, auditctlщо робота на роботі була б дуже корисною.
jontsai

@jontsai Присутність /etc/resolvconfнормально, навіть якщо у вас немає resolvconfпакету, деякі пакети там викидають гачки, і ці гачки використовуються лише в тому випадку, якщо resolvconfвін встановлений. Я виправив auditctlлінію, якщо проблема з’явиться знову.
Жил "ТАК - перестань бути злим"

Мені сподобалася ідея користувальницького аудита, щоб дізнатися, що редагував файл, але схоже, що це розпочнеться після того, як файл уже змінений.
Пітер Санькаускас

4

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

sudo chattr +i /etc/resolv.conf

+ я дбає про те, щоб файл не був скинутий під час завантаження навіть під корінь.

Щоб скасувати вищезазначене

sudo chattr -i /etc/resolv.conf

Для більш

man chattr

це не спрацювало для мене. Перезапуск менеджера мережі все ще перезаписує /etc/resolv.conf із серверами імен DHCP.
Томмі

працював для мене на Debian 9 VM, що працює всередині GCP. так! Спасибі!
the0ther

3

Ще один варіант, з яким я пощастив, полягає у використанні resolvconf.

Додайте будь-які записи до цього файлу:

/etc/resolvconf/resolv.conf.d/base

І вони будуть додані до /etc/resolv.conf.

Завдяки цьому запитайте повідомлення про Ubuntu: Як я включаю рядки до reslav.conf, які не втратяться при перезавантаженні?


3

Відключити оновлення resolv.confшляхом створення файлу з ім'ям disable_make_resolv_confв/etc/dhcp3/dhclient-enter-hooks.d

#!/bin/sh
make_resolv_conf(){
}

Він замінює стандартну функцію на те саме ім’я, яке відповідає за resolv.confоновлення.


1

Пізно в цьому, але я опублікую свою справу, як це було відмінно від усього вищесказаного.

У моєму випадку /etc/resolv.confце симпосилання на /var/run/NetworkManager/resolv.conf, і чомусь не cat /etc/resolv.confдає мені помилок, немає такого файлу чи каталогів (можливо, тому що він порожній?)

Якщо я відкрию його з vi і додаю, що nameserver x.x.x.xвін працює, але очищається при перезавантаженні.

Я намагався редагувати /etc/network/interfacesта додавати dns-nameservers x.x.x.x, змінювати /etc/dhcp/dhclient.confта видаляти під request domain-name-servers, також редагувати prepend domain-name-servers x.x.x.x.

Бінарний файл Resolvconf не встановлений, NetworkManager.confнічого релевантного не було. Але щоразу, коли я перезавантажував машину, доменного сервера не було.

Я не впевнений, в чому причина, але, здається, це пов'язано з тим, що це машина VBox, запущена GNS3, і через те, що всередині VBox налаштування, я повинен залишити його без створеного інтерфейсу. Мабуть, GNS3 створює "UDP-інтерфейс" на льоту, коли я запускаю машину, за умови, що я запускаю її з GNS3.

Таким чином, щоб врятувати мене від пошуку нескінченно, я просто додав echo nameserver x.x.x.x> /etc/resolv.confдо /etc/profile, проблема вирішена (не вирішена, але працював навколо хе - хе). Але може бути цікаво дізнатися, що відбувається з тим сценарієм, якщо хтось наткнеться на нього.


1

Якщо у вас є файл /etc/NetworkManager/NetworkManager.conf

cat /etc/NetworkManager/NetworkManager.conf

ви можете налаштувати NetworkManager для припинення скидання резолюції.conf

sudo sh -c 'echo "
[main]
dns=none
" >> /etc/NetworkManager/NetworkManager.conf'
cat /etc/NetworkManager/NetworkManager.conf

Тепер вручну змініть свою /etc/resolv.confі протестуйте її стійкість

sudo systemctl restart NetworkManager
# sudo service network-manager restart
cat /etc/resolv.conf

Джерело: https://askubuntu.com/a/623956/452398


Дякую, додавання dns = none не усуває проблему належним чином.
Шини

0

Просто робіть записи у своїх файлах ifcfg-ethX так

DNS1 = 192.168.XX

DNS2 = 192.168.XX

DOMAIN = yourdomain.com

тоді менеджер мережі опублікує відкладені записи до файлу resv.conf після перезапуску послуг або перезавантаження вікна.


0

Про всяк випадок, коли хтось потрапить у той самий випадок:

Я забув, я встановив dhcp на інтерфейс всередині файлу /etc/network/interfaces

Networkmanager змінить /etc/resolv.confвідповідь dhcp, яку він отримає.

hth


0

Коли є # Generated by NetworkManagerв/etc/resolv.conf

Редагування конфігурації мережевого менеджера:

sudo vim /etc/NetworkManager/NetworkManager.conf

у [main]розділі додати rc-manager=unmanaged:

[main]                                                                                                                                   
rc-manager=unmanaged

Чому?

rc-manager- Встановіть режим управління resv.conf. Значення за замовчуванням залежить від параметрів збирання NetworkManager, і ця версія NetworkManager була побудована за замовчуванням "symlink".

(...)

unmanaged: не чіпай /etc/resolv.conf.

Налаштуйте посилання для отримання додаткової інформації: https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html

Потім відредагуйте /etc/resolv.confі перезапустіть Менеджер мережі, щоб побачити, чи /etc/resolv.confзалишається недоторканим:

sudo systemctl restart NetworkManager

або

sudo service network-manager restart

ніж:

cat /etc/resolv.conf

Якщо процедура не вдалася і /etc/resolv.confбула перезаписана під час перезапуску Менеджера мережі, спробуйте додати її dns=noneдо [main]розділу в конфігурації, як сказав https://askubuntu.com/a/1150326/364772

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