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. Digafgrep 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
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çonetwork
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 usarhead
- 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
/etc/resolv.conf
apontará para sua máquina, comdnsmasq
resolvendo nomes conforme configurado pelo NetworkManager .network-manager
.