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)

Grzenio
fonte

Respostas:

207

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

$ cat /etc/resolv.conf 

fonte
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
Lonniebiz
fonte
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

Freiheit
fonte
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
Sam
fonte
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
G32RW
fonte
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
Sameer
fonte
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)
boly38
fonte
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.

tombolinux
fonte
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
olibre
fonte
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).

Maythux
fonte
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.

CRTLBREAK
fonte
talvez alternativamente
Amos Folarin 12/06
0

No CentOS, você pode usar:

/usr/sbin/named -v
Miloud Eloumri
fonte
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.

ohlemacher
fonte