Dhclient не обновляет /etc/resolv.conf

Dhclient не обновляет /etc/resolv.conf

В Linux Mint при просмотре /etc/resolv.confфайла в первом комментарии указано, что /etc/resolv.confфайл создан resolvconf(8).

~ $ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

Перефразируя resolvconf(8)страницу руководства:

Программа resolvconf запускается DHCP-клиентами, такими как dhclient

Я бегу dhclient wlan0.

~ $ dhclient wlan0

Dhclient должен заставить resolvconfпрограмму обновиться /etc/resolv.conf. /var/lib/dhcp/dhclient.leasesФайл проверяет, что я могу арендовать IP-адрес сервера имен (192.168.0.6).

~ $ cat /var/lib/dhcp/dhclient.leases 
lease {
  interface "wlan0";
  . . .
  option domain-name-servers 192.168.0.6;
  . . .
}

Однако /etc/resolv.confфайл не обновлен. /etc/resolv.confФайл имеет nameserver 127.0.1.1.

~ $ 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.1.1
search software.eng.apl

В списке нет серверов имен /etc/network/interfaces.

~ $ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

Я не уверен, что мне здесь не хватает, чтобы /etc/resolv.confобновить файл, используя сервер имен, арендуемый у DHCP-сервера. DHCP-сервер — это машина Linux CentOS, использующая DHCPD.

решение1

Mint и другие современные дистрибутивы поставляются с mdnsпо умолчанию, который оборачивает обычный публичный DNS локальной "децентрализованной" оболочкой, которая включает поддержку zeroconf для вашей локальной сети. По сути, локальный DNS-сервер разрешает имена в локальной сети, которую он обнаружил, а затем возвращается к (теперь проксируемому) публичному DNS для публичного разрешения Интернета, т. е. для имен за пределами вашей локальной сети.

Короче говоря, ваш адрес resolv.confправильный и подходит для этого сценария, и если mdnsу вас возникли проблемы с доступом к серверу имен вашего интернет-провайдера, вам следует заглянуть внутрьегоконфигурация - хотя, конечно, если вас не волнует поддержка zeroconf, отключение mdns(а затем, вероятно, и Avahi) позволит вам управлять resolv.confим традиционным способом.

См. также, напримерhttps://help.ubuntu.com/community/HowToZeroconf

решение2

вы можете редактировать /etc/dhcp/dhclient.conf редактировать строку, раскомментировав#prepend domain-name-server

решение3

У меня была та же проблема, что описана в OP, но ни один из предыдущих ответов не помог мне. Я использую Linux Mint 18 и обнаружил эту проблему, когда пытался использовать сетевые функции внутри контейнера Docker. Docker ожидал разрешения значений DNS из /etc/resolv.conf. Но поскольку единственным указанным сервером имен был 127.0.1.1, сетевое подключение Docker не удалось.

я нашелдругое решениена askubuntu, который мне помог. Я размещаю его здесь в качестве перекрестной ссылки, на случай, если это кому-то поможет.


NetworkManager — это программа, которая (через утилиту resolvconf) вставляет адрес 127.0.1.1 в resolv.conf. NetworkManager вставляет этот адрес только в том случае, если он настроен на запуск экземпляра программы dnsmasq для работы в качестве локального сервера имен пересылки. Этот экземпляр dnsmasq прослушивает запросы по адресу 127.0.1.1.

Если вы не хотите использовать локальный сервер имен пересылки, то настройте NetworkManager так, чтобы он не запускал экземпляр dnsmasq и не вставлял этот адрес. Закомментируйте /etc/NetworkManager/NetworkManager.confстрокуdns=dnsmasq

sudo vim /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq

и перезапустите службу NetworkManager.

sudo service network-manager restart

В этом режиме NetworkManager обновляет /etc/resolv.conf (все еще через resolvconf), чтобы включить адреса серверов имен, которые NetworkManager имеет для активных подключений.

Если вы хотите отключить механизм resolvconf для обновления resolv.conf и просто использовать статический файл resolv.conf, выполните следующие действия.

sudo rm -f /etc/resolv.conf  # Delete the symbolic link
sudo vim /etc/resolv.conf   # Create static file

Связанный контент