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

14

Às vezes, troco de servidor DNS, usando o indicador NetworkManager na barra de tarefas; isso funcionou bem com versões anteriores e também funciona com a versã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 ela está sempre sendo exibida 127.0.0.1.

Eu procurei resolv.conf, que é onde ele encontra 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 conheço 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 essas informações são armazenadas agora?

Marty Fried
fonte

Respostas:

17

As informações são gerenciadas internamente pelo Network Manager. Você pode obter essas informações na linha de comando usando a nmcliferramenta 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 eth0pela 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ê procura desta saída.

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

James Henstridge
fonte
Muito obrigado, essas são algumas ótimas informações. Deve ser bem fácil criar um script de shell simples usando esse nmclicomando para listar vários parâmetros interessantes. Talvez eu possa criar algo útil e compartilhar em algum lugar. Eu realmente não achei que o Network Manager fosse necessário e suponho que possa haver maneiras alternativas para alguém fazer isso, mas isso funciona para mim.
Marty Fried
Bem, você pode ver que o servidor que está ouvindo 127.0.0.1é uma instância dnsmasqiniciada pelo Network Manager (consulte a saída de sudo netstat -tlnp). Mas é melhor pensar nisso como um detalhe de implementação e solicitar ao Network Manager as informações que você deseja, pois é ele quem toma a decisão aqui.
James Henstridge
Obrigado por fornecer informações tão boas. E também obrigado por editar minha pergunta - tentarei levar mais tempo no futuro. :) Minha desculpa é que eu tinha acabado de atualizar para 12.04 e estava fazendo pequenos incêndios em várias frentes. :)
Marty Fried
4
nmcli dev list ifacenão funciona para mim, mas nmcli dev showfunciona [ubuntu 15.04]
Beni Cherniavsky-Paskin
10

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

Aqui está uma lista de comandos rápidos para você começar.

  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
    
cmcginty
fonte
Um pouco mais de documentação: resolvconf (8), /usr/share/doc/resolvconf/README.gz.
Jdthood 29/10/12
4

Esteja ciente de que o uso do nmcli nem sempre pode fornecer a resposta completa. por exemplo, se você usar o 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), verá que ele ainda pode inserir automaticamente o Configurações de DNS da VPN em /etc/resolv.conf antes de 127.0.0.1. Nessa circunstância, apenas marcar (por exemplo) "nmcli -f IP4 dev list" não fornecerá a lista DNS atual verdadeira. Não tenho certeza se esse cenário o afeta, mas achei que vale a pena mencionar.

agd
fonte
Obrigado pela informação extra; é sempre bom aprender mais. Para o meu caso de uso, não preciso me preocupar com isso, pois quero saber principalmente qual dos dois endereços DNS possíveis está ativo.
Marty Fried
Se você estiver usando o gerenciador de rede para se conectar a uma VPN, qual comando deve fornecer o DNS? Os DNS estão funcionando, mas não consigo encontrá-los.
Jorge Suárez de Lis