Является ли /etc/resolv.conf
бесполезным в Ubuntu 12.04 LTS (Precise Pangolin)?
Я вижу, что информация DNS-сервера теперь хранится в NetworkManager . Инструмент командной строки 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
, создайте a /etc/resolvconf/resolv.conf.d/tail
и добавьте их там.
Как с каждым релизом Ubuntu, рекомендуется прочитать Информацию о версии Ubuntu, доступную здесь:
Разделы Настольной и Общей инфраструктуры содержат ссылку на
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
Это очень популярный вопрос с набором стандартных возможных ответов, все из которых, 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.
Иначе должен определить докера определенные серверы DNS в:
/etc/docker/daemon.json
Если у Вас нет такого файла, просто создайте его:
{
"dns": ["1.1.1.1", "1.0.0.1"]
}
Как насчет:
sudo dpkg-reinfigure resolvconf
blockquote>Перед этим используйте Network Manager, чтобы изменить адрес DNS и изменить метод на
Только автоматический (DHPC) адрес
blockquote>Затем выполните указанную выше команду и перезагрузите компьютер. Это помогло мне.
Я исправил это, изменив порядок источников. Я переместил источник dns
до mdns
в /etc/nsswitch.conf
:
hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4
Вы можете сохранить свои настройки и при этом использовать локальный сервер кэширования.
Добавив свой бит в уже длинный список, вот еще один способ (протестирован 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» не должен причинять слишком много вреда.
Вы можете редактировать соединение «AUTO ETH0» или любое другое имя, которое вы используете для подключения в NM. Вы можете сделать это, щелкнув правой кнопкой мыши на NM и выбрав «Редактировать соединения ...». На вкладке IPv4 вы можете выбрать «Только автоматические (DHCP) адреса» в качестве «метода», и NM позволит вам установить адрес (а) сервера имен вручную, даже если адреса доставляются через DHCP.
Чтобы изменить DNS, следуйте инструкциям в: https://developers.google.com/speed/public-dns/docs/using
Перейти к Сеть
Выберите соединение, для которого вы хотите настроить DNS.
Чтобы изменить настройки беспроводного соединения, выберите вкладку «Беспроводная связь», затем выберите соответствующую беспроводную сеть.
Нажмите стрелку (вправо) и в появившемся окне выберите вкладку Настройки IPv4 или Настройки IPv6.
Если выбран метод «Автоматически» (DHCP), откройте раскрывающийся список и выберите вместо него только адреса «Автоматически» (DHCP). Если метод установлен на что-то другое, не меняйте его.
В поле DNS-серверы введите IP-адреса DNS, разделенные запятой
Я просто удалил ссылку в /etc/resolv.conf
и создал обычный файл с адресами серверов имен. Это работает, и я не вижу причин использовать эту довольно странную конструкцию, созданную разработчиками Ubuntu.
resolvconf
бесполезно. Я нахожусь на сервере Linux, и мой IP-адрес является статическим, а мои DNS серверы являются статическими. Мне не нужно resolvconf
или NetworkManager .
Простота - моя политика при работе на сервере. Чем меньше сложности, тем легче будет управлять / исправлять ситуацию, когда что-то сломается.
Итак, я сделал aptitude purge resolvconf
и вручную убедился, что /etc/resolv.conf
не является символической ссылкой , а просто создал статический файл. На случай, если программа попытается изменить файл, я сделал chattr +i
(неизменяемый) в /etc/resolv.conf
в качестве меры предосторожности.
Примечание: Этот ответ был для довольно другой версии Вопроса до слияния, с акцентом только на предварительное ожидание желаемого сервера имен.
Это работает до 12.04:
Отредактируйте /etc/dhcp3/dhclient.conf
и добавьте:
prepend domain-name-servers 127.0.0.1;
(На самом деле, эта строка уже присутствует; все, что вам нужно сделать - это откомментировать.)
Вы можете использовать NetworkManager, как указано в ответе Фрэнка, но если вы предпочитаете редактировать вручную /etc/resolv.conf
, вы можете сделать это, удалив его (на самом деле это символическая ссылка), а затем создав новый простой файл с требуемым содержимым. Утилита resolvconf
только когда-либо пишет в файл /run/resolvconf/resolv.conf
.
У меня работает Ubuntu Server 12.04. Я внес следующие изменения и перезагрузил сервер (обычно это можно сделать, просто отключив сетевой интерфейс, то есть ifdown eth0
или ifup eth0
).
В файл /etc/resolvconf/resolv.conf.d/base
я добавил следующие записи:
nameserver 8.8.8.8
nameserver 8.8.4.4
Надеюсь, что выше поможет!
Ниже я покажу вам лучший способ, который я нашел со времени запуска Ubuntu Server Edition и использования ifup, а не NetworkManager.
На самом деле для меня они сделали это проще :), поместив все это в файл / etc / network / interfaces. Те же конфигурации, которые вы записали бы в resolv.conf, теперь могут находиться в том же файле, что и конфигурации вашего сетевого адаптера, как в примере ниже: делает для меня, теперь мы можем создать статические IP-адреса и добавить в домены имен и DNS-доменов все в одном файле:)
Похоже, вы говорите о пакете 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 kbd> x kbd> и ответьте «да», чтобы сохранить файл. Чтобы закончить, заново сгенерируйте /etc/resolv.conf, чтобы изменения вступили в силу прямо сейчас:
sudo resolvconf -u
Затем проверьте содержимое /etc/resolv.conf, чтобы увидеть, что добавленная вами строка теперь там. Кроме того, он все еще будет там при следующей загрузке вашей машины или перезапуске вашей сетевой службы, в зависимости от того, что произойдет раньше.
Я нашел другой подход здесь, который включает добавление строки как та ниже к /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
Обновление: Вот официальная документация для третьего подхода.
Большая часть вышеупомянутого предполагает, что у Вас есть нетронутая система, но действительность часто такова, что Вы устанавливали различных клиентов 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
видеть, что там.
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. Перезагрузите свою машину.