Dhclient não atualizando /etc/resolv.conf

Dhclient não atualizando /etc/resolv.conf

No Linux Mint, quando visualizo o /etc/resolv.confarquivo, o primeiro comentário indica que o /etc/resolv.confarquivo é gerado por resolvconf(8).

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

Para parafrasear a resolvconf(8)página de manual:

o programa resolvconf é executado por clientes DHCP como dhclient

Eu corro dhclient wlan0.

~ $ dhclient wlan0

Dhclient deve fazer com que o resolvconfprograma seja atualizado /etc/resolv.conf. O /var/lib/dhcp/dhclient.leasesarquivo verifica se consigo alugar o endereço IP do servidor de nomes (192.168.0.6).

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

No entanto, o /etc/resolv.confarquivo não é atualizado. O /etc/resolv.confarquivo possui servidor de nomes 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

Não há servidores de nomes listados em /etc/network/interfaces.

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

Não tenho certeza do que está faltando aqui para /etc/resolv.confatualizar o arquivo usando o servidor de nomes que está sendo alugado do servidor DHCP. O servidor DHCP é uma máquina Linux CentOS usando DHCPD.

Responder1

O Mint e outras distros modernas são fornecidas mdnspor padrão, que envolve o DNS público regular com um wrapper local "descentralizado" que permite suporte zeroconf para sua rede local. Basicamente, um servidor DNS local resolve nomes na rede local que descobriu e depois recorre ao DNS público (agora com proxy) para resolução pública da Internet, ou seja, para nomes fora da sua rede local.

Em outras palavras, o seu resolv.confestá correto e apropriado para este cenário, e se mdnstiver problemas para acessar o servidor de nomes do seu ISP, você deve olhar dentroisso éconfiguração - embora, é claro, se você não se importa com o suporte ao zeroconf, desabilitar mdns(e provavelmente também o Avahi) permite que você gerencie resolv.confda maneira tradicional.

Veja também, por exemplohttps://help.ubuntu.com/community/HowToZeroconf

Responder2

você pode editar /etc/dhcp/dhclient.conf a linha descomentando#prepend domain-name-server

Responder3

Tive o mesmo problema descrito no OP, mas nenhuma das respostas anteriores funcionou para mim. Estou executando o Linux Mint 18 e descobri esse problema ao tentar usar recursos de rede dentro de um contêiner docker. Docker esperava resolver valores DNS de /etc/resolv.conf. Mas como o único servidor de nomes listado era 127.0.1.1, a rede docker não teve êxito.

eu encontreioutra soluçãono askubuntu que funcionou para mim. Estou postando aqui como referência cruzada caso ajude alguém.


NetworkManager é o programa que (através do utilitário resolvconf) insere o endereço 127.0.1.1 no resolv.conf. O NetworkManager insere esse endereço se e somente se estiver configurado para iniciar uma instância do programa dnsmasq para servir como um servidor de nomes de encaminhamento local. Essa instância dnsmasq escuta consultas no endereço 127.0.1.1.

Se você não quiser usar um servidor de nomes de encaminhamento local, configure o NetworkManager para não iniciar uma instância dnsmasq e não inserir esse endereço. Em /etc/NetworkManager/NetworkManager.confcomentar a linhadns=dnsmasq

sudo vim /etc/NetworkManager/NetworkManager.conf

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

e reinicie o serviço NetworkManager.

sudo service network-manager restart

Neste modo, o NetworkManager atualiza /etc/resolv.conf (ainda via resolvconf) para incluir os endereços de servidores de nomes que o NetworkManager possui para conexões ativas.

Se você deseja desabilitar o mecanismo resolvconf para atualizar o resolv.conf e apenas usar um arquivo resolv.conf estático, faça o seguinte.

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

informação relacionada