Quais servidores DNS eu estou usando?


249

Como posso verificar qual servidor DNS estou usando (no Linux)? Estou usando o gerenciador de rede e uma conexão com fio à LAN da minha universidade. (Estou tentando descobrir por que meu domínio não foi resolvido)

Respostas:


207

Você deve obter algumas informações razoáveis ​​em:

$ cat /etc/resolv.conf 

26
No entanto, esteja ciente de que (no Linux moderno) o conteúdo /etc/nsswitch.confdita quais serviços de nome são usados ​​(DNS, LDAP, etc) e em que ordem. Diga fgrep hosts: /etc/nsswitch.conf. Se ele apenas fizer referência ao DNS, /etc/resolv.confé o lugar certo para procurar seus servidores de nomes. Mas é provável que você também esteja usando o mDNS (ZeroConf, Avahi, Bonjour etc.) etc. Nesse caso, as coisas dependem do que você está usando.
12138 Alexios

27
Esse arquivo normalmente aponta para 127.0.1.1 no Ubuntu - é o servidor de cache DNS local, não o upstream real.
Barry Kelly

2
@BarryKelly Verifique o seu roteador usa, então
Geremia

2
E se você tiver vários servidores upstream configurados? Como saber qual é usado atualmente?
22616 Sylvain Leroux

4
Veja as respostas por @ G32RW ou @Lonniebiz para uma abordagem mais robusta em várias circunstâncias, por exemplo, quando você receber uma resposta como127.0.0.53
nealmcb

194

Aqui está como eu faço:

nmcli dev show | grep DNS

Isso funcionou antes da maneira acima:

nm-tool | grep DNS

14
Este é útil se você estiver usando VPN e NetworkManager . Você /etc/resolv.confapontará para a sua máquina, com a dnsmasqresolução de nomes conforme configurado pelo NetworkManager .
Grzegorzur

6
No Debian, isso requer o network-managerpacote.
TranslucentCloud

2
nm-tool não está disponível em linuxes mais recentes. por exemplo, ele não está no pacote 'network-manager' do debian 8. #
don bright

2
Atualizei a resposta para refletir o que está funcionando para mim em 2016.
Lonniebiz 1/16/16

3
esta é a melhor resposta, nem sempre o resolve.conf mostra a verdade #
blade

72

Eu acho que você também pode consultar o DNS e ele mostrará qual servidor retornou o resultado. Tente o seguinte:

dig yourserver.somedomain.xyz

E a resposta deve informar quais servidores retornaram o resultado. A saída que você está interessado será mais ou menos assim:

;; Query time: 91 msec
;; SERVER: 172.xxx.xxx.xxx#53(172.xxx.xxx.xxx)
;; WHEN: Tue Apr 02 09:03:41 EDT 2019
;; MSG SIZE  rcvd: 207

Você também pode pedir digpara consultar um servidor DNS específico usandodig @server_ip


8
No Debian, isso requer o dnsutilspacote.
Faheem Mitha

6
Se você usar qualquer serviço de mascaramento / cache de DNS executado em sua máquina local, ele ocultará os servidores DNS reais.
Karateog

4
Ubuntu 18.04 só mostra o cache de DNS local:SERVER: 127.0.0.53#53(127.0.0.53)
wisbucky

58

Apenas faça um nslookup. Parte de seus resultados inclui o servidor que está usando.

No exemplo abaixo, mostra que o servidor DNS usado está em 8.8.8.8.

$ nslookup google.com
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.22.174

1
você pode dar um exemplo do que inserir no prompt?
chovy

Exemplo: $ nslookup www.google.com
Ren

7
No Debian, isso requer o dnsutilspacote.
Gayan Weerakutti 13/08/19

6
Em um Ubuntu recente, isso novamente aponta para o servidor de cache local 127.0.0.1, como já mencionado neste comentário
FriendFX 1/17/17

No CentOS 7, ele fecha com erro, mas é um vm, como fiz nslookup google.comno host do Windows e encontrei o servidor de nomes. Adicione-o /etc/resolv.confcomo: nameserver xx.xx.xx.xxe reinicie o serviço network, e tudo está bem. Te louvo.
WesternGun

55

Em sistemas executando systemd, use:

systemd-resolve --status

3
systemd-resolve: opção não reconhecida '--status'
Acumenos

@ABB system? versão systemd?
G32RW

229-4ubuntu21.2
Acumenos

11
Esta é a nova maneira padrão de fazer isso no Ubuntu 18.04 Bionic Beaver - se acostume com isso, pessoal!
AveryFreeman

5
Esta é a única solução que funcionou para mim, como os outros voltaram 127.0.0.53
greuze

13

Com o novo network-managercomando nmcli, faça o seguinte:

nmcli --fields ipv4.dns,ipv6.dns con show <connection_name>

Nas versões mais recentes do gerenciador de rede (como no Ubuntu 16.04), os nomes dos campos são ligeiramente diferentes:

nmcli --fields ip4.dns,ip6.dns con show <connection_name>

Se você não souber o nome da conexão, use:

nmcli -t --fields NAME con show --active

Por exemplo:

$ nmcli --fields ip4.dns,ip6.dns con show 'Wired connection 1'
IP4.DNS[1]:                             172.21.0.13
IP4.DNS[2]:                             172.21.0.4

Meus resultados: order «con» «show» is not valid.
Sopalajo de Arrierez

Funciona bem para mim com o gerenciador de rede 1.0.4 no Ubuntu 15.10. Talvez você tenha uma versão mais antiga?
Sameer

O formato tabular é muito ruim. Espero obter uma coluna como o formato semelhante ao Powershell.
CMCDragonkai

1
RetornaError: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
FriendFX

simplesmente nmcliera tudo que eu precisava no ubuntu 19.04
John Mee

9

para obter o primeiro servidor DNS (somente IP):

cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2
  • cat produzirá configuração de DNS
  • grep filtra apenas o servidor de nomes
  • head manterá apenas a primeira linha / instância
  • cut pegue a parte ip da linha (segunda coluna com '' como separador)

Para colocar o IP do DNS em uma variável de ambiente, você pode usar o seguinte:

export THEDNSSERVER=$(cat /etc/resolv.conf |grep -i '^nameserver'|head -n1|cut -d ' ' -f2)

2
grep -m 1pára correspondência após o primeiro jogo, assim você não tem que usarhead
sshow

Para clarear o gasoduto ainda mais, grupos de captura com Perl regexp é muito limpo, e grep leva um argumento do arquivo: grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf. Assim escreveu-se grupos de captura com grep perl expressão regular
sshow

8

Se você estiver usando o gerenciador de rede, provavelmente obterá todos os parâmetros de rede do servidor dhcp da sua universidade.

Se você não quiser usar seu shell para verificar suas configurações de DNS (como descrito por hesse e Alexios), poderá vê-las no painel "Informações da rede".

Você pode acessar esse painel pressionando o botão direito do mouse no ícone do gerenciador de rede e selecionando "Informações da conexão" no menu.


5

Usando resolvectl

$ resolvectl status | grep -1 'DNS Server'
    DNSSEC supported: no
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1
                      1.0.0.1

Por compatibilidade, systemd-resolveé um link simbólico para resolvectlmuitas distros como no Ubuntu 18.10:

$ type -a systemd-resolve
systemd-resolve is /usr/bin/systemd-resolve

$ ll /usr/bin/systemd-resolve
lrwxrwxrwx 1 root root 10 nov.  15 21:42 /usr/bin/systemd-resolve -> resolvectl

$ type -a resolvectl
resolvectl is /usr/bin/resolvectl

$ file /usr/bin/resolvectl
/usr/bin/resolvectl: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=09e488e849e3b988dd2ac93b024bbba18bb71814, stripped

funciona perfeitamente no Ubuntu 18.10.
Georgе Stoyanov 27/03

3

O comando

 nmcli dev list iface <interfacename> | grep IP4

Substitua "interfacename" pelo seu.

examlpe

 nmcli dev list iface eth0 | grep IP4

Isso listará todos os servidores DNS (se você usar mais de um).


nmcli dev list iface [devicename]é o comando correto
sebix 18/05/2015

Eu não tenho notado <interface> está escondido desde que eu uso <>
Maythux

1
No debian, recebo um erro --- $ nmcli dev list iface eth0 Erro: 'dev' command 'list' não é válido.
don bright

nmcli é um comando específico de RH.
Rui F Ribeiro

Esta é a resposta correta!
VAdaihiep 10/08/18

3

Eu tenho o Fedora 25 e também tive uma resposta lenta semelhante na linha de comando aos comandos do sudo.

nmcli dev show | grep DNS 

mostrou que apenas um dos meus três adaptadores (dois ativos) tinha entradas DNS. Adicionando entradas DNS ao único cartão ativo que não tinha uma entrada - pronto! Tudo é bom e o tempo de resposta é imediato.


talvez alternativamente
Amos Folarin 12/06


0

Uma vez que você acha que encontrou o seu DNS, você pode consultá-lo diretamente com dig: dig @<dns ip> <host to lookup>. Se funcionar, você deverá vê-lo depois SERVERcom um status de NOERROR.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.