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 é resolvido)

Resposta

Você deve ser capaz de obter algumas informações razoáveis em:

$ cat /etc/resolv.conf 

Comentários

  • No entanto, esteja ciente de que (no Linuxen moderno) o conteúdo de /etc/nsswitch.conf dita quais serviços de nome são usados (DNS, LDAP, etc) e em que ordem. Diga fgrep hosts: /etc/nsswitch.conf. Se ele fizer referência apenas a DNS, /etc/resolv.conf é o lugar certo para procurar seus servidores de nomes. Mas é provável que você ‘ também esteja usando mDNS (também conhecido como ZeroConf, também conhecido como Avahi, Bonjour etc.) etc. Nesse caso, as coisas dependem do que você ‘ está usando.
  • Este arquivo normalmente aponta para 127.0.1.1 no Ubuntu – ele ‘ é o servidor de cache DNS local, não o real upstream.
  • @BarryKelly Verifique o que seu roteador usa, então
  • E se você tiver vários servidores upstream configurados? Como saber qual é usado atualmente?
  • Veja as respostas de @ G32RW ou @Lonniebiz para uma abordagem mais robusta em várias circunstâncias, por exemplo, quando você obtiver uma resposta como 127.0.0.53

Resposta

Aqui “é como eu faço:

( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS 

Isso funcionou antes da maneira acima:

nm-tool | grep DNS 

No Debian, você precisa ter o pacote do gerenciador de rede instalado.

Comentários

  • Este é útil se você estiver usando VPN e NetworkManager . Seu /etc/resolv.conf apontará para sua máquina, com dnsmasq resolvendo nomes conforme configurado pelo NetworkManager .
  • No Debian, isso requer o pacote network-manager.
  • nm-tool não está disponível em linuxes mais novos. por exemplo, não está no ‘ gerenciador de rede ‘ pacote do debian 8.
  • I ‘ atualizamos a resposta para refletir o que está trabalhando para mim em 2016.
  • esta é a melhor resposta, resolve.conf nem sempre mostra a verdade

Resposta

Em sistemas que executam o systemd, use:

systemd-resolve --status 

Comentários

  • systemd-resolve: opção não reconhecida ‘ –status ‘
  • Diz Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.
  • Esta é a nova maneira padrão de fazer isso no Ubuntu 18.04 Bionic Beaver – se acostumar com isso, todos!
  • Esta é a única solução que funcionou para mim, visto que os outros retornaram 127.0.0.53
  • O que estou lendo? Só vejo registros DNSSEC.

Resposta

Acho que você também pode consultar o DNS e ele mostrará o que servidor retornou o resultado. Tente isto:

dig yourserver.somedomain.xyz 

E a resposta deve informar qual (is) servidor (es) retornaram o resultado. A saída em que você está interessado será semelhante a esta:

;; 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 dizer a dig para consultar um servidor DNS específico usando dig @server_ip

Comentários

  • No Debian, isso requer dnsutils.
  • Se você usar qualquer serviço de mascaramento / cache de DNS executado em sua máquina local, ele ocultará os servidores DNS reais.
  • Ubuntu 18.04 mostra apenas o cache dns local: SERVER: 127.0.0.53#53(127.0.0.53)

Resposta

Basta fazer um nslookup . Parte dos 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 

Comentários

  • você pode dar um exemplo do que inserir no prompt?
  • Exemplo: $ nslookup www.google.com
  • No Debian, isso requer o pacote dnsutils.
  • Em um Ubuntu recente, isso novamente aponta para o servidor de cache local 127.0.0.1 como já sugerido em este comentário
  • No CentOS 7 fecha com erro, mas é uma vm, então fiz nslookup google.com no host do Windows e encontrei o servidor de nomes. Adicione-o em /etc/resolv.conf como: nameserver xx.xx.xx.xx e reinicie o serviço network e está tudo bem. Louvado seja você.

Resposta

Com o novo comando network-manager nmcli, faça isso:

nmcli --fields ipv4.dns,ipv6.dns con show [connection_name] 

Em 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, em versões antigas do nmcli:

$ 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 

Comentários

  • Meus resultados : order «con» «show» is not valid.
  • Funciona bem para mim com o network-manager 1.0.4 no Ubuntu 15.10. Talvez você tenha uma versão mais antiga?
  • O formato tabular é muito ruim. Espero obter um formato de coluna semelhante ao Powershell.
  • Retorna Error: invalid field 'ip4.dns'; allowed fields: NAME,UUID,TYPE,TIMESTAMP,TIMESTAMP-REAL,AUTOCONNECT,AUTOCONNECT-PRIORITY,READONLY,DBUS-PATH,ACTIVE,DEVICE,STATE,ACTIVE-PATH.
  • simplesmente nmcli era tudo que eu precisava no ubuntu 19.04

Resposta

para obter o primeiro SERVIDOR DNS (somente IP):

  • cat produzirá a configuração DNS
  • grep apenas filtros nameserver
  • head manterá apenas a primeira linha / instância
  • cut pegar o ip parte da linha (segunda coluna com “” como separador)

Para colocar ip 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) 

Comentários

  • grep -m 1 interrompe a correspondência após a primeira correspondência para que você não ‘ t preciso usar head
  • Para tornar o pipeline ainda mais leve, capturar grupos com regexp Perl é muito legal e grep pega um arquivo argumento: grep -Pom 1 '^nameserver \K\S+' /etc/resolv.conf. Acabei de escrever Grupos de captura com expressão regular grep perl
  • Há ‘ ambos IPv4 e Servidores DNS IPv6. Além disso, os servidores secundários existem por um motivo. Qual deles este comando retorna? É aconselhável pegar o primeiro e simplesmente ignorar os outros?

Resposta

Se você estiver usando gerenciador de rede provavelmente você obtém todos os parâmetros de rede de seu servidor dhcp em sua universidade.

Se você não quiser usar seu shell para verificar suas configurações de DNS (conforme descrito por Hesse e Alexios), você pode vê-los no painel “Informações de rede”.

Você pode chegar a este painel pressionando o botão direito do mouse no ícone do gerenciador de rede e selecionando “Informações de conexão” no menu.

Resposta

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 

Para compatibilidade, systemd-resolve é um link simbólico para resolvectl em muitas distros como para 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 

Comentários

  • funciona perfeitamente no Ubuntu 18.10.

Resposta

Eu Fed ora 25 e também teve resposta lenta semelhante na linha de comando para comandos sudo.

nmcli dev show | grep DNS 

mostrou que apenas um dos meus 3 adaptadores (dois ativos) tinha entradas DNS. Adicionando entradas DNS a um cartão ativo que não tinha uma entrada – pronto! Tudo está certo e o tempo de resposta é imediato.

Comentários

  • talvez alternativamente

Resposta

No Ubuntu> = 15

nmcli device show <interfacename> | grep IP4.DNS 

Substitua <interfacename> pelo seu.

No Ubuntu < = 14

O comando

 nmcli dev list iface <interfacename> | grep IP4 

Substitua <interfacename> pelo seu.

Exemplos

 nmcli device show eth0 | grep IP4.DNS 

Ou

 nmcli dev list iface eth0 | grep IP4 

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

Comentários

  • nmcli dev list iface [devicename] é o comando correto
  • I Haven ‘ t notado < interface > está oculta porque eu uso < >
  • No debian, recebo um erro — $ nmcli dev li st iface eth0 Erro: ‘ dev ‘ command ‘ list ‘ não é válido.
  • nmcli é um comando específico de RH.
  • Esta é a resposta correta!

Resposta

Em um Fedora 33 recente, você pode apenas usar

# resolvectl dns Global: Link 2 (enp0s31f6): Link 3 (wlp4s0): 1.1.1.1 8.8.8.8 Link 4 (virbr0): Link 5 (virbr0-nic): 

Para verificar se systemd-resolved está ativo, cat /etc/resolv.conf Ele dirá quem está controlando o arquivo.

Se você quiser mais detalhes, você pode usar resolvectl status resolvectl statistics, você também pode liberar caches …

Para solucionar o problema, você pode usar journalctl -u systemd-resolved -f -o cat | grep Looking depois de definir o nível para DEBUG: sudo resolvectl log-level debug

Resposta

No CentOS, você pode usar:

/usr/sbin/named -v 

Resposta

Em sistemas onde systemd-resolved NÃO está instalado:

 $ host -v something.unknown | awk -F "[ #]" "/Received /{print$5}" | uniq 192.168.1.1  

Em sistemas onde NetworkManager está em execução:

$ ( nmcli -f IP4.DNS,IP6.DNS dev list || nmcli -f IP4.DNS,IP6.DNS dev show ) 2>/dev/null | awk "/DNS/{print$NF}" 192.168.1.1 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *