Linha de comando para listar servidores DNS usados pelo meu sistema

206

Existe um comando para listar servidores DNS usados pelo meu sistema?

Eu tentei

$ cat /etc/resolv.conf 
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
$ cat /etc/network/interfaces 
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

Mas ele não lista nenhum servidor, se eu for para "Network Manager GUI Tool", na seção Wireless ele listará "DNS 192.168.1.1 8.8.8.8 8.8.4.4"

Posso obter as mesmas informações na linha de comando?

Estou usando o Ubuntu 12.04 LTS

    
por Anurag Uniyal 18.06.2012 / 16:36
fonte

8 respostas

205

O resolv.conf não é mais usado, a menos que você mesmo o implemente. O gerente de rede faz isso agora. Eu criei um alias para listar os servidores DNS no meu sistema, como às vezes mudo do OpenDNS para o DNS aberto do Google.

Ubuntu > = 15

nmcli device show <interfacename> | grep IP4.DNS

Ubuntu < = 14

nmcli dev list iface <interfacename> | grep IP4

No meu caso, <interfacename> é eth0 , o que é comum, mas nem sempre é o caso.

Veja se é isso que você quer.

EDITAR:

Eu acho que o resolv.conf é realmente usado indiretamente, porque o gerenciador de rede cria o servidor que atende no 127.0.0.1, mas me disseram que este é um detalhe de implementação que não deve ser contado. Eu acho que se você digitar endereços DNS antes desta entrada, eles podem se acostumar, mas não sei exatamente como isso funciona. Acho que é melhor usar o gerenciador de rede na maioria dos casos, quando possível.

    
por Marty Fried 18.06.2012 / 17:20
fonte
82

Isso é válido para o Ubuntu 13.10 e versões anteriores. Para o Ubuntu 14.04 e acima, veja resposta de Koala Yeung para: Como saber qual DNS eu estou usando no Ubuntu a partir de 14.04 em diante

Use

nm-tool

Você receberá uma saída semelhante a

NetworkManager Tool

State: connected (global)

- Device: eth0  [Wired connection 1] -------------------------------------------
  Type:              Wired
  Driver:            e1000e
  State:             connected
  Default:           yes
  HW Address:        00:11:22:33:44:55

  Capabilities:
    Carrier Detect:  yes
    Speed:           1000 Mb/s

  Wired Properties
    Carrier:         on

  IPv4 Settings:
    Address:         10.21.6.13
    Prefix:          24 (255.255.255.0)
    Gateway:         10.21.6.1

    DNS:             10.22.5.133
    DNS:             10.22.5.3

Ou para ver apenas o DNS

nm-tool | grep DNS
    
por tgm4883 18.06.2012 / 17:22
fonte
34

As duas respostas de pontuação máxima, nmcli dev list iface <interfacename> | grep IP4 e nm-tool , supõem que o gerenciador de rede está no controle. Qual é - em computadores desktop na maioria das vezes, pelo menos. Mas a resposta mais completa é que às vezes o gerenciador de rede não está no controle. Por exemplo. vpnc mexe com /etc/resolv.conf diretamente.

Então: Primeiro, verifique se 127.0.0.1/localhost é usado. Isso pode ser feito com dig :

> dig something.unknown  | grep SERVER:
;; SERVER: 127.0.0.1#53(127.0.0.1)

Agora você sabe que nós estamos usando o localhost. Vá em frente com uma das respostas populares. Eu gosto:

> nm-tool | grep DNS:
    DNS:             8.8.8.8

Mas se 127.0.0.1/localhost não for usado, então nm-tool e nmcli serão enganosos:

> dig something.unknown  | grep SERVER:
;; SERVER: 172.22.216.251#53(172.22.216.251)
> nm-tool | grep DNS:
    DNS:             8.8.8.8

Aqui, dig está correto e as informações de nm-tool são enganosas. Na realidade, os endereços locais para o ambiente em que eu estou VPN foram resolvidos corretamente. Tudo o que o DNS 8.8.8.8 do Google não conhece .

Isso ocorre porque, depois de se conectar a uma VPN com vpnc , ela coloca uma linha em /etc/resolv.conf , por isso parece:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 1.2.3.4
nameserver 127.0.0.1
search MyDomain
    
por Peter V. Mørch 28.05.2015 / 21:19
fonte
30

cat /etc/resolv.conf deve mostrar seus servidores DNS.

Você não pode modificar o resolv.conf diretamente com o Ubuntu 12.04. Se você precisar alterá-las, você pode adicionar novos servidores DNS em seu /etc/network/interfaces , adicionando o seguinte:

 dns-nameservers x.x.x.x x.x.x.x

onde x são os servidores DNS que você deseja usar.

Se eu fosse você, eu desinstalaria network-manager . Na minha opinião, é uma pilha de porcaria.

Você pode realizar tudo o que precisa fazer manualmente sem se preocupar em alterar suas configurações, especialmente se tiver várias NICs no computador.

    
por ssc 03.05.2013 / 17:27
fonte
10

versão nmcli 0.9.10

Você pode usar um desses comandos:

nmcli -t -f IP4.DNS device show eth0
IP4.DNS[1]:192.168.1.1
IP4.DNS[2]:8.8.8.8

nmcli -t -f IP4.DNS connection show conn-name
IP4.DNS[1]:192.168.1.1
IP4.DNS[2]:8.8.8.8
    
por iman 19.08.2015 / 12:03
fonte
3

No Ubuntu 18.04 você pode usar systemd-resolve --status

    
por PLA 27.09.2018 / 21:29
fonte
2

No Ubuntu 15.10 você pode obter DNS

nmcli device show <interface name> 
    
por Suleman 02.03.2016 / 19:09
fonte
0

Parece ser gerenciado pelo gerente de rede. Dê uma olhada aqui link

para uma grande explicação.

Ou a versão curta para procurar

 /etc/NetworkManager/NetworkManager.conf

ou

 <SYSCONFDIR>/NetworkManager/NetworkManager.conf
    
por mbs 18.06.2012 / 16:46
fonte