Как мне установить DNS, когда resolv.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.

К вашему сведению, я не хочу менять DNS для каждого соединения, я хочу установить настройки DNS по умолчанию, которые будут использоваться для всех соединений, если не указано иное.

ОБНОВИТЬ:

Я сам ответил на этот вопрос: https://unix.stackexchange.com/a/163506/67024

Я думаю, что это лучшее решение, так как:

  1. Оно работает.
  2. Это требует наименьшего количества изменений и
  3. Он по-прежнему работает в сочетании с DNS-кешем dnsmasq, а не в обход.
Шон Хейс
источник
Лучше ответь на свой вопрос, чем обновляй вопрос, я думаю ... будет легче найти правильный ответ, который ты дал на свою проблему
Филипп Гачу
Кажется, что большинство ответов ориентированы на Ubuntu и слишком сложны. Универсальное решение для пользователей NetworkManager это просто добавить dns=noneв /etc/NetworkManager/NetworkManager.conf(подробности см в мой ответ ниже).
Скиппи ле Гран Гуру
Я думаю, что этот ответ проясняет, почему файл resol.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файл тоже.

Рекомендации

SLM
источник
21
Ubuntu 14.04 - когда я помещал baseи запускал resolvconf -uсерверы имен, серверы имен не помещались в resolv.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.
Acumenus
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заявляет, что DNS-сервер

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. resolvonf читает только часть «head»: часть «base» каким-то образом контролируется 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;

Результат следующий: resolv.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-инструмент говорит

DNS:             8.8.8.8    
DNS:             208.67.222.222
DNS:             208.67.220.220
штифтик
источник
4
Гораздо лучший ответ, чем взломать конфиги NS. Особенно возможность добавить сервер перед dhcp. Похоже, идеальный баланс решения проблемы, без создания новых!
Стив Мидгли
2
Столько ясности и мыслей в ответе, а не просто в команде.
igaurav
3
Йоу, чувак! "заменить серверы доменных имен 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чтобы проверить мой системный журнал и убедиться, что 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 сказано изменить файл / etc / network / interfaces, который может выглядеть следующим образом:

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 Page 38

Родолфо
источник
Это, конечно, выглядит правильно, но как мне теперь восстановить resolv.conf ?!
Джоэл Бергер
3
@JoelBerger ifdown eth0; ifup eth0.
Дзамо Нортон
17
  1. Поиск 'Сетевое соединение'
  2. Открой это

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

  3. Затем выберите «WiFi» или «Ethernet», или то, что вы используете, и нажмите «Изменить». Вы получите это:

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

  4. Выберите ipv4 во вкладках

  5. Выберите адреса только в методе
  6. Введите ниже свое DNS-имя и сохраните его

  7. Вы сделали

pa1pal
источник
Я должен сделать это для каждого сетевого подключения, хотя. В прошлом вы могли изменить настройки по умолчанию для всех подключений, что я и хотел сделать здесь.
Шон Хейс,
2
Я люблю вас! эта настройка интерфейса спасла мою задницу от sudo и vim mess: '(
Luke
Использование Mint (в Ubuntu 14.04) - но также и в KDE - по какой-то причине настройка DNS-серверов в GUI Network Manager не влияет на настройки 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, которые обеспечивают доступ к системе доменных имен в Интернете (DNS). Файл конфигурации резолвера ( resolv.conf) содержит информацию, которая читается подпрограммами резолвера при первом запуске процесса. Короче говоря, каждый процесс, запрашивающий DNS, будет читать /etc/resolv.confбиблиотеку. NSS имеет многоуровневую структуру и настраивается с помощью /etc/nsswitch.conf.

Конфигурация Linux DNS находится в файле, /etc/resolv.conf НО существует ряд программ / служб, которые хотят автоматически управлять файлом конфигурации DNS и обращаться с ним /etc/resolv.conf. В некоторых ситуациях вы можете захотеть управлять этим файлом самостоятельно. Каждая программа / служба, управляющая DNS, имеет свои собственные файлы конфигурации, такие как /etc/dnsmasq.conf(для службы dnsmasq) и добавляет конфигурацию DNS при изменении соединения и / или при других событиях ... быстрое решение - заблокировать файл конфигурации DNS с помощью, chattr +i /etc/resolv.confно это не рекомендуется в некоторых случаях лучшим решением является правильная настройка всех программ / служб с использованием DNS, например (dnsmasq / network-manager / resolvconf / etc.)

Возвращаем контроль над DNS

Вот исчерпывающий список настроек, чтобы вернуть управление resolv.conf и избежать его перезаписи ( как отключить / настроить DNS из другого места, отличного от resolv.conf ). Обратите внимание, что resolvconf - это независимая программа из resolv.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

Отключить resolvconf

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

Используйте resolvconf

$ 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

Обновите Конфиг

reboot

5. DHCP-клиент:

Конфиг файлы

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

Обновите Конфиг

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=""

Обновите Конфиг

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
intika
источник
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просто перешел на ?
PlasmaBinturong
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

Перезагрузитесь, если сможете.

TooIgnorantToNotBeAnonymous
источник
3

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

Майк
источник
Оставьте комментарий, когда вы понизите, пожалуйста. Этот метод приведен в руководстве , стр. 38.
Zook
1
В не упомянутом руководстве все IP-адреса отображаются в одной строке. Этот ответ, кажется, предлагает добавить строку. И почему последний номер только один Х шириной? Я думаю, что в основном это были очень неформальные и неуверенные короткие разговоры в стиле чата, которые собрали отрицательные отзывы @Zook.
Сис Тиммерман
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

Теперь вы сможете редактировать настройки даже из Network Manager в Gnome. :)

Не уверен, что это сработает на старых Ubuntu, но на Ubuntu 17.10.

tftd
источник
когда мы запускаем 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

Вернувшись сегодня домой из университета, я обнаружил, что не могу подключиться к своему домашнему Wi-Fi. Я прочитал немного дальше, 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

Все будет хорошо работать. Решаемые.

Pragathees
источник
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 не будет изменять resolv.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после перезагрузки. Здесь вы можете найти больше информации .

Мойтаба Резаян
источник