Como fazer o NetworkManager adicionar um servidor DNS no topo do /etc/resolv.conf?

8

Neste momento, meu /etc/resolv.conf tem esta aparência:

# 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 por meio do DHCP; o último é aquele que adicionei manualmente, no NetworkManager. É também o mais importante, pois resolve nossos nomes de domínios internos (por exemplo, build-server-17.our-company-domain.com ).

O problema é que o NetworkManager o adiciona à parte inferior de /etc/resolv.conf , portanto, ao acessar uma URL da intranet, meu navegador tenta resolvê-lo usando os dois primeiros servidores e leva tempo. / p>

Como faço o NetworkManager adicionar o servidor DNS configurado manualmente antes dos que foram configurados automaticamente?

    
por Newbie Linux User 15.11.2016 / 17:00

3 respostas

2

Eu não vejo qual sistema abordar especificamente, mas se o seu está usando 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 sobrescritas; 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 em primeiro lugar na lista. É claro que, se isso funcionar no seu sistema operacional, o 10.165.74.2 poderá ser removido do NetworkManager.

O resolvedor local, dnsmasq , também é um excelente caminho a seguir. Usando dnsmasq , pode-se utilizar muito mais controle sobre DNS e DHCP. Por exemplo, neste cenário, dnsmasq pode consultar um servidor de nomes específico com base em um nome de domínio especificado com sua opção server . Veja um snippet de dnsmasq.conf que pode pertencer ao seu objetivo abaixo.

# 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.

DesativeoDNSautomáticoeforneçaservidoresdenomes.Apliqueaconfiguração.

NapróximavezqueoNetworkManageriniciaressaconexão,elegravaráosvalorespersonalizados.(Duranteoteste,desligueiaredeeligueinovamenteporquetinhaduasconexõesderede.)

Deacordocoma documentação ,

  1. A simple curses-based text user interface (TUI) for NetworkManager, nmtui, is available.
  2. A command-line tool, nmcli, is provided to allow users and scripts to interact with NetworkManager. Note that nmcli can be used on GUI-less systems like servers to control all aspects of NetworkManager. It is on an equal footing with the GUI tools.

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

    
por 15.11.2016 / 19:54
7

Eu acidentalmente criei uma pergunta duplicada aqui . A resposta está aí, 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 se esqueça do ponto e vírgula no final!

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

    
por 14.08.2017 / 20:16
0

Existe 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
    
por 18.07.2018 / 05:45