Questão Linux NetworkManager não está escrevendo resolv.conf ou executando o dhclient


Eu estou em uma distribuição linux baseada no Ubuntu (linaro) rodando o xfce. Meu networkmanager se conecta a pontos de acesso sem fio, mas não consegue fazer duas coisas:

  • adquira dinamicamente um servidor de nomes e escreva uma dinâmica /etc/resolv.conf. Na verdade, seria ótimo se eu pudesse fazer isso para algumas redes específicas e usar um padrão /etc/resolv.conf em outras redes.
  • Meu navegador não redireciona para as páginas de login. Claramente, isso tem algo a ver com o problema do servidor de nomes.

Eu chequei meu /etc/dhcp/dhclient.conf e tem a linha request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.name-servers, dhcp6.sntp-servers; Então, se eu correr sudo dhclient <network inteface> reescreve o /etc/resolv.conf arquivo sem nenhum problema. Então, se eu "conectar manualmente" usando o wpa-suplicante e o dhclient, isso funciona perfeitamente. Então eu estou supondo que é um problema com o gerente de rede. O gerente de rede não usa o dhclient? Como faço para corrigir isso?


0


origem




Respostas:


No meu sistema (ubuntu 14.04), o /etc/resolv.conf é criado pelo pacote "resolvconf" (é instalado?) E é apenas um link simbólico para o arquivo ../run/resolvconf/resolv.conf.

O endereço IP em /etc/resolv.conf é um IP interno fictício. Para obter o endereço real do servidor de nomes, você pode usar "nm-tool" ou "nmcli device list iface eth0".

Qual método você escolheu em Network-mananger no endereço IPv4, "Automatic (DHCP)" ou "Automatic (DHCP) only". Eu acho que você tem que usar o primeiro.

Qual é a versão do seu sistema linaro e em qual versão do Ubuntu ele é baseado?


1





Acontece que as versões mais novas do NetworkManager usam um programa chamado dnsmasq como um resolvedor de DNS. Então, mesmo se você excluir o /etc/resolv.conf arquivo do seu sistema, o NetworkManager funcionará corretamente. De fato, o dnsmasq tem uma opção explícita para NÃO ler resolv.conf. Isto é o que meu NetworkManager geralmente executa com: dnsmasq --no-resolv Ele também tem um /var/run/nm-dns-dnsmasq.conf Arquivo. Isso é configurado usando arquivos no /etc/NetworkManager/dnsmasq.d/ Veja a documentação do dnsmasq para aprender mais sobre sua configuração. Parece ser uma ferramenta bastante poderosa.

dnsmasq pode ser desativado, removendo a linha dns=dnsmasq no /etc/NetworkManager/NetworkManager.conf Arquivo. Então - apesar de eu não ter testado - deve ser padrão o dhclient, baseado no que eu li na documentação do NetworkManager.

Outro problema possível foi que o /etc/NetworkManager/NetworkManager.conf tinha uma linha que dizia [ifupdown] managed=false Eu mudei isso para true, e o NetworkManager começou a funcionar novamente corretamente. As versões mais recentes do NetworkManager (em precisas e posteriores) também tendem a pausar por 60 segundos ou mais no começo com um waiting for network configuration mensagem durante a inicialização. Isso geralmente é causado por um erro de sintaxe no /etc/network/interfaces Arquivo. Eu consertei isso tendo apenas as seguintes linhas no arquivo auto lo iface lo inet loopback


0