Como descobrir qual servidor DNS meu wlan0 está usando o Kubuntu 15.04

2

ANTECEDENTES

Estou tentando descobrir qual servidor DNS está sendo usado quando me conecto à Internet com meu dispositivo wlan0. Estou executando o Kubuntu 15.04.

Eu procurei em volta e tentei algumas soluções, nenhuma das quais funciona para mim. Aqui está o que eu tentei:

1. Usando o comando nmcli

nmcli dev list | grep DNS

como por uma resposta à pergunta semelhante perguntou aqui.

Isso foi marcado como a resposta para o OP, mas para mim eu apenas recebo a seguinte saída:

  

Erro: 'dev' command 'list' não é válido.

2. Lendo o resolv.conf:

cat /etc/resolv.conf

Isso não me fornece as informações de DNS para minha conexão.

  1. Usando a nm-tool

A nm-tool não parece estar instalada no meu sistema. Então essa não é a resposta correta para mim.

  1. Usando o dnsmasq

Existem algumas respostas que envolvem o uso do dnsmasq. Mas, em todos os casos, não entendi a resposta o suficiente para usá-la e não sei o que é dnsmasq.

PERGUNTA

Como eu descubro qual DNS uma conexão está usando, via linha de comando ou GUI, com o Kubuntu 15.04?

[EDITAR]

Parece que tive dificuldade em articular essa questão, porque muitas pessoas forneceram respostas que - embora corretas - não são exatamente as respostas para a pergunta que eu tinha em mente. Aqui está minha tentativa de esclarecimento:

As respostas fornecidas até agora simplesmente me dão o endereço do meu roteador, porque meu roteador é responsável por fornecer a conexão à Internet. Mas a questão que eu realmente tinha em mente era; que servidor DNS internet é usado quando digito, por exemplo, "www.google.com" em um navegador de internet?

Eu achei que isso seria relativamente fácil de descobrir, principalmente porque é fácil ditar qual servidor DNS da Internet é usado por mim mesmo. Eu posso, por exemplo, abrir minhas configurações de conexão e dizer para usar o 8.8.8.8 para DNS, que é o servidor DNS público do Google. Minha pergunta, então, é; se eu não ditar nenhum servidor DNS específico e deixar o roteador usar o que for atribuído, como descobrir qual servidor (es) DNS está usando?

    
por Brian J Hoskins 05.08.2015 / 15:42

4 respostas

4

Com o nmcli, você pode verificar com quais servidores de DNS o dnsmasq está configurado:

nmcli dev show wlan0 | grep -i dns

Um exemplo seria:

$ nmcli dev show wlan0 | grep -i dns
IP4.DNS[1]:                             10.11.12.1
IP4.DNS[2]:                             10.11.13.1
    
por mgor 06.08.2015 / 06:52
1

Atualização : Conforme revelado nos comentários abaixo da pergunta, o OP deseja conhecer o servidor DNS usado pelo roteador. Se você usar conexão automática, todas as respostas dadas aqui informarão o endereço do seu roteador, o que significa que as solicitações vão para o seu roteador primeiro. O roteador, por sua vez, possui suas próprias configurações, que encaminham qualquer solicitação de DNS enviada ao DNS do roteador.

Descobrir qual servidor DNS é usado em um roteador só é possível se você acessar as configurações do seu roteador, normalmente para roteadores residenciais através de 192.168.0.1 .

TL; DR : Versão 1 - verifique o syslog. Versão 2 - envie pacotes com nslookup ou dig e veja onde eles vão; resposta mais avançada e técnica, mas definitivamente mais divertido e na minha opinião é um pouco mais confiável.

As outras respostas postadas acima são ótimas e funcionam 99% do tempo. Nesta resposta, gostaria de fornecer uma solução um pouco mais alternativa e mais técnica com nslookup . Outra solução mais simples é verificar /var/log/syslog .

O método syslog

O método simples é pesquisar com a ferramenta grep para using nameserver string em /var/log/syslog/ :

$ sudo grep 'using nameserver' /var/log/syslog                                                                                                     
Aug  6 02:25:34 ******** dnsmasq[1487]: using nameserver 208.67.220.220#53

O método tcpdump e nslookup

Aqui não é um método tão simples, mas talvez mais confiável. Uma vez que observar onde os pedidos de dns irão nos dirá qual é o verdadeiro servidor dns, podemos fazer exatamente isso. Existe uma ferramenta como tcpdump . É usado para analisar os pacotes enviados pelos adaptadores de internet. Freqüentemente, essa ferramenta é usada no teste de caneta. Para nosso modesto propósito de determinar o dns, precisamos apenas fazer duas coisas - executar ao mesmo tempo tcpdump e usar outra ferramenta nslookup (o que realmente ajuda a procurar nomes de domínio usando o servidor dns do sistema). Especificamente, queremos procurar por pacotes que vão para .domain destinos. Por exemplo, executo sudo tcpdump -c 50 -i wlan0 > tcpdump-result.txt para capturar 50 pacotes do meu adaptador sem fio e, imediatamente, vou para outra guia do terminal e execute nslookup google.com . Por conveniência eu também imprimo tcpdump result para um arquivo tcpdump-result.txt

Agora, usando um pouco de conhecimento de ferramentas como grep e awk , eu filtro as informações desejadas sobre .domain :

$ awk '/.domain/ {gsub("my-host-name","****");print}' tcpdump-result.txt                                                                 
01:49:48.811363 IP ****.local.29258 > 192.168.0.1.domain: 11608+ PTR? 69.0.168.192.in-addr.arpa. (43)
01:49:49.095361 IP ****.local.44184 > google-public-dns.domain: 9560+ A? google.com. (28)
01:49:49.139361 IP google-public-dns.domain > ****.local.44184: 9560 1/0/0 A 216.58.217.46 (44)

Como você pode ver, minha solicitação vai para 192.168.0.1, que é meu roteador doméstico. Portanto, isso significa que você está usando o servidor DNS que o seu provedor de serviços de Internet atribuiu a você.

Agora, e se mudarmos o DNS e fizermos tudo de novo?

$ awk '/.domain/ {gsub("my-hostname","****");print}' tcpdump-result2.txt                                                                
02:05:35.885670 IP ****.local.51056 > resolver2.opendns.com.domain: 2511+ A? google.com. (28)
02:05:36.189665 IP ****.local.5503 > 192.168.0.1.domain: 63991+ PTR? 220.220.67.208.in-addr.arpa. (45)
02:05:36.237664 IP 192.168.0.1.domain > ****.local.5503: 63991 1/0/0 PTR resolver2.opendns.com. (80)
02:05:36.241664 IP ****.local.27776 > 192.168.0.1.domain: 58334+ PTR? 69.0.168.192.in-addr.arpa. (43)

Agora meus pedidos vão para o Open! Mas qual IP especificamente?

ping resolv2.opendns.com

PING resolver2.opendns.com (208.67.220.220) 56(84) bytes of data.
64 bytes from resolver2.opendns.com (208.67.220.220): icmp_seq=1 ttl=57 time=59.9 ms
64 bytes from resolver2.opendns.com (208.67.220.220): icmp_seq=2 ttl=57 time=55.9 ms
^C
--- resolver2.opendns.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 55.999/57.999/59.999/2.000 ms

Como você pode ver, vai para 208.67.220.220

    
por Sergiy Kolodyazhnyy 06.08.2015 / 10:11
0

Aqui estão duas maneiras:

$ 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.1.1         **<--Server**
search localdomain

ou

$ dig localhost

; <<>> DiG 9.9.5-3ubuntu0.4-Ubuntu <<>> localhost
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47070
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;localhost.         IN  A

;; ANSWER SECTION:
localhost.      0   IN  A   127.0.0.1

;; Query time: 1 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)         **<--Server**
;; WHEN: Wed Aug 05 11:30:10 EDT 2015
;; MSG SIZE  rcvd: 54

Acontece que a pergunta era "Gostaria de descobrir quais servidores DNS estão sendo usados quando uso minha conexão com a Internet para resolver um nome de host para um ip. Por exemplo, quando uso meu navegador da Internet para navegar até www.amazon .com, qual servidor DNS traduz isso em um ip ".

Agora, a resposta é:

Para uma conexão existente, você não pode. A resolução do endereço DNS aconteceu e acabou antes que você possa abrir a conexão.

Para ver quais servidores de nomes são usados para resolver uma consulta DNS, você pode dig +trace @$( grep nameserver /etc/resolv.conf| awk '{print }' | head -n1 ) amazon.com

dig é do pacote dnsutils .

    
por waltinator 05.08.2015 / 17:34
0

Para mostrar todo o DNS de cada dispositivo de rede, exceto lo :

for i in /sys/class/net/*; do \
    awk -F/ '! /lo/ {system("nmcli dev show "$(NF)" | grep \"DNS\|DEVICE\"")}' <<< "$i"; \
done

Exemplo de saída

GENERAL.DEVICE:                         eth0
IP4.DNS[1]:                             192.168.20.1    
    
por A.B. 06.08.2015 / 08:35