Сначала вам нужно немного узнать о том, как работает разрешение имен в Ubuntu начиная с Ubuntu 12.04.
Стефан Грабер опубликовал в блоге некоторую информацию об этом в прошлом году здесь. Самое важное, что нужно знать, это то, что и Ubuntu Server, и Ubuntu Desktop используют resolvconf для управления resolv.conf
файл. Это означает, что вы больше не должны редактировать /etc/resolv.conf
напрямую; вместо этого вы должны настроить свою утилиту настройки сетевого интерфейса, чтобы предоставить правильную информацию для resolvconf. Для Ubuntu Server утилита настройки сетевого интерфейса является ifup и он настраивается с помощью файла /etc/network/interfaces
. Для рабочего стола Ubuntu утилита настройки сетевого интерфейса является Сетевой менеджер. Это то, что вы используете.
NetworkManager настраивается с помощью >Сетевой индикатор Редактирование подключений. Однако для сетевых интерфейсов, настроенных DHCP, обычно нет необходимости изменять какие-либо настройки вручную. Обычно происходит то, что (удаленный) DHCP-сервер предоставляет NetworkManager как IP-адрес для локального интерфейса, так и адрес (удаленного) DNS-сервера имен для использования. NetworkManager запускает экземпляр сервера имен пересылки, который прослушивает локально по адресу 127.0.1.1. Этот адрес, 127.0.1.1, отправляется в resolvconf, который помещает nameserver 127.0.1.1
в /etc/resolv.conf
. NetworkManager также предоставляет (удаленный) IP-адрес DNS-сервера имен, предоставляемого DHCP, для сервера имен пересылки. Таким образом, программа, запущенная в локальной системе, просит преобразователь преобразовать имя хоста в IP-адрес; преобразователь запрашивает локальный сервер имен пересылки по адресу 127.0.1.1; сервер имен пересылки запрашивает удаленный сервер имен, о котором ему было сказано, получает ответ и отправляет его обратно по цепочке.
NetworkManager взаимодействует с процессом сервера имен пересылки по D-шине. Вы можете увидеть, что NetworkManager сообщил серверу имен пересылки, выполнив команду
nmcli dev list iface eth0 | grep IP4.DNS
Обновление, вытекающее из комментариев:
Обратите внимание, что resolvconf фактически записывает файл /run/resolvconf/resolv.conf
к которому /etc/resolv.conf
предполагается, что это символическая ссылка. Если /etc/resolv.conf
если это не символическая ссылка, то вам нужно ее воссоздать. Для этого вы можете запустить
sudo dpkg-reconfigure resolvconf
или
sudo ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf