Como fazer com que o NetworkManager adicione um servidor DNS na parte superior do /etc/resolv.conf?

11

No momento, meu /etc/resolv.conf está assim:

# Generated by NetworkManager
nameserver 10.165.246.33
nameserver 192.135.82.60
nameserver 10.165.74.2

Os dois primeiros servidores de nomes são configurados automaticamente através do DHCP; o último é o que eu adicionei manualmente, no NetworkManager. É também o mais importante, pois resolve nossos nomes de domínio internos (por exemplo build-server-17.our-company-domain.com).

O problema é que o NetworkManager o adiciona na parte inferior do arquivo/etc/resolv.conf . Assim, ao acessar um URL da intranet, meu navegador tenta resolvê-lo usando os dois primeiros servidores, e leva tempo.

Como faço para o NetworkManager adicionar o servidor DNS configurado manualmente antes dos servidores configurados automaticamente?

Usuário iniciante no Linux
fonte
1
Em geral, todos os servidores DNS no seu resolv.conf devem retornar os mesmos resultados. Tendo servidores mistos, há uma receita para falhas intermitentes e muita dor.
Philip Kendall

Respostas:

3

Não vejo qual sistema endereçar especificamente, mas se o seu estiver sendo usado resolvconf, tente o seguinte como root ( su -ou sudo -i):

echo 'nameserver 10.165.74.2' >> /etc/resolvconf/resolv.conf.d/head
resolvconf -u

Há um aviso nesse arquivo que afirma que as alterações manuais serão substituídas; mas, no contexto, a mensagem se aplica a /etc/resolv.conf, não /etc/resolvconf/resolv.conf.d/head.

Isso deve colocar o servidor de nomes desejado primeiro na lista. Obviamente, se isso funcionar no seu sistema operacional, 10.165.74.2 poderá ser removido do NetworkManager.

O resolvedor local dnsmasqtambém é um excelente caminho a seguir. Usando dnsmasq, pode-se utilizar muito mais controle sobre DNS e DHCP. Por exemplo, nesse cenário, é dnsmasqpossível consultar um servidor de nomes específico com base em um nome de domínio especificado com sua serveropção Veja dnsmasq.confabaixo um trecho referente ao seu objetivo.

# Add other name servers here, with domain specs if they are for
# non-public domains.
server=/our-company-domain.com/10.165.74.2

Atualizar

Obrigado por mencionar o sistema operacional. No CentOS 7, existem muitos métodos. Na GUI, clique em Aplicativos> Ferramentas do Sistema> Configurações> Rede. Selecione uma conexão para configurar.

CentOS 7 NetworkManager - Configurar conexão

Desative o DNS automático e forneça servidores de nomes. Aplique a configuração.

CentOS 7 NetworkManager - Aplicar configurações de DNS estático

Na próxima vez em que o NetworkManager iniciar essa conexão, ele gravará os valores personalizados. (Durante o teste, desliguei a rede e liguei novamente porque tinha duas conexões de rede.)

De acordo com a documentação ,

  1. Está disponível uma interface de usuário de texto (TUI) baseada em maldições simples para o NetworkManager, nmtui.
  2. Uma ferramenta de linha de comando, nmcli, é fornecida para permitir que usuários e scripts interajam com o NetworkManager. Observe que o nmcli pode ser usado em sistemas sem GUI, como servidores, para controlar todos os aspectos do NetworkManager. Está em pé de igualdade com as ferramentas da GUI.

Em particular, a nmcli documentação parecia muito boa.

Christopher
fonte
1
Desculpe, é o CentOS, que não possui resolvconfpacote. dnsmasqparece ser uma boa solução, no entanto.
Usuário
8

Criei acidentalmente uma pergunta duplicada aqui . A resposta está lá, mas essencialmente, você precisa criar:

/etc/dhcp/dhclient.conf

se ainda não existir, e adicione:

prepend domain-name-servers [ip address of server];

Não esqueça o ponto e vírgula no final!

Depois disso, simplesmente reiniciar automaticamente moveu a linha 'nameserver [endereço IP do servidor]' no '/etc/resolv.conf' até o topo!

alfreema
fonte
Maravilhoso! Esse é o back-end usado pelo NetworkManager e a única maneira de fazer isso funcionar com todas as conexões wifi (não estáticas). obrigado !
Adrien M.
0

Há outra maneira, não há necessidade de desativar o NetworkManager.service. Basta definir ifcfg-idevice:

PEERDNS=no
DNS1=10.165.74.2
DNS2=OTHERDNS
DOMAIN=DEMO.COM

Você não precisa definir as configurações do /etc/NetworkManager/NetworkManager.conf, como:

[main]
dns=none
user1437464
fonte