TOC
Histórico
Se voce trabalha no suporte ou desenvolve soluções web, esse é um utilitário que você precisa conhecer. Ele permite para fazer pesquisa nos dados dos servidores DNS de forma muito simples.
Se você desenvolve soluções web e precisou confirmar se o servidor de email está configurado corretamente, o utilitário doggo pode ajudar a resolver o problema.
doggo é um utiltário de linha de comando desenvolvido em Goland que atua como cliente de um servidor DNS (como o dig, outro cliente de DNS). Sua informação é bastante concisa e amigável. Oferece suporte além dos normais, HTTPS (DoH) e TLS (DoT).
Ele foi inspirado no utilitário dog que foi desenvolvido em Rust, por isso o nome dog
+go
=> doggo.
Funcionalidades
- Oferece resultado amigável e com suporte cores and tabular(tabelas).
- Oferece suporte ao formato JSON que pode ser util em operações com scripts.
- Oferece suporte a multiplos protocolos de transporte:
- DNS over HTTPS (DoH)
- DNS over TLS (DoT)
- DNS over TCP
- DNS over UDP
- Oferece suporte ndots e configuração search pelo arquivo
resolv.conf
ou como parâmetro de linha de comando. - Oferece suporte a multiplos servidores de uma vez.
- Oferece suporte IPv4 e IPv6 ambos.
Instalação
Tem versão disponibilizada para diversas plataformas Linux, MacOS e Windows pelo site Doggo.
Para quem gosta de Linux ou faz uso da funcionalidade WSL do Windows 10:
$ cd "$(mktemp -d)" --> cria um diretório temporário no /tmp
$ curl -sL "https://github.com/mr-karan/doggo/releases/download/v0.2.0/doggo_0.2.0_linux_amd64.tar.gz" | tar xz --> baixa o arquivo com o utilitario curl(semelhante wget)
$ mv doggo /usr/local/bin --> move o arquivo doggo para o diretório /usr/local/bin
# doggo --> verificar se está no PATH
$ doggo
Exemplos de uso do comando doggo
Simples pesquisa no dominio mrkaran.dev
$ doggo mrkaran.dev
NAME TYPE CLASS TTL ADDRESS NAMESERVER
mrkaran.dev. A IN 20s 13.250.205.9 127.0.0.1:53
mrkaran.dev. A IN 20s 206.189.89.118 127.0.0.1:53
Pesquisa dos registros MX no dominio github.com
usando 9.9.9.9
como servidor de dns (resolver)
doggo MX github.com @9.9.9.9
NAME TYPE CLASS TTL ADDRESS NAMESERVER
github.com. MX IN 3600s 10 alt3.aspmx.l.google.com. 9.9.9.9:53
github.com. MX IN 3600s 5 alt1.aspmx.l.google.com. 9.9.9.9:53
github.com. MX IN 3600s 10 alt4.aspmx.l.google.com. 9.9.9.9:53
github.com. MX IN 3600s 5 alt2.aspmx.l.google.com. 9.9.9.9:53
github.com. MX IN 3600s 1 aspmx.l.google.com. 9.9.9.9:53
ou usando o parametro de linha de comando (-t):
$ doggo -t MX -n 9.9.9.9 github.com
NAME TYPE CLASS TTL ADDRESS NAMESERVER
github.com. MX IN 3600s 10 alt3.aspmx.l.google.com. 9.9.9.9:53
github.com. MX IN 3600s 5 alt1.aspmx.l.google.com. 9.9.9.9:53
github.com. MX IN 3600s 10 alt4.aspmx.l.google.com. 9.9.9.9:53
github.com. MX IN 3600s 5 alt2.aspmx.l.google.com. 9.9.9.9:53
github.com. MX IN 3600s 1 aspmx.l.google.com. 9.9.9.9:53
Pesquisa de registros no dominio archive.org
usando o servidor DNS Cloudflare e protocolo de transporte https (resolver)
$ doggo archive.org @https://cloudflare-dns.com/dns-query
NAME TYPE CLASS TTL ADDRESS NAMESERVER
archive.org. A IN 41s 207.241.224.2 https://cloudflare-dns.com/dns-query
Pesquisa de registros no dominio internetfreedom.in
com a saida no formato JSON
$ doggo internetfreedom.in --json | jq
{
"responses": {
"answers": [
{
"name": "internetfreedom.in.",
"type": "A",
"class": "IN",
"ttl": "22s",
"address": "104.27.158.96",
"rtt": "37ms",
"nameserver": "127.0.0.1:53"
},
{
"name": "internetfreedom.in.",
"type": "A",
"class": "IN",
"ttl": "22s",
"address": "104.27.159.96",
"rtt": "37ms",
"nameserver": "127.0.0.1:53"
},
{
"name": "internetfreedom.in.",
"type": "A",
"class": "IN",
"ttl": "22s",
"address": "172.67.202.77",
"rtt": "37ms",
"nameserver": "127.0.0.1:53"
}
],
"queries": [
{
"name": "internetfreedom.in.",
"type": "A",
"class": "IN"
}
]
}
}
Pesquisa de registros no dominio duckduckgo.com
e mostrando o RTT (Round Trip Time)
$ doggo duckduckgo.com --time
NAME TYPE CLASS TTL ADDRESS NAMESERVER TIME TAKEN
duckduckgo.com. A IN 30s 40.81.94.43 127.0.0.1:53 45ms
Parâmetros de Linha de Comando
Opções de Transporte (Comunicação)
Se nada estiver definido, o esquema padrão de comunicação com o servidor DNS é o protocolo udp
.
@udp:// eX: @1.1.1.1 initiates a UDP resolver for 1.1.1.1:53.
@tcp:// eX: @1.1.1.1 initiates a TCP resolver for 1.1.1.1:53.
@https:// eX: @https://cloudflare-dns.com/dns-query initiates a DOH resolver for Cloudflare DoH server.
@tls:// eX: @1.1.1.1 initiates a DoT resolver for 1.1.1.1:853.
Opções de pesquisa
-q, --query=HOSTNAME Hostname to query the DNS records for (eg mrkaran.dev).
-t, --type=TYPE Type of the DNS Record (A, MX, NS etc).
-n, --nameserver=ADDR Address of a specific nameserver to send queries to (9.9.9.9, 8.8.8.8 etc).
-c, --class=CLASS Network class of the DNS record (IN, CH, HS etc).
Opções de resolver
--ndots=INT Specify ndots parameter. Takes value from /etc/resolv.conf if using the system nameserver or 1 otherwise.
--search Use the search list defined in resolv.conf. Defaults to true. Set --search=false to disable search list.
--timeout Specify timeout (in seconds) for the resolver to return a response.
-4 --ipv4 Use IPv4 only.
-6 --ipv6 Use IPv6 only.
Opções de Saida
-J, --json Format the output as JSON.
--color Defaults to true. Set --color=false to disable colored output.
--debug Enable debug logging.
--time Shows how long the response took from the server.
Documentos
doggo Site do projeto doggo.
Links
- dig Testando o DNS com a Ferramenta dig do BIND.
Perguntas Mais Frequentes
*O doggo é gratuito? Sim.