Как добавить DNS-сервер через resolv.conf?

176

Является ли /etc/resolv.conf бесполезным в Ubuntu 12.04 LTS (точный панголин)?

Я вижу, что информация DNS-сервера теперь хранится в NetworkManager . Инструмент командной строки nmcli может указать это для вас.

Если я хочу добавить еще один сервер DNS , добавьте его в /etc/resolv.conf , используя resolvconf пакет помощи?

    
задан PnotNP 03.05.2012 в 02:00
источник

18 ответов

119

Если /etc/resolv.conf содержит nameserver 127.0.0.1 , то добавление записей в /etc/resolvconf/resolv.conf.d/tail не будет действительно полезным.

Если вы используете NetworkManager, вместо этого вы должны статически добавлять адреса серверов имен через индикатор сети : Изменить подключения ... | Изменить ... | Настройки IPv4 | Дополнительные DNS-серверы .

Если вы действительно хотите добавить больше записей в /etc/resolv.conf , создайте /etc/resolvconf/resolv.conf.d/tail и добавьте их там.

Как и в каждом выпуске Ubuntu, рекомендуется прочитать примечания к выпуску Ubuntu, доступные здесь:

Секции Desktop и Common Infrastructure содержат ссылку на

  • Ссылка , охватывающая изменения инфраструктуры DNS в 12.04.
ответ дан stgraber 03.05.2012 в 02:21
источник
123

Я нашел другой подход здесь , который включает добавление строки, как показано ниже, к /etc/dhcp/dhclient.conf :

prepend domain-name-servers x.x.x.x, y.y.y.y;

Аналогичным образом, я нашел третий подход здесь , который включает добавление строк в /etc/network/interfaces :

auto eth0
iface eth0 inet static
    . . .
    dns-nameservers 8.8.8.8 8.8.4.4

Обновление. Ниже приведена официальная документация для третьего подхода.     

ответ дан Randall Cook 09.05.2012 в 00:48
источник
78

Похоже, вы говорите о пакете resolvconf.

Установите пакет resolvconf .

Запустить

cd /etc/resolvconf/resolv.conf.d
sudo cp -p head head.orig  #backup copy, always do this
sudo nano head

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

nameserver <ip_of_nameserver>

Нажмите Ctrl x и ответьте да, чтобы сохранить файл. Чтобы закончить, регенерируйте файл /etc/resolv.conf, чтобы изменения были применены прямо сейчас:

sudo resolvconf -u

Затем проверьте содержимое файла /etc/resolv.conf, чтобы увидеть добавленную вами строку. Кроме того, он все равно будет в следующий раз, когда ваш компьютер загрузится или ваш сетевой сервис будет перезагружен, в зависимости от того, что наступит раньше.

    
ответ дан Azendale 01.07.2011 в 01:41
источник
28

Ниже я покажу вам лучший способ, который я нашел с момента запуска версии Ubuntu Server, и используйте ifup, а не NetworkManager.

На самом деле для меня это упростило :), поместив все это в файл / etc / network / interfaces. Те же конфигурации, которые вы написали бы в resolv.conf, теперь могут быть в том же файле, что и конфигурации вашего сетевого адаптера, как в приведенном ниже примере:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

Я надеюсь, что это поможет и упростит его работу, теперь мы можем создавать статические IP-адреса и добавлять в серверы имен и домен dns все в одном файле:)

    
ответ дан Joseph Mituzas 24.05.2012 в 00:55
источник
15

Mine запускает сервер Ubuntu 12.04. Я внедрил следующие изменения и перезагрузил сервер (обычно это можно сделать, только снижая сетевой интерфейс, то есть ifdown eth0 или ifup eth0 ).

В файле /etc/resolvconf/resolv.conf.d/base я добавил следующие записи:

nameserver 8.8.8.8
nameserver 8.8.4.4

Я надеюсь, что это поможет!

    
ответ дан Don Chai 19.03.2013 в 06:56
источник
11

Вы можете использовать NetworkManager, как указано в ответе Фрэнка, но если вы скорее вручную отредактируете /etc/resolv.conf , вы можете сделать это, удалив его (это фактически символическая ссылка), а затем создайте новый простой файл с нужным контентом. Утилита resolvconf записывает только файл /run/resolvconf/resolv.conf .

    
ответ дан Jase 04.05.2012 в 16:38
источник
8

Примечание. Этот ответ был для довольно другой, предшествующей версии вопроса, с фокусом только на предварительном ожидании желаемого сервера имен.

Это работает до 12.04:

Измените /etc/dhcp3/dhclient.conf и добавьте:
prepend domain-name-servers 127.0.0.1;

(На самом деле эта строка уже присутствует, все, что вам нужно сделать, это не комментировать ее.)

    
ответ дан belacqua 06.03.2011 в 21:26
источник
6

resolvconf бесполезно. Я на сервере Linux, а IP-адрес статичен, а мой DNS являются статическими. Мне не нужно resolvconf или символической ссылкой и просто создал статический файл. На всякий случай, когда программа пытается изменить файл, я сделал chattr +i (неизменяемый) в /etc/resolv.conf в качестве меры предосторожности.

    
ответ дан Mark 16.10.2012 в 17:41
источник
4

Большинство из вышеперечисленных предполагает, что у вас нетронутая система, но реальность часто такова, что вы устанавливаете разные клиенты dhcp, отключили сетевой менеджер в определенной предыдущей версии Ubuntu и т. д. Возможно, было бы полезно знать следующее. Я некоторое время использую dnsmasq, но деинсталлировал его. В настоящее время моя система имеет следующее содержимое /etc/resolv.conf (которая является символической ссылкой на /run/resolvconf/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.0.1

Неважно, как часто я запускаю sudo resolvconf -u или sudo dpkg-reconfigure resolvconf , он не обновлял сервер имен тем, которые я установил в NetworkManager. Информация, которую resolvconf использует из NetworkManager:

cat /run/resolvconf/interface/NetworkManager  
nameserver 8.8.4.4
nameserver 8.8.8.8

Однако, оказывается, что если в этом каталоге есть несколько файлов, этот файл может вообще не использоваться. Виновником был файл, который не удаляется при деинсталляции dnsmasq:

cat /run/resolvconf/interface/lo.dnsmasq                        
nameserver 127.0.0.1

Просто удаление этого файла (и выполнение sudo resolvconf -u впоследствии) решило мои проблемы с dns:

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 8.8.4.4
nameserver 8.8.8.8 

Я надеюсь, что это поможет другим с отладкой (сложное взаимодействие между всеми этими различными сетевыми инструментами). Если вы используете resolvconf , обязательно запустите ls /run/resolvconf/interfaces , чтобы увидеть, что там есть.

    
ответ дан Anne van Rossum 27.12.2014 в 13:54
источник
2

Вы можете редактировать соединение «AUTO ETH0» или любое другое имя, которое вы используете для подключения в NM. Вы можете сделать это, щелкнув правой кнопкой мыши по NM и выбрав «Edit Connections ...». На вкладке IPv4 вы можете выбрать только «Автоматические (DHCP) адреса», так как «Метод» и NM позволят вам устанавливать адреса серверов имен вручную, даже адреса передаются по DHCP.

    
ответ дан Frank Barcenas 04.05.2012 в 16:29
источник
2

Я просто удалил ссылку в /etc/resolv.conf и создал регулярный файл с адресами серверов имен. Он работает, и я не вижу причин использовать эту довольно странную конструкцию, которую создали разработчики Ubuntu.

    
ответ дан Ivan 19.03.2013 в 07:34
источник
1

Я исправил это, изменив порядок источников. Я переместил источник dns до mdns в % Co_de%:

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Вы можете сохранить свои настройки и по-прежнему использовать локальный сервер кеширования таким образом.

    
ответ дан Dan B 13.10.2012 в 03:47
источник
1

Как насчет:

  

sudo dpkg-reconfigure resolvconf

До этого используйте Network Manager для изменения адреса DNS и изменения метода

  

Только адреса (DHPC)

Затем запустите команду выше и перезагрузите компьютер. Это решение для меня.

    
ответ дан Adige72 03.02.2013 в 21:40
источник
1

Добавление моего бита в уже длинный список, вот еще один способ (протестирован 12.04):

Измените /run/resolvconf/interface/NetworkManager в соответствии с вашими потребностями. Вот пример:

search foobar.com example.com
nameserver 192.168.1.1

Затем, как указано для большинства других примеров, сделайте sudo resolvconf -u . Теперь вы найдете свой resolv.conf следующим образом:

nameserver 192.168.1.1
nameserver 127.0.0.1
search foobar.com example.com

Мне все еще не нравится, как это реализовано сейчас (кажется, Ubuntu нуждается в услуге для каждого foo, который он делает), и предпочтет равный resolv.conf наверняка. Но этот подход, кажется, лучший компромисс для меня до сих пор. Добавленный «localhost-NS» не должен сильно задевать.

    
ответ дан Izzy 28.09.2013 в 23:32
источник
1
vi /etc/network/interfaces


This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The primary network interface
allow-hotplug eth0


# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0         <<----- change this comment with the #
iface eth0 inet dhcp
    
ответ дан Roy Rogers 04.07.2014 в 12:33
источник
1

Это очень популярный вопрос с набором стандартных возможных ответов, все из которых, IMO, довольно хаки. У меня всегда были проблемы с получением Ubuntu уважения к настройкам DNS, которые я установил в NetworkManager, - в частности, установление статических DNS-серверов только с «Автоматическими (DHCP) адресами» - и сегодня я, наконец, понял, что было НАСТОЯТЕЛЬНО НЕПРАВИЛЬНО.

Проблема заключается в взаимодействии между resolvconf и NetworkManager. У файла resolvconf этот файл называется /etc/resolvconf/interface-order . По крайней мере, в моих системах NetworkManager вообще не находится в этом файле (за исключением того, что в конце он закрыт * wild card). Итак, что происходит, самый последний отчет dhclient для resolvconf имеет приоритет над тем, что должен сказать NetworkManager.

Таким образом, по крайней мере, в моем случае, фактический ответ заключался в том, чтобы добавить

NetworkManager

в верхней части /etc/resolvconf/interface-order или около нее.

(Да, я знаю, что многие люди просто говорят «удалить resolvconf», что мне кажется плохой идеей. Но более того, по крайней мере, хитрый и xenial считают resolvconf важной частью системы [ т. е. от этого зависит ubuntu-minimum], поэтому было бы сложно поддерживать вашу систему в согласованном, обновленном состоянии без resolvconf.)

По запросу я могу предоставить более подробную информацию о том, как я это понял. В двух словах я заменил исполняемый файл resolvconf оболочкой оболочки вокруг нее, которая сбрасывала свои аргументы, ввод, вывод и stderr в файлы; и добавил set -x в скрипты обновления resolvconf.

    
ответ дан Steven Collins 31.05.2016 в 20:32
источник
0

Другим способом является определение dock-серверов, относящихся к докере, по адресу:

/etc/docker/daemon.json

Если у вас нет такого файла, просто создайте его:

{
    "dns": ["10.0.0.2", "8.8.8.8"]
}

Источник: Ссылка

Также см. Ссылка

    
ответ дан AndreyKo 04.01.2017 в 13:27
источник
0

Чтобы изменить DNS, следуйте инструкциям в: Ссылка

  1. Перейти в Сеть

  2. Выберите соединение, для которого вы хотите настроить DNS.

  3. Чтобы изменить настройки для беспроводного подключения, выберите вкладку Wireless, затем выберите соответствующую беспроводную сеть.

  4. Щелкните стрелку (справа) и в появившемся окне выберите вкладку Параметры IPv4 или вкладку IPv6.

  5. Если выбранный метод является автоматическим (DHCP), откройте раскрывающийся список и выберите вместо него только адреса Automatic (DHCP). Если метод установлен на что-то еще, не меняйте его.

  6. В поле DNS-серверов введите IP-адреса DNS, разделенные запятой

ответ дан Ferroao 10.11.2017 в 21:54
источник

Ознакомьтесь с другими вопросами по меткам