Большая часть информации, которую я вижу в Интернете, говорит о необходимости редактирования /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
Я думаю, что это лучшее решение, так как:
- Оно работает.
- Это требует наименьшего количества изменений и
- Он по-прежнему работает в сочетании с DNS-кешем dnsmasq, а не в обход.
dns=none
в/etc/NetworkManager/NetworkManager.conf
(подробности см в мой ответ ниже).Ответы:
Я полагаю, что если вы хотите переопределить DNS-сервер имен, вы просто добавляете строку, аналогичную этой, в свой
base
файлresolv.conf.d
.пример
Затем поместите ваш список серверов имен примерно так:
Наконец обновите
resolvconf
:Если вы посмотрите на справочную страницу,
resolvconf
там описаны различные файлы/etc/resolvconf/resolv.conf.d/
.Хотя в верхней части
head
файла есть предупреждение :это предупреждение существует для того, чтобы при создании этих файлов предупреждение в конечном итоге попадало в результирующий
resolv.conf
файл, который эти файлы будут использовать для создания. Таким образом, вы могли бы так же легко добавитьnameserver
строки, которые описаны выше дляbase
файла, вhead
файл тоже.Рекомендации
источник
base
и запускалresolvconf -u
серверы имен, серверы имен не помещались в resolv.conf - когда я помещал серверы именhead
, они были/run/resolvconf/interface/NetworkManager
nslookup google.com
и первый IP-адрес в списке должен быть ваш новый сервер имен, если нет, вы сделали это неправильно/etc/resolvconf/resolv.conf.d/head
только если добавлено , а не сbase
. Подтверждено сnslookup google.com
.resolvconf
установить. Вы можете установить его, выполнивsudo apt-get install resolvconf
.Меня также интересует этот вопрос, и я попробовал решение, предложенное @sim.
Чтобы проверить это, я положил
в
/etc/resolvconf/resolv.conf.d/base
ив
/etc/resolvconf/resolv.conf.d/head
Затем я перезапустил сеть с
Результат
/etc/resolv.conf
выглядит таки
nm-tool
заявляет, что DNS-серверкоторые предоставлены моим роутером. С другой стороны, копание адреса говорит о том, что
Если я прав, из всего этого я делаю вывод, что
В целом, это работает, но я не думаю, что это ожидаемый результат. Более близким решением, я думаю, является следующее. редактировать
затем добавьте
Результат следующий: resolv.conf содержит только 127.0.0.1, что означает, что кеш dnsmasq вызывается, а nm-tool говорит
Это означает, что если искомого имени нет в кэше, его запрашивают в 8.8.8.8, а не на сервере, предоставленном dhcp.
Другой (возможно, лучший) вариант - использовать «prepend» вместо «supersede»: таким образом, если имя не разрешено в 8.8.8.8, запрос возвращается на другой сервер. На самом деле, NM-инструмент говорит
источник
Я обнаружил, что вы можете изменить используемые серверы имен,
dnsmasq
добавив следующие строки/etc/dnsmasq.conf
:У меня не было
/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
он использует указанные серверы имен:источник
sudo service network-manager restart
)В случае статических IP-адресов в Руководстве по серверу Ubuntu сказано изменить файл / etc / network / interfaces, который может выглядеть следующим образом:
Вы изменяете IP 192.168.3.45 192.168.8.10 на те, которые хотите, например 8.8.8.8
https://help.ubuntu.com/14.04/serverguide/serverguide.pdf Page 38
источник
ifdown eth0; ifup eth0
.Открой это
Затем выберите «WiFi» или «Ethernet», или то, что вы используете, и нажмите «Изменить». Вы получите это:
Выберите ipv4 во вкладках
Введите ниже свое DNS-имя и сохраните его
Вы сделали
источник
sudo service network-manager restart
, подождите немного, подтвердите с помощьюnmcli d list | grep 'DNS\|IP-IFACE'
. И пинг вашего внутреннего клиента по имени.Быстрый и грязный обходной путь, который еще не был упомянут, устанавливает флаг неизменяемости в
resolv.conf
файле сразу после его редактирования.Добавьте это и сохраните:
Затем:
Это должно делать свое дело. Я делаю это и в моей системе.
источник
Конфигурация 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:
Конфиг файлы
Обновите конфиг
Отключить resolvconf
2. Сервис Dnsmasq:
Конфиг файлы
Обновите конфиг
3. Сетевой менеджер:
Конфиг файлы
Отключить DNS
Включить DNS
Используйте разрешенный сервис
Используйте resolvconf
Обновите конфиг
4. Сетевые интерфейсы:
Конфиг файлы
Обновите Конфиг
5. DHCP-клиент:
Конфиг файлы
Обновите Конфиг
6. Сервис Rdnssd:
Отключить rdnssd
7. Разрешенное обслуживание:
Отключить разрешено
8. Netconfig:
Конфиг файлы
Отключить netconfig
Обновите Конфиг
Настройка DNS-сервера
Пример
/etc/resolv.conf
конфигурацииисточник
Моя проблема была немного другой, я хотел переопределить DNS-серверы моего маршрутизатора. Я нашел эту ссылку из Ubuntu: https://wiki.ubuntu.com/OverrideDNSServers
Там написано: Если вы хотите переопределить настройки DNS, предоставленные вам DHCP-сервером, откройте
и добавьте следующую строку:
замена
<dns_ip_address*>
элементов с надлежащим содержанием.источник
dhcp3
папки? У меня Xubuntu 17.10, он/etc/dhcp
просто перешел на ?Может быть, я что-то упустил, но в соответствии с инструкциями по настройке на https://help.ubuntu.com/14.04/serverguide/network-configuration.html все, что вам нужно сделать, это обновить следующее. Я не использую прокси - просто машина за брандмауэром и локальным DNS (пример показывает Googles, но установите для него все, что вам нужно).
По умолчанию:
ОБНОВЛЕНО:
Перезагрузитесь, если сможете.
источник
Попробуйте добавить
dns-nameservers XXX.XXX.XXX.X
в свой/etc/networking/interfaces
файл.источник
Некоторые ответы здесь работают просто отлично. Однако я не был доволен тем , я должен вручную пройти через конфигурационные файлы просто установить «правильный» ,
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
файл, и все должно быть просто отлично:Теперь вы сможете редактировать настройки даже из Network Manager в Gnome. :)
Не уверен, что это сработает на старых Ubuntu, но на Ubuntu 17.10.
источник
systemd-resolve --flush-cache
исходный связанный файл, по-видимому, разорван, ответ выше восстановить исходную функциональностьРЕДАКТИРОВАТЬ МАЙ 6,2016
Я написал скрипт для обновления всех настроек системных подключений в
/etc/Network-Manager/system-connections/
каталоге. GUI, который вы используете для редактирования отдельных соединений, редактирует определенный файл в этом каталоге. Сценарий обновляет все файлы - он просто ищет тех, у кого dns не установлен с помощью grep, и устанавливает его с помощью awk.Поскольку для доступа к этим файлам требуется
sudo
доступ, запустите этот сценарий,sudo
а затем - перезапустите сетевой менеджер.Скрипт в действии:
ОРИГИНАЛЬНАЯ ПОЧТА Некоторые пользователи здесь отметили, что 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
как теперь выглядит мой файл:ПРИМЕЧАНИЕ. Для получения более подробной информации о моей проблеме и ее решении см. Мой пост на сайте askubuntu.com .
ОБНОВЛЕНИЕ № 1
Вернувшись сегодня домой из университета, я обнаружил, что не могу подключиться к своему домашнему Wi-Fi. Я прочитал немного дальше,
man NetworkManager.conf
и оказывается, чтоdns=
в[main]
действительности это строка для плагинов, поэтому строкаdns=dnsmasq
, по-видимому, фактически добавляет плагин dnsmasq в NetworkManager.Таким образом, мое решение все еще работало, но не так, как я ожидал. Вот выдержка из справочной страницы:
Таким образом, установив,
dns=208.67.222.222
я мог, в принципе, запретить NetworkManager использовать этот плагин, который в противном случае использовал бы локальный DNS-сервер (который, очевидно, не работает).источник
Есть два метода
Способ 1
Используемый DNS-сервер можно изменить, обновив
head
файл в разделеresolv.conf.d
а потом беги
Выше будет генерировать общий
resolv.conf
файл в/etc
каталоге. Все ваши запросы на разрешение будут отправлены на указанный выше сервер имен.Решаемые.Однако есть последствия для этого. При использовании
resolvconf
для прямого запроса1.1.1.1
разрешения адресов возможности кэширования, предоставляемые dnsmasq, исчезают. Каждый запрос будет отправлен на1.1.1.1
Способ 2
Если вы не хотите, чтобы это произошло, и используйте dnsmasq для разрешения DNS, обратитесь к этому ответу. Ответ просто описан здесь.
Добавьте следующее содержимое в
/etc/dnsmasq.conf
файл.Затем перезапустите службу dnsmasq.
Все будет хорошо работать. Решаемые.
источник
Простой способ изменить DNS:
Если возникают проблемы, установите
nano
:тогда ..
dns-nameservers
dns-nameservers 199.85.126.10 199.85.127.10
Я надеюсь, что это лучший способ, я, кстати, сделал это на VPS.
источник
по корню:
dns=dnsmasq
по/etc/NetworkManager/NetworkManager.conf
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
sudo service network-manager restart
Следующее вносит изменения, показанные выше:
Подождите 7/10 секунд, чтобы завершить процесс перезапуска, проверьте конфигурацию с помощью «nslookup nist.gov». Хорошо работает на Ubuntu LTS 14.04.
источник
NB. Как и большинство ответов, этот предполагает использование NetworkManager. Однако в отличие от большинства других ответов, он не предполагает использование
resolvconf
,dhclient
или что - нибудь еще - нужно учитывать , что они могут взять на себя, хотя (см обновления).Учитывая количество просмотров этого вопроса довольно невероятным , что это 8 символов решение не было ниодного: согласно
man NetworkManager.conf
,Поэтому добавьте
в
[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
, достаточно добавитьв вашем
dhcpcd.conf
(мой в/etc/dhcpcd.conf
).источник
На моем сервере Linux centos7 лучшим способом изменить эту опцию было использование
команда, которая не предлагается ни в каких ответах здесь. Вы можете редактировать серверы имен в этом инструменте, и когда вы изменяете параметры сетевого менеджера из этой утилиты, они будут автоматически применятьсяnmtui
/etc/resolv.conf
после перезагрузки. Здесь вы можете найти больше информации .источник