gerenciador de rede: como parar o nm atualizando /etc/resolv.conf

26

Não quero que o gerente de rede adicione servidores DNS recebidos do DHCP ao meu /etc/resolv.conf.

Ao configurar a partir da GUI / Connections / IPV4 e escolher o método Automático (somente endereço), ele ainda adiciona servidores DNS recebidos via DHCP.

É possível fazer isso por conexão (ssid específico?)

user2913139
fonte
Se você escolher o método "Somente endereços automáticos (DHCP)", o NetworkManager não mudará ou não deverá alterar o resolv.conf ao ativar essa conexão. Se o NetworkManager de fato adicionar endereços ao resolv.conf, apesar da configuração "apenas endereços", haverá um erro no NetworkManager e você deverá reportá-lo usando a Barra de Ativação. Para impedir que o NetworkManager altere o resolv.conf, selecione "Somente endereços automáticos (DHCP)" em todas as configurações de conexão que se tornarem ativas no seu sistema.
Jdthood 18/05
1
Você pode usar a GUI nas configurações de IPv4 na conexão e escolher "apenas endereços adicionais" no modo, ou pode fazer o que quiser editando o arquivo de conexão correspondente em / etc / NetworkManager / system-connections / e adicionando ignore-auto -dns = linha verdadeira para a seção [ipv4].
Sasha Pachev

Respostas:

32

Uma maneira de impedir o Network Manager de adicionar servidores DNS ao /etc/resolv.confarquivo é fazer o seguinte:

Primeiro abra o arquivo nm conf /etc/NetworkManager/NetworkManager.conf:

sudo vim /etc/NetworkManager/NetworkManager.conf

E adicione isso à [main]seção:

dns=none

Salvar e sair.

krt
fonte
A seção principal é [main], não[Main]
AB
/etc/resolv.confnormalmente é um link simbólico - você tem certeza de que tornar imutável torna o destino do link também imutável?
muru 15/05
5
Isso não funciona para mim no Jessie debian
Dimitri Kopriwa
5
Isso não funciona no Ubuntu 18.04
LuizAngioletti 3/18
1
Eu tive que fazer isso sudo service network-manager restartantes da alteração no arquivo .conf entrar em vigor.
Chris Moore
3

Meu favorito pessoal é a utilização de linha supersede domain-name-serversno /etc/dhcp/dhclient.conf. Não importa o que o ponto de acesso DNS fornece, seu ubuntu sempre usará os DNS especificados emdhclient.conf

Amostra do meu arquivo

#send host-name "andare.fugue.com";
send host-name = gethostname();
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
supersede domain-name-servers 208.67.220.220;
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    dhcp6.name-servers, dhcp6.domain-search,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers,
    dhcp6.fqdn, dhcp6.sntp-servers;
#require subnet-mask, domain-name-servers;
Sergiy Kolodyazhnyy
fonte
criar uma linha como descrito (usando o servidor 8.8.8.8) não funciona no Ubuntu 18.04.
LuizAngioletti
3
O @LuizAngioletti 18.04 está usando um tipo diferente de aplicativo de gerenciamento de rede, chamado netplan. Esta resposta foi escrita para versões anteriores a 18.04. Eu posso atualizá-lo mais tarde, no entanto.
Sergiy Kolodyazhnyy 03/09/19
2

/etc/resolv.confestá vinculado a /run/resolvconf/resolv.conf. O NetworkManager não atualiza o /etc/resolv.conf diretamente (apenas atualiza /run/resolvconf/resolv.conf). Tão:

  • remover o link simbólico ( rm /etc/resolv.conf)
  • escreva sua própria versão do /etc/resolv.conf
Taha Jahangir
fonte
1
Eu sei que este é um fórum do ubuntu, mas enquanto pesquisava no centos, esse ainda era meu primeiro resultado no google, então postando comentários para futuros centos googlers. isso não resolveu meu problema no centos. Parece que o gerenciador de rede do centos está trabalhando diretamente no /etc/resolv.conf.
Tommy
Isso não é verdade para o Debian Stretch certamente. Ele remove seu arquivo e o substitui por outro link simbólico. Muito irritante.
HörmannHH
Aqui está um para o Fedora 25 (virtualizado) usando nmcli: /etc/sysconfig/network-scripts/ifcfg-ens3Vemos que o PEERDNS=yesque significa (nesse caso, errado) informações DNS são obtidas pelo DHCP e elas terminam em /etc/resolv.conf. Eu só quero 127.0.0.1 como servidor de nomes. nmcli con mod ens3 ipf4.ignore-auto.dns yesResultado em execução no PEERDNS=noarquivo de configuração da interface. No entanto /etc/resolv.confainda tem namseserverentrada perdida , por isso, se tiver que reiniciar a conexão nmcli con down ens3; nmcli con up ens3. Veja também: certdepot.net/rhel7-configure-ipv4-addresses
David Tonhofer 13/17
No Ubuntu 18.04, reiniciar o 'service network-manager restart' fará com que o NM substitua o /etc/resolv.conf, mesmo que seja um arquivo rígido e não um link simbólico.
LuizAngioletti
0

O que eu fiz no Debian Stretch:

  • rm /etc/resolv.conf ### (o link simbólico)
  • toque em /etc/resolv.conf
  • echo "nameserver xxxx" >> /etc/resolv.conf

Onde "xxxx" é o seu endereço IP do servidor DNS preferido, seja do OpenDNS, Google ou Cloudflare, por exemplo.

Obrigado pela ideia Taha Jahangir! Posso confirmar que sua sugestão funcionou para minha distribuição Debian Stretch

Emmanuel Supermanu15
fonte