Адрес DNS-сервера больше не сохраняется в resolv.conf; где это сейчас?

14

Я иногда переключаю DNS-серверы, используя индикатор NetworkManager на панели задач; это работало нормально с предыдущими версиями, и на самом деле хорошо работает и с 12.04, за исключением одного: я использую Conky для отображения некоторой системной информации, включая адрес DNS, и я заметил, что теперь она всегда отображается 127.0.0.1.

Я посмотрел resolv.conf, где он получает этот адрес, и, конечно же, это то, что он всегда говорит. У меня есть одна строка с предупреждением не редактировать файл вручную:

nameserver 127.0.0.1

Единственный способ проверить адрес DNS-сервера, который я знаю, - это открыть графический интерфейс диспетчера сети для просмотра информационной страницы. Итак, где эта информация хранится сейчас?

Марти Фрид
источник

Ответы:

17

Информация управляется изнутри сетевым менеджером. Вы можете получить эту информацию в командной строке, используя включенный nmcliинструмент.

Вы можете получить информацию Network Manager для определенного сетевого интерфейса с помощью следующей команды:

nmcli dev list iface eth0

(замените eth0интерфейс, к которому вы подключаетесь). Вывод будет включать информацию об интерфейсе и текущем активном соединении на этом интерфейсе:

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           802-3-ethernet
...
IP4.DNS[1]:                             192.168.0.1
...

Из этого вывода не должно быть слишком сложно извлечь нужную вам информацию.

Если вам нужен программный метод доступа к этим данным, который не зависит от вывода nmcli, эта информация также должна быть доступна через интерфейс D-Bus Network Manager.

Джеймс Хенстридж
источник
Большое спасибо, это отличная информация. Должно быть довольно легко создать простой сценарий оболочки, используя эту nmcliкоманду для перечисления различных интересных параметров. Может быть, я могу что-нибудь полезное и поделиться где-нибудь. Я действительно не думал, что Network Manager требовался, и я полагаю, что для кого-то могут быть альтернативные способы, но это работает для меня.
Марти Фрид
Хорошо, вы можете видеть, что прослушивание сервера 127.0.0.1является экземпляром, dnsmasqзапущенным Network Manager (см. Вывод sudo netstat -tlnp). Но лучше всего подумать об этом как о деталях реализации и попросить менеджера сети предоставить необходимую информацию, поскольку именно она принимает решение здесь.
Джеймс Хенстридж
Спасибо за предоставление такой хорошей информации. И спасибо также за редактирование моего вопроса - я постараюсь занять больше времени в будущем. :) Я оправдываюсь тем, что я только что обновился до 12.04 и тушил небольшие пожары на нескольких фронтах. :)
Марти Фрид
4
nmcli dev list ifaceне работает для меня, но nmcli dev showработает [Ubuntu 15.04]
Бени Чернявский-Паскин
10

Разработчики Ubuntu должны задокументировать эти изменения /etc/resolv.conf, но не сделали этого.

Вот список быстрых команд, которые помогут вам начать работу.

  1. Показать текущие DNS-серверы

    nm-tool | grep DNS
    
  2. Определите статический DNS-сервер в /etc/dhcp/dhclient.conf. Добавьте следующую строку и перезапустите локальный преобразователь:

    supersede domain-search "sub.mydomain.com", "domain.com";
    prepend domain-name-servers 192.168.0.1;
    

    Из командной строки:

    invoke-rc.d network-manager restart
    
cmcginty
источник
Еще немного документации: resolvconf (8), /usr/share/doc/resolvconf/README.gz.
Jdthood
4

Имейте в виду, что использование nmcli не всегда может дать вам полный ответ. например, если вы используете openconnect (или, по-видимому, vpnc) для запуска VPN, и если у вас установлен пакет resolvconf (для автоматического управления /etc/resolv.conf), вы обнаружите, что он все равно может автоматически вставлять Настройки DNS VPN в /etc/resolv.conf опережают 127.0.0.1. В этом случае просто проверка (например) «nmcli -f IP4 dev list» не даст вам истинный текущий список DNS. Не уверен, влияет ли этот сценарий на вас, но решил, что стоит упомянуть.

АГД
источник
Спасибо за дополнительную информацию; всегда хорошо узнать больше. Что касается моего варианта использования, мне не придется об этом беспокоиться, поскольку я в основном просто хочу узнать, какой из двух возможных адресов DNS активен.
Марти Фрид
Если вы используете networkmanager для подключения к VPN, какая команда должна дать вам DNS? DNS работают, но я не могу их найти.
Хорхе Суарес де Лис