В 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