O endereço do servidor DNS não está mais armazenado no resolv.conf; onde está agora?

13

Às vezes, alterno os servidores DNS usando o indicador NetworkManager na barra de tarefas; isso funcionou bem com as versões anteriores e funciona bem com o 12.04, exceto por uma coisa: eu uso o Conky para exibir algumas informações do sistema, incluindo o endereço DNS, e notei que agora ele está sempre exibindo 127.0.0.1 .

Eu olhei em resolv.conf , que é onde ele recebe esse endereço e, com certeza, é o que sempre diz. Eu tenho uma única linha, com a advertência de não editar o arquivo manualmente:

nameserver 127.0.0.1

A única maneira que sei de verificar o endereço do servidor DNS agora é abrir a GUI do gerenciador de rede para verificar a página de informações. Então, onde esta informação é armazenada agora?

    
por Marty Fried 01.05.2012 / 06:48

3 respostas

17

As informações são gerenciadas internamente pelo Network Manager. Você pode obter essas informações na linha de comando usando a ferramenta nmcli incluída.

Você pode recuperar as informações do Network Manager para uma interface de rede específica com o seguinte comando:

nmcli dev list iface eth0

(substitua eth0 pela interface com a qual você está se conectando). A saída incluirá informações sobre a interface e a conexão atualmente ativa nessa interface:

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           802-3-ethernet
...
IP4.DNS[1]:                             192.168.0.1
...

Não deve ser muito difícil extrair as informações que você está depois desta saída.

Se você precisar de um método programático de acesso a esses dados que não dependa da saída de nmcli , essas informações também devem estar disponíveis na interface D-Bus do Network Manager.

    
por James Henstridge 01.05.2012 / 07:20
10

Os desenvolvedores do Ubuntu devem documentar essas alterações em /etc/resolv.conf , mas não o fizeram.

Aqui está uma lista de comandos rápidos para você seguir em frente.

  1. Mostrar os servidores DNS atuais

    nm-tool | grep DNS
    
  2. Defina um servidor DNS estático em /etc/dhcp/dhclient.conf . Adicione a seguinte linha e reinicie o resolvedor local:

    supersede domain-search "sub.mydomain.com", "domain.com";
    prepend domain-name-servers 192.168.0.1;
    

    No prompt de comando:

    invoke-rc.d network-manager restart
    
por cmcginty 08.08.2012 / 03:34
4

Esteja ciente de que o uso do nmcli nem sempre lhe dará a resposta completa. por exemplo. Se você usar openconnect (ou vpnc, presumivelmente) para iniciar uma VPN, e se você tiver o pacote resolvconf instalado (para cuidar do gerenciamento automático do /etc/resolv.conf), você verá que ele ainda pode inserir automaticamente as VPNs. Configurações de DNS em /etc/resolv.conf à frente de 127.0.0.1. Nessa circunstância, apenas verificar (por exemplo) "nmcli -f IP4 dev list" não fornecerá a verdadeira lista atual de DNS. Não tenho certeza se esse cenário afeta você, mas acho que vale a pena mencionar.

    
por agd 07.05.2012 / 15:22