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

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

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

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

228
задан 9 June 2014 в 20:56

19 ответов

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

При использовании NetworkManager затем, необходимо вместо этого статически добавить адреса сервера имен через индикатор сети: Соединения Редактирования... | Редактирование... | Настройки IPv4 | Дополнительные серверы DNS.

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

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

Разделы Настольной и Общей инфраструктуры содержат ссылку на

138
ответ дан 9 June 2014 в 20:56
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
0
ответ дан 9 June 2014 в 20:56

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

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

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

NetworkManager

в или около вершины /etc/resolvconf/interface-order.

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

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

0
ответ дан 9 June 2014 в 20:56

Иначе должен определить докера определенные серверы DNS в:

/etc/docker/daemon.json

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

{
    "dns": ["1.1.1.1", "1.0.0.1"]
}

Источник, также посмотрите это.

1
ответ дан 9 June 2014 в 20:56

Как насчет:

sudo dpkg-reinfigure resolvconf

Перед этим используйте Network Manager, чтобы изменить адрес DNS и изменить метод на

Только автоматический (DHPC) адрес

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

0
ответ дан 9 June 2014 в 20:56

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

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

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

0
ответ дан 9 June 2014 в 20:56

Добавив свой бит в уже длинный список, вот еще один способ (протестирован 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» не должен причинять слишком много вреда.

0
ответ дан 9 June 2014 в 20:56

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

0
ответ дан 9 June 2014 в 20:56

Чтобы изменить DNS, следуйте инструкциям в: https://developers.google.com/speed/public-dns/docs/using

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

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

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

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

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

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

0
ответ дан 9 June 2014 в 20:56

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

0
ответ дан 9 June 2014 в 20:56

resolvconf бесполезно. Я нахожусь на сервере Linux, и мой IP-адрес является статическим, а мои DNS серверы являются статическими. Мне не нужно resolvconf или NetworkManager .

Простота - моя политика при работе на сервере. Чем меньше сложности, тем легче будет управлять / исправлять ситуацию, когда что-то сломается.

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

0
ответ дан 9 June 2014 в 20:56

Примечание: Этот ответ был для довольно другой версии Вопроса до слияния, с акцентом только на предварительное ожидание желаемого сервера имен.

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

Отредактируйте /etc/dhcp3/dhclient.conf и добавьте:
prepend domain-name-servers 127.0.0.1;

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

0
ответ дан 9 June 2014 в 20:56

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

0
ответ дан 9 June 2014 в 20:56

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

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

nameserver 8.8.8.8
nameserver 8.8.4.4

Надеюсь, что выше поможет!

0
ответ дан 9 June 2014 в 20:56

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

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

0
ответ дан 9 June 2014 в 20:56

Похоже, вы говорите о пакете 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, чтобы увидеть, что добавленная вами строка теперь там. Кроме того, он все еще будет там при следующей загрузке вашей машины или перезапуске вашей сетевой службы, в зависимости от того, что произойдет раньше.

0
ответ дан 9 June 2014 в 20:56

Я нашел другой подход здесь, который включает добавление строки как та ниже к /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

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

134
ответ дан 9 June 2014 в 20:56

Большая часть вышеупомянутого предполагает, что у Вас есть нетронутая система, но действительность часто такова, что Вы устанавливали различных клиентов 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 видеть, что там.

6
ответ дан 9 June 2014 в 20:56

0. Добавьте временный DNS. Редактирование/etc/resolv.conf.

nameserver 4.4.4.4
nameserver 8.8.8.8

1. Установка или обновление resolvconf.

root@ubuntu:~# apt-get install resolvconf -y

2. Добавьте свой сервер имен в/etc/resolvconf/resolv.conf.d/tail

nameserver 4.4.4.4
nameserver 8.8.8.8

3. Перезагрузите свою машину.

0
ответ дан 22 October 2019 в 19:14

Другие вопросы по тегам:

Похожие вопросы: