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

Является /etc/resolv.conf бесполезный в Ubuntu 12.04 LTS (Точный Ящер)?

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

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

Если /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, доступными здесь:

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

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

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

Точно так же я нашел третий подход здесь это включает в себя добавление строк в /etc/network/interfaces:

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

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

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

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

Бежать

cd /etc/resolvconf/resolv.conf.dsudo cp -p head head.orig  #backup copy, always do thissudo 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, чтобы увидеть, что добавленная вами строка теперь там. Кроме того, он все равно будет там при следующей загрузке вашего компьютера или перезапуске сетевой службы, в зависимости от того, что произойдет раньше.

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

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

# The loopback network interfaceauto loiface lo inet loopback# The Primary Network Interfaceauto eth0iface 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-nameserver 75.75.75.75         dns-nameserver 75.75.76.76        dns-search local        wildcard mask 0.0.0.255        cidr prefix size /24        cidr notation 192.168.1.0/24        first host 192.168.1.255        last host 192.168.1.254        mac address J7:836:737:727:gsgd837:g645

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

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

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

nameserver 8.8.8.8nameserver 8.8.4.4

Я надеюсь, что вышесказанное поможет!

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

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

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

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

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

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

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

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

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

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

cat /run/resolvconf/interface/NetworkManager  nameserver 8.8.4.4nameserver 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 OVERWRITTENnameserver 8.8.4.4nameserver 8.8.8.8 

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

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

Я думаю, что команда, упомянутая выше, должна быть “nm-tool”, а не "nmcli`.