Як встановити мій DNS під час перезапис резолюції.conf?


279

Більшість інформації, яку я бачу в Інтернеті, говорить про редагування /etc/resolv.conf, але будь-які зміни, які я вношу, просто змінюються.

$ cat /etc/resolv.conf 
# 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
nameserver 127.0.1.1

Схоже, що 127.0.1.1 є локальним екземпляром dnsmasq. У dnsmasqдокументах кажуть , редагувати /etc/resolv.conf. Я спробував розмістити власні сервери імен /etc/resolv.conf.d/base, але зміни не з’явилися /etc/resolv.confпісля запуску sudo resolvconf -u.

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

ОНОВЛЕННЯ:

Я відповів на це питання сам: https://unix.stackexchange.com/a/163506/67024

Я думаю, що це найкраще рішення, оскільки:

  1. Це працює.
  2. Це вимагає найменшої кількості змін і
  3. Він як і раніше працює в поєднанні з DNS-кешем dnsmasq, а не обходить його.

Краще дайте відповідь на своє запитання, а не оновлюйте своє запитання. Я думаю ... буде простіше знайти правильну відповідь, яку ви дали на свою проблему
Філіпп Гачуд

Здається, що більшість відповідей орієнтовані на Ubuntu та надмірно складні. Універсальне рішення для користувачів NetworkManager це просто додати dns=noneв /etc/NetworkManager/NetworkManager.conf(подробиці див в мій відповідь нижче).
Skippy le Grand Gourou

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

Відповіді:


250

Я вважаю, що якщо ви хочете замінити сервер імен DNS, ви просто додасте рядок, подібний до цього, у свій baseфайл під resolv.conf.d.

Приклад

$ sudo vim /etc/resolvconf/resolv.conf.d/base

Потім введіть свій список серверів імен таким чином:

nameserver 8.8.8.8
nameserver 8.8.4.4

Нарешті оновлення resolvconf:

$ sudo resolvconf -u

Якщо ви подивитеся на сторінку чоловіка, на resolvconfній описуються різні файли під /etc/resolvconf/resolv.conf.d/.

   /etc/resolvconf/resolv.conf.d/base
          File  containing  basic  resolver  information.  The lines in this 
          file are included in the resolver configuration file even when no
          interfaces are configured.

   /etc/resolvconf/resolv.conf.d/head
          File to be prepended to the dynamically generated resolver 
          configuration file.  Normally this is just a comment line.

   /etc/resolvconf/resolv.conf.d/tail
          File to be appended to the dynamically generated resolver 
          configuration file.  To append nothing, make this  an  empty  
          file.   This file is a good place to put a resolver options line 
          if one is needed, e.g.,

              options inet6

Навіть якщо у верхній частині headфайлу є попередження :

$ cat /etc/resolvconf/resolv.conf.d/head
# 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

це попередження існує так, що коли ці файли побудовані, попередження в кінцевому підсумку запрацює в отриманий resolv.confфайл, який ці файли будуть використовуватися для створення. Таким чином, ви могли так само легко додати nameserverрядки, описані вище для baseфайлу, до headфайлу.

Список літератури


21
Ubuntu 14.04 - коли я вводив baseі запускав resolvconf -uсервери імен, сервери імен не були введені в резолюв.conf - коли я вводив сервери імен head, вони були
HorusKol

7
Ubuntu 14.04 - Також довелося прокоментувати налаштування, встановлені в/run/resolvconf/interface/NetworkManager
bitsoflogic

3
введіть nslookup google.comі першим IP у списку має бути ваш новий сервер імен, якщо ні, ви зробили це неправильно
frazras

6
Ubuntu 16.04: працював, якщо додається /etc/resolvconf/resolv.conf.d/headлише, а не з base. Підтверджено с nslookup google.com.
Акумен

3
Спочатку ви повинні resolvconfвстановити. Ви можете встановити його, зробивши sudo apt-get install resolvconf.
MAChitgarha

79

Мене також цікавить це питання, і я спробував рішення, запропоноване @sim.

Щоб перевірити це, я поставив

nameserver 8.8.8.8

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

nameserver 8.8.4.4

в /etc/resolvconf/resolv.conf.d/head

Потім я перезапустив мережу

sudo service network-manager restart

Результат /etc/resolv.confвиглядає так

# 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
nameserver 8.8.4.4
nameserver 127.0.1.1

і nm-toolстверджує, що dnsserver є

DNS:             208.67.222.222
DNS:             208.67.220.220

які надані моїм маршрутизатором. З іншого боку, копаючи адресу, це говорить про це

;; Query time: 28 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)

Якщо я маю рацію, я роблю з усього цього те, що

  1. тільки "головна" частина читається резолювонф: "базова" частина якось контролюється dnsmasq
  2. dnsserver фактично вимушений до 8.8.4.4 незалежно від сервера, наданого dhcp, Але ви втрачаєте кешування, надане dnsmasq, оскільки запит завжди надсилається до 8.8.4.4
  3. dnsmasq як і раніше використовує ТІЛЬКИ той dnsserver, який надає dhcp.

Загалом, це працює, але я не думаю, що це потрібний результат. Більш близьким рішенням, на мою думку, є наступне. Редагувати

sudo vim /etc/dhcp/dhclient.conf

потім додайте

supersede domain-name-servers 8.8.8.8;

Результат такий: resolutionv.conf містить лише 127.0.0.1, а це означає, що кеш dnsmasq викликається і nm-tool каже

DNS:             8.8.8.8

це означає, що якщо шукане ім’я не знаходиться в кеші, його запитують у 8.8.8.8, а не на сервері, наданому dhcp.

Інший (можливо, кращий) варіант - використовувати "prepend" замість "supersede": таким чином, якщо ім'я не буде вирішено 8.8.8.8, тоді запит повертається на інший сервер. Насправді, говорить nm-tool

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220

4
Набагато краща відповідь, ніж злому в конфігурації NS. Особливо варіант додати сервер перед наданими dhcp. Здається, ідеальний баланс вирішення проблеми, не створюючи нових!
Стів Мідглі

2
Стільки ясності та думок у відповіді, а не просто в команду.
ігаурав

3
Yo Man! "замінити сервери доменних імен 8.8.8.8;" відповідь
Джек

Варто зазначити, що nm-інструмент був замінений на nmcli
Fiddy Bux

59

Я дізнався, що ви можете змінити сервери імен, які dnsmasqвикористовують, додавши наступні рядки до /etc/dnsmasq.conf:

server=8.8.8.8
server=8.8.4.4

У мене не було /etc/dnsmasq.confфайлу, оскільки він встановлений пакетом dnsmasq, але Ubuntu поставляється лише з dnsmasq-base. Я біг sudo apt-get install dnsmasq, потім редагував /etc/dnsmasq.conf, потім sudo service dnsmasq restartі sudo service network-manager restart.

Я побіг sudo tail -n 200 /var/log/syslogперевірити свій syslog і перевірити, чи dnsmasqвикористовуються я вказані сервери імен:

Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.8.8#53
Oct 21 23:00:54 mylaptop dnsmasq[8611]: using nameserver 8.8.4.4#53

4
Є причина, чому це позначено як найкращу відповідь ... адже це справді! дуже дякую! Я додам, що після всіх згаданих вами кроків може знадобитися перезавантаження мережі, щоб все працювало безперебійно (це було для мене .... sudo service network-manager restart)
Клінт Іствуд

3
На сервері Ubuntu 14.04 близько половини часу холодне завантаження не призвело б до підключення до Інтернету за допомогою URL-адреси, але IP-адреса працюватиме. Я багато часу безрезультатно провів, намагаючись це виправити, місяцями здавався, потім знайшов це рішення. Я теж вважаю, що це найкраща відповідь.
Нейт Локвуд

Інтригує, що dnsmasq має бути встановлений. Це дійсно виправило мій DNS у звичайній ситуації, але воно повністю порушило мою конфігурацію VPN (VPN-з'єднання зараз виходить з ладу ...)
PlasmaBinturong

22

Для статичних IP-ситуацій Посібник сервера Ubuntu говорить про зміну файлу / тощо / мережі / інтерфейсів, який може виглядати так:

iface eth0 inet static
address 192.168.3.3
netmask 255.255.255.0
gateway 192.168.3.1
dns-search example.com
dns-nameservers 192.168.3.45 192.168.8.10

Ви змінюєте IP-адреси 192.168.3.45 192.168.8.10 на ті, які хочете, як-от 8.8.8.8

https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Сторінка 38


Це, безумовно, виглядає правильно, але як я зараз відновлюю резолюцію.conf ?!
Джоель Бергер

3
@JoelBerger ifdown eth0; ifup eth0.
Дзамо Нортон

17
  1. Пошук "Мережеве з'єднання"
  2. Відкрий це

                        введіть тут опис зображення

  3. Потім виберіть або WiFi, або Ethernet, або все, що ви використовуєте, і натисніть на редагувати. Ви отримаєте це:

                  введіть тут опис зображення

  4. Виберіть ipv4 на вкладках

  5. Виберіть адреси лише методом
  6. Введіть своє ім’я DNS нижче та збережіть його

  7. Ви закінчили


Я повинен був би зробити це для кожного мережевого з'єднання. Раніше ви могли змінити типовий параметр для всіх з'єднань. Це я шукав тут.
Seán Hayes

2
Я тебе люблю! це налаштування інтерфейсу врятувало мою дупу від судо і вім безладу: '(
Лука

Використання Mint (на Ubuntu 14.04) - але це спостерігається і в KDE - чомусь встановлення DNS-серверів у Менеджері GUI Network не впливає на налаштування DNS, що використовуються в терміналі
HorusKol

2
Найкраща відповідь імхо. У Ubuntu 14.04 я отримав 2 зовнішніх IP-адреси для DNS, які не розпізнавали клієнтів у моїй домашній мережі. Залишивши метод "Автоматичний (DHCP)" для дротового з'єднання, додав IP-адресу мого маршрутизатора до наявного списку. Для бездротового з’єднання через wlan0 це не спрацювало, але метод «Автоматичні (DHCP) адреси» лише замінив зовнішні адреси на IP-адресу маршрутизатора, і тоді це теж працювало. Застосовуйте зміни sudo service network-manager restart, зачекайте трохи, підтвердьте nmcli d list | grep 'DNS\|IP-IFACE'. І пінг вашого внутрішнього клієнта по імені.
RolfBly

13

Швидкий і брудний спосіб вирішення, про який ще не було сказано, - це встановлення непорушного прапора у resolv.confфайлі відразу після його редагування.

$ sudo nano /etc/resolv.conf

Додайте це та збережіть:

nameserver 8.8.8.8

Тоді:

$ sudo chattr +i /etc/resolv.conf

Це повинно зробити трюк. Я роблю це і в своїй системі.


18
Кожен раз, коли ваше рішення передбачає chattr, це насправді не рішення.
Джефф Джирса

1
це я роблю в системах, де мені потрібно тимчасово змінити DNS з якоїсь причини і не хочу змінювати конфігурацію. Як постійне рішення я не рекомендував би його.
hochl

3
"швидкий і брудний спосіб вирішення"
YouniS Bensalah

10
Це не брудно. Програми, що руйнують локальну конфігурацію, оскільки вони думають, що вони краще знають, брудні.

11

Налаштування DNS під Linux

Використання DNS в Linux відбувається через набір процедур у бібліотеці C, які забезпечують доступ до системи доменних імен Internet (DNS). Файл конфігурації резольвера ( resolv.conf) містить інформацію, яку читає підпрограм розв'язувача під час першого виклику процесом. Коротше кажучи, кожен процес, який запитує DNS, читатиме /etc/resolv.confбібліотеку. NSS шарується поверх цього і налаштовується /etc/nsswitch.conf.

Конфігурація DNS Linux розміщена у файлі, /etc/resolv.conf Але є ряд програм / служб, які хочуть автоматично керувати файлом конфігурації DNS та керувати ним /etc/resolv.conf. У деяких ситуаціях ви можете самостійно керувати цим файлом. Кожна програма / служба, що керує DNS, має свої власні файли конфігурації, такі як /etc/dnsmasq.conf(для служби dnsmasq) і додають конфігурацію DNS при зміні з'єднання та / або в інших подіях ... швидке рішення - заблокувати файл конфігурації DNS, chattr +i /etc/resolv.confале це не рекомендується у певному випадку кращим рішенням є правильне налаштування всіх програм / служб за допомогою DNS на зразок (dnsmasq / network-manager / resolutionvconf / тощо).

Повернення контролю над DNS

Ось вичерпний список налаштувань, щоб повернути контроль над resv.conf і уникнути його перезапису ( як відключити / налаштувати DNS з іншого місця, крім резолюції.conf ), зауважте, що резольконф також є незалежною програмою від resoluv.conf, також залежно від вашої системи / конфігурації, можливо, у вас немає однієї або багатьох перерахованих тут програм.

1. Resolvconf:

Налаштування файлів

cat /etc/resolvconf/resolv.conf.d/head
nameserver 8.8.4.4
cat /etc/resolvconf/resolv.conf.d/base
nameserver 8.8.4.4

Оновіть конфігурацію

sudo resolvconf -u

Вимкнути резолюціюconf

systemctl disable --now resolvconf.service 

2. Служба Dnsmasq:

Налаштування файлів

cat /etc/dnsmasq.conf
server=1.1.1.1
server=8.8.4.4

Оновіть конфігурацію

sudo systemctl restart dnsmasq.service

3. Менеджер мережі:

Налаштування файлів

/etc/NetworkManager/*

Вимкнути DNS

$ cat /etc/NetworkManager/conf.d/no-dns.conf
[main]
dns=none

Увімкнути DNS

$ cat /etc/NetworkManager/conf.d/dns.conf
[main]
dns=default

[global-dns]
searches=example.com

[global-dns-domain-*]

Скористайтеся вирішеною послугою

$ cat /usr/lib/NetworkManager/conf.d/resolved.conf 
[main]
dns=systemd-resolved

Використовуйте резолюціюconf

$ cat /usr/lib/NetworkManager/conf.d/resolvconf.conf 
[main]
rc-manager=resolvconf

Оновіть конфігурацію

systemctl restart NetworkManager.service

4. Мережеві інтерфейси:

Налаштування файлів

$ cat /etc/network/interfaces
#nameservers
# or dns-search like so
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Оновіть Config

reboot

5. Клієнт DHCP:

Налаштування файлів

$ cat /etc/dhcp3/dhclient.conf
supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

Оновіть Config

reboot

6. Служба Rdnssd:

Вимкнути rdnssd

systemctl disable --now rdnssd.service

7. Розв’язана послуга:

Відключити вирішено

systemctl disable --now systemd-resolved.service

8. Netconfig:

Налаштування файлів

/etc/sysconfig/network/config

Вимкнути netconfig

cat /etc/sysconfig/network/config
NETCONFIG_DNS_POLICY=""

Оновіть Config

reboot

Налаштування DNS-сервера

Приклад /etc/resolv.confконфігурації

#Cloudflare
nameserver 1.0.0.1

#Google
#nameserver 8.8.8.8
#nameserver 8.8.4.4

#Cloudflare 
#nameserver 1.1.1.1

#Classic Config
#nameserver 192.168.1.1
#search lan

10

Моя проблема була дещо іншою, я хотів переосмислити маршрутизатори DNS-серверів. Я знайшов це посилання з Ubuntu: https://wiki.ubuntu.com/OverrideDNSServers

Там написано: Якщо ви хочете змінити налаштування DNS, надані вашим сервером DHCP, відкрийте

/etc/dhcp3/dhclient.conf

і додайте наступний рядок:

supersede domain-name-servers <dns_ip_address1>,<dns_ip_address2>;

заміна <dns_ip_address*>елементів належним вмістом.


Це відповідь, яка вирішила моє питання.
Майкл

Ідеально. Просто додавши, що вам слід перезапустити мережу служб sudo, щоб включити зміни.
Нік Тріантафіллу

Що робити, якщо у нас немає цієї dhcp3папки? У мене Xubuntu 17.10, перейшов він /etc/dhcpпросто?
ПлазмаБінтуронг

4

Можливо, мені чогось не вистачає, але згідно інструкцій із налаштуванням на веб-сторінці https://help.ubuntu.com/14.04/serverguide/network-configuration.html все, що ви робите, - це оновити наступне. Я не запускаю проксі - просто машина за брандмауером та локальним DNS (приклад показує Googles, але встановіть його на все, що вам потрібно).

nano /etc/network/interfaces

За замовчуванням:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
auto eth0
iface eth0 inet dhcp

ОНОВЛЕНО:

# This file...
# and how to activate...

# The loopback...
auto local
iface lo inet loopback

# The primary network interface 
#iface eth0 inet dhcp
iface eth0 inet static
address x.x.x.x
netmask 255.255.255.0
gateway x.x.x.x

#nameservers
# you may not need dns-search
# I use it because I'm running this on a Windows network 
# so its useful to have
# dns-search x.y 
dns-nameservers 4.4.4.4 8.8.8.8

Перезавантажте, якщо можете.


3

Спробуйте додати dns-nameservers XXX.XXX.XXX.Xу свій /etc/networking/interfacesфайл.


Залиште коментар, коли ви скажете, будь ласка. Це метод, наведений у посібнику , стор. 38.
Zook

1
У згаданому посібнику показано всі IP-адреси в одному рядку. Ця відповідь, здається, пропонує підписати рядок. І чому останній номер шириною є лише один X? Я думаю, що це, в основному, надзвичайно неофіційне та непевне коротке написання стилю чату, яке зібрало голоси, @Zook
Cees Timmerman

2

Деякі відповіді тут добре працюють. Однак я не був задоволений тим , я повинен вручну пройти через конфігураційні файли просто встановити «правильний» , DNSякий я вже маю в отриманні більш DHCPз NetworkManager.

Я трохи копав і помітив, що /etc/resolv.confфайл насправді є посиланням і на нього вказує /run/systemd/resolve/stub-resolv.conf. Після деякого експерименту виявляється, що в /run/systemd/resolve/каталозі міститься ще один іменований файл, resolv.confякий вже містить налаштування, отримані через DHCP. Таким чином, замість того, щоб вручну перезаписувати / створювати конфігураційні файли /etc/, ви можете просто перезв’язатись, /etc/resolv.confщоб вказати на /run/systemd/resolve/resolv.confфайл, і все повинно бути добре:

# sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

Тепер ви зможете редагувати налаштування навіть у Менеджера мережі в Gnome. :)

Не впевнений, чи буде це працювати на старих ubuntu, але це на Ubuntu 17.10.


коли ми запускаємо systemd-resolve --flush-cacheоригінальний зв'язаний файл, як видно, відповідь вище відновити початкову функціональність
hafizhanindito

1

РЕДАКЦІЯ 6 травня 2016 року

Я написав сценарій для оновлення всіх параметрів для системних з'єднань у /etc/Network-Manager/system-connections/каталозі. GUI, який ви використовуєте для редагування окремих підключень, редагує певний файл у цьому каталозі. Сценарій оновлює всі файли - він просто шукає тих, хто не має dns, встановлених grep, і встановлює його з awk.

Оскільки для доступу до цих файлів потрібен sudoдоступ, запустіть цей скрипт із, sudoа потім - перезавантажте мережевий менеджер

#!/bin/bash
# Author: Serg Kolo
# Date: May 6, 2015
# Description: this script checks all settings for connections in 
# /etc/NetworkManager/system-connections/ , and if there's no custom
# dns set , this script sets it;
# NOTE: run sudo service network-manager restart after running this script

set -x

for file in /etc/NetworkManager/system-connections/* ; do
        grep 'dns=208.67.220.220;' "$file"  || ( awk '{print;if ($1=="[ipv4]"){getline; print "method=auto\ndns=208.67.220.
220;\nignore-auto-dns=true"}}' "$file" > .tmpfile && ( cat .tmpfile > "$file") )
done

Сценарій у дії:

введіть тут опис зображення

ОРИГІНАЛЬНА ПОСТА Деякі користувачі тут вказували, що DNS якимось чином контролюється dnsmasq. Це дійсно так. Я стикався з дещо меншою проблемою, де незалежно від того, як я змінився headчи bodyввійшов /etc/resolvconf/resolv.conf.d, мій комп'ютер не міг насправді отримати доступ до інтернованого доменного імені - лише працюючи з IP-адресами.

Що я зробив - це відредагувати /etc/NetworkManager/NetworkManager.confфайл. Спочатку він сказав , dns=dnsmasqале я змінив його: dns=208.67.222.222. Хоча цей спосіб nm-toolне згадує 208.67.222.222, я все-таки зміг використовувати доменні імена, а не лише IP-адреси.

Ось як NetworkManager.confвиглядає мій файл зараз:

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
dns=208.67.222.222

[ifupdown]
managed=false

ПРИМІТКА. Більш детальну інформацію про мою проблему та це рішення див. У моїй публікації на askubuntu.com .

ОНОВЛЕННЯ №1

Повернувшись додому з університету сьогодні, я виявив, що не можу підключитися до домашнього WiFi. Я трохи перечитав, man NetworkManager.confі виявляється, що dns=в [main]насправді є лінія для плагінів, тому рядок dns=dnsmasqнасправді додає плагін dnsmasq до NetworkManager, мабуть.

Тож моє рішення все-таки спрацювало, просто не так, як я очікував. Ось уривок зі сторінки чоловіка:

dns=plugin1,plugin2, ... List DNS plugin names separated by ','. 

Плагіни DNS використовуються для надання функцій локального кешування серверів імен (що прискорює запити DNS) та для передачі даних DNS додаткам, які його використовують.

Отже, встановивши, dns=208.67.222.222я, можливо, не дозволяв NetworkManager використовувати цей плагін, який інакше використовував би локальний DNS-сервер (який, мабуть, не працює).


1

Існує два методи

Спосіб 1

Використовуваний DNS-сервер можна змінити, оновивши headфайл вresolv.conf.d

$ echo 'nameserver 1.1.1.1' | sudo tee /etc/resolvconf/resolv.conf.d/base

а потім біжи

$ sudo resolvconf -u

Вищезазначене створить загальний resolv.confфайл у /etcкаталозі. Усі ваші запити на вирішення будуть надіслані вищевказаному серверу імен. Вирішено.

Однак для цього є наслідки. При використанні resolvconfпрямого запиту 1.1.1.1на вирішення адрес, потужність кешування, надану dnsmasq, втрачається. Кожен запит надійде до1.1.1.1

Спосіб 2

Якщо ви не хочете, щоб це сталося вище, і використовуйте dnsmasq для роздільної здатності DNS, зверніться до цієї відповіді. Відповідь тут просто описана.

Додайте у /etc/dnsmasq.confфайл наступний вміст .

сервер = 1.1.1.1

Потім перезапустіть службу dnsmasq

$ sudo systemctl restart dnsmasq.service

Речі будуть добре працювати. Вирішено.


0

Простий спосіб змінити DNS:

$ sudo nano /etc/network/interfaces

Якщо виникають проблеми, встановіть nano:

$ sudo apt-get install nano -y

тоді ..

  1. знайдіть це: dns-nameservers
  2. якщо ви не знайдете його, просто введіть його там
  3. Я зробив своє так: dns-nameservers 199.85.126.10 199.85.127.10

Я сподіваюся, що це найкращий спосіб, я зробив це так на VPS, до речі.


0

на корені:

  1. коментарі dns=dnsmasqпо/etc/NetworkManager/NetworkManager.conf
  2. додати supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;в кінці/etc/dhcp/dhclient.conf
  3. sudo service network-manager restart

Далі вносяться зміни, показані вище:

$ sudo sed -i 's/dns\x3Ddnsmasq/\x23dns\x3Ddnsmasq/' \
   /etc/NetworkManager/NetworkManager.conf

$ echo 'supersede domain-name-servers 4.2.2.1,4.2.2.3,4.2.2.5,4.2.2.4,4.2.2.1,4.2.2.2;' | \
   sudo tee --append /etc/dhcp/dhclient.conf

$ sudo service network-manager restart

Зачекайте 7/10 секунд, щоб закінчити процес перезавантаження, перевірте свою конфігурацію за допомогою "nslookup nist.gov". Добре працює на Ubuntu LTS 14.04.


0

NB: Як і більшість відповідей, і цей передбачає використання NetworkManager. Однак в відміну від більшості інших відповідей, він не передбачає використання resolvconf, dhclientабо що - небудь ще - потрібно враховувати , що вони можуть взяти на себе, хоча (див поновлення).

Зважаючи на кількість переглядів цього питання, досить неймовірно, що це рішення для 8 символів ще не було розміщено: відповідно man NetworkManager.conf,

dns: […] none: NetworkManager не змінює reslav.conf. Це означає, що rc-менеджер не управляється

Тому додайте

dns=none

у [main]розділі /etc/NetworkManager/NetworkManager.confпотім перезавантажте NetworkManager, і він більше не змінюватиметься /etc/resolv.conf.

Зауважте, що налаштування rc-manager=unmanagedповинно бути еквівалентним dns=none, і це налаштування rc-manager=symlinkпоряд із тим, щоб мати /etc/resolv.confяк символічне посилання, може бути кращою ідеєю (читайте вищевказану сторінку).

Оновлення:

Після того, як NetworkManager перестав перезаписувати /etc/resolv.conf, я зрозумів, що dhcpcdвін вже замінює /etc/resolv.confнепотрібний порожній файл при завантаженні. Сторінку довідки dhcpcd.conf, досить додати

nohook resolv.conf

у вашому dhcpcd.conf(моє в /etc/dhcpcd.conf).


0

На моєму сервері Linux centos7 найкращим способом я міг змінити цю опцію

nmtui

команда, яка не запропонована в жодних відповідях тут. Ви можете редагувати сервери імен у цьому інструменті, і коли ви зміните параметри мережевого менеджера з цієї утиліти, вони будуть автоматично застосовані /etc/resolv.confпісля перезавантаження. Тут ви можете знайти більше інформації .

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