<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>mindnodes &amp;mdash; archives</title>
    <link>https://blogs.gutocarvalho.net/archives/tag:mindnodes</link>
    <description></description>
    <pubDate>Tue, 21 Apr 2026 11:25:05 +0000</pubDate>
    <item>
      <title>Dig Crash Course</title>
      <link>https://blogs.gutocarvalho.net/archives/dig-crash-course</link>
      <description>&lt;![CDATA[DIG Crash Course&#xA;&#xA;O DIG é uma ferramenta para interrogar servidores de DNS.&#xA;&#xA;Com o DIG nós conseguiremos fazer lookup de DNS com objetivos simples como troubleshooting por exemplo.&#xA;&#xA;A ideia aqui é fazer um crash course dessa ferramenta. &#xA;&#xA;Um Crash Course é um tipo de &#34;curso rápido&#34; sobre um determinado assunto, indo direto ao ponto de forma mais objetiva possível.&#xA;&#xA;Quando devo usar o DIG?&#xA;&#xA;Sempre que você precisar verificar alguma coisa em nível de DNS, seguem alguns cenários que o DIG pode te ajudar :&#xA;&#xA;para testar se a resolução de DNS está funcionando&#xA;para comparar a resolução de DNS entre NS diferentes&#xA;quando precisamos resolver um problema de DNS&#xA;para descobrir o IP de um registro de DNS&#xA;para descobrir o MX de um domínio&#xA;para descobrir o NS de um domínio&#xA;para descobrir o SOA de um domínio&#xA;para descobrir o PTR (reverso) de um endereço IP&#xA;para verificar se uma alteração de registro já fez efeito&#xA;&#xA;Essas são algumas das situações mais básicas em que o DIG pode ser útil.&#xA;&#xA;Para quem foi feito esse post?&#xA;&#xA;Aqui o foco está nas pessoas atuando nas posições abaixo:&#xA;&#xA;Sysadmin;&#xA;Cloud Native Engineer;&#xA;Cloud Engineer;&#xA;DevOps Engineer;&#xA;Plataform Engineer;&#xA;GitOps Engineer.&#xA;&#xA;Momento Merchan :P&#xA;&#xA;Me siga no twitter @gutocarvalho e acompanhe meus posts sobre Cloud Native e CI/CD.&#xA;&#xA;Aproveite e siga a CD Foundation e Cloud Native Foundation no twitter.&#xA;&#xA;Colaboradores&#xA;&#xA;Pessoas que colaboraram com o texto.&#xA;&#xA;Julia Lamenza (@jlamenza)&#xA;João (@P0ssuidao)&#xA;Rafael Gomex (@gomex)&#xA;Rafael Silva (@rafaotetra)&#xA;&#xA;Dig Crash Course&#xA;&#xA;Aprendendo o básico para uso no dia a dia&#xA;&#xA;fazendo uma pesquisa simples com todos os detalhes&#xA;&#xA;    $ dig gutocarvalho.net&#xA;&#xA;fazendo uma pesquisa simples retornando só o IP&#xA;&#xA;    $ dig +short gutocarvalho.net&#xA;&#xA;pesquisando o SOA do domínio&#xA;&#xA;    $ dig SOA gutocarvalho.net&#xA;&#xA;pesquisando o NS do domínio&#xA;&#xA;    $ dig NS gutocarvalho.net &#xA;&#xA;pesquisando o MX de correio&#xA;&#xA;    $ dig MX gutocarvalho.nmet&#xA;&#xA;pesquisando o TTL do domínio&#xA;&#xA;    $ dig TTL gutocarvalho.net&#xA;&#xA;pesquisando o PTR (reverso) de um IP&#xA;&#xA;    $ dig -x 8.8.8.8&#xA;    &#xA;pesquisando os registros TXT de um domínio&#xA;&#xA;    $ dig txt gutocarvalho.net&#xA;&#xA;Explorando um pouco mais o DIG&#xA;&#xA;pesquisando um registro em um NS específico&#xA;&#xA;    $ dig @1.1.1.1 lb.gutocarvalho&#xA;&#xA;pesquisando as informações DNSSEC de um domínio&#xA;&#xA;    $ dig +dnssec gutocarvalho.net&#xA;&#xA;pesquisando as chaves DNSSEC de um domínio&#xA;&#xA;    $ dig DNSKEY -qr gutocarvalho.net&#xA;&#xA;pesquisando uma entrada de DNS com trace&#xA;&#xA;    $ dig +trace lb.gutocarvalho.net&#xA;    &#xA;verificando o tempo de resposta do SOA de um domínio&#xA;&#xA;    $ dig +nssearch gutocarvalho.net&#xA;&#xA;Parâmetros interessantes do DIG&#xA;&#xA;+short&#xA;&#xA;$ dig gutocarvalho.net +short&#xA;&#xA;185.199.110.153&#xA;185.199.111.153&#xA;185.199.108.153&#xA;185.199.109.153&#xA;&#xA;O short só retorna os IPs para qual o registro aponta.&#xA;&#xA;+tcp&#xA;&#xA;    $ dig +tcp gutocarvalho.net&#xA;&#xA;Usado quando desejamos fazer a pesquisa via TCP, o padrão é UDP.&#xA;&#xA;+time&#xA;&#xA;    $ dig +time=5 gutocarvalho.net&#xA;&#xA;Define o timeout da pesquisa para 5 segundos.&#xA;&#xA;+multiline&#xA;&#xA;    $ dig gutocarvalho.net A +dnssec +multiline&#xA;&#xA;Vai pesquisar entradas A com DNSSEC associado em multi-linhas.&#xA;&#xA;Filtrando saída do DIG com parâmetros especiais&#xA;&#xA;Primeiro vamos fazer uma pesquisa comum para ter uma saída completa&#xA;&#xA;$ dig gutocarvalho.net&#xA;&#xA;; &lt;  DiG 9.10.6 &lt;  gutocarvalho.net&#xA;;; global options: +cmd&#xA;;; Got answer:&#xA;;; -    HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 40038&#xA;;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1&#xA;&#xA;;; OPT PSEUDOSECTION:&#xA;; EDNS: version: 0, flags:; udp: 4096&#xA;;; QUESTION SECTION:&#xA;;gutocarvalho.net.&#x9;&#x9;IN&#x9;A&#xA;&#xA;;; ANSWER SECTION:&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.108.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.109.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.110.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.111.153&#xA;&#xA;;; Query time: 38 msec&#xA;;; SERVER: 1.1.1.1#53(1.1.1.1)&#xA;;; WHEN: Sat Mar 12 18:53:55 -03 2022&#xA;;; MSG SIZE  rcvd: 109&#xA;&#xA;Agora vamos testando cada parâmetro&#xA;&#xA;+noall &#xA;&#xA;$ dig gutocarvalho.net +noall&#xA;&#xA;; &lt;  DiG 9.10.6 &lt;  gutocarvalho.net +noall&#xA;;; global options: +cmd&#xA;&#xA;Observe que o noall omite toda a saída do comando, ele normalmente é usado com outros comandos de forma composta, um exemplo é o answer.&#xA;&#xA;+answer +noall&#xA;&#xA;$ dig gutocarvalho.net +noall +answer&#xA;&#xA;; &lt;  DiG 9.10.6 &lt;  gutocarvalho.net +noall +answer&#xA;;; global options: +cmd&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.111.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.108.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.109.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.110.153&#xA;&#xA;O answer é útil junto com o noall, ele vai nos trazer apenas a resposta, sem comments, question, authority, stats e quaisquer outras informações que estiverem disponíveis na resposta.&#xA;&#xA;+nocmd&#xA;&#xA; dig +nocmd a lb.gutocarvalho.net +noall +answer&#xA;lb.gutocarvalho.net.&#x9;42&#x9;IN&#x9;A&#x9;200.150.204.87&#xA;&#xA;Quando aplicado retira a versao do bind e comando&#xA;&#xA;; &lt;  DiG 9.10.6 &lt;  a lb.gutocarvalho.net +noall +answer&#xA;&#xA;Para funcionar o parâmetro tem que vir logo após o comando dig&#xA;&#xA;+nocomments&#xA;&#xA;$ dig gutocarvalho.net +nocomments&#xA;&#xA;; &lt;  DiG 9.10.6 &lt;  gutocarvalho.net +nocomments&#xA;;; global options: +cmd&#xA;;gutocarvalho.net.&#x9;&#x9;IN&#x9;A&#xA;gutocarvalho.net.&#x9;297&#x9;IN&#x9;A&#x9;185.199.110.153&#xA;gutocarvalho.net.&#x9;297&#x9;IN&#x9;A&#x9;185.199.111.153&#xA;gutocarvalho.net.&#x9;297&#x9;IN&#x9;A&#x9;185.199.108.153&#xA;gutocarvalho.net.&#x9;297&#x9;IN&#x9;A&#x9;185.199.109.153&#xA;;; Query time: 29 msec&#xA;;; SERVER: 1.1.1.1#53(1.1.1.1)&#xA;;; WHEN: Sat Mar 12 18:58:57 -03 2022&#xA;;; MSG SIZE  rcvd: 109&#xA;&#xA;O nocomments retira toda a parte inicial da resposta&#xA;&#xA;; &lt;  DiG 9.10.6 &lt;  gutocarvalho.net&#xA;;; global options: +cmd&#xA;;; Got answer:&#xA;;; -    HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 40925&#xA;;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1&#xA;&#xA;;; OPT PSEUDOSECTION:&#xA;; EDNS: version: 0, flags:; udp: 4096&#xA;;; QUESTION SECTION:&#xA;;gutocarvalho.net.&#x9;&#x9;IN&#x9;A&#xA;&#xA;+noquestion&#xA;&#xA;$ dig gutocarvalho.net +noquestion&#xA;&#xA;; &lt;  DiG 9.10.6 &lt;  gutocarvalho.net +noquestion&#xA;;; global options: +cmd&#xA;;; Got answer:&#xA;;; -    HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 10078&#xA;;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1&#xA;&#xA;;; OPT PSEUDOSECTION:&#xA;; EDNS: version: 0, flags:; udp: 4096&#xA;;; ANSWER SECTION:&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.108.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.109.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.110.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.111.153&#xA;&#xA;;; Query time: 42 msec&#xA;;; SERVER: 1.1.1.1#53(1.1.1.1)&#xA;;; WHEN: Sat Mar 12 19:01:58 -03 2022&#xA;;; MSG SIZE  rcvd: 109&#xA;&#xA;O noquestion retira essa parte da resposta&#xA;&#xA;;; QUESTION SECTION:&#xA;;gutocarvalho.net.&#x9;&#x9;IN&#x9;A&#xA;&#xA;+nostats&#xA;&#xA;$ dig gutocarvalho.net +nostats&#xA;&#xA;; &lt;  DiG 9.10.6 &lt;  gutocarvalho.net +nostats&#xA;;; global options: +cmd&#xA;;; Got answer:&#xA;;; -    HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 63625&#xA;;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1&#xA;&#xA;;; OPT PSEUDOSECTION:&#xA;; EDNS: version: 0, flags:; udp: 4096&#xA;;; QUESTION SECTION:&#xA;;gutocarvalho.net.&#x9;&#x9;IN&#x9;A&#xA;&#xA;;; ANSWER SECTION:&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.109.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.110.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.111.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.108.153&#xA;&#xA;Esse parâmetro suprime as estatísticas da pesquisa.&#xA;&#xA;;; Query time: 38 msec&#xA;;; SERVER: 1.1.1.1#53(1.1.1.1)&#xA;;; WHEN: Sat Mar 12 19:13:28 -03 2022&#xA;;; MSG SIZE  rcvd: 109&#xA;&#xA;+noauthority&#xA;&#xA;;; AUTHORITY SECTION:&#xA;gutocarvalho.net.&#x9;3144&#x9;IN&#x9;NS&#x9;monroe.ns.cloudflare.com.&#xA;gutocarvalho.net.&#x9;3144&#x9;IN&#x9;NS&#x9;houston.ns.cloudflare.com.&#xA;&#xA;É útil para remover essa parte da resposta, caso retorne o authority na pesquisa.&#xA;&#xA;+noadditional&#xA;&#xA;;; ADDITIONAL SECTION:&#xA;lia.ns.cloudflare.com.&#x9;84354&#x9;IN&#x9;A&#x9;  173.245.58.185&#xA;lia.ns.cloudflare.com.&#x9;170762&#x9;IN&#x9;AAAA  2400:cb00:2049:1::adf5:3ab9&#xA;mark.ns.cloudflare.com.&#x9;170734&#x9;IN&#x9;A&#x9;  173.245.59.130&#xA;mark.ns.cloudflare.com.&#x9;170734&#x9;IN&#x9;AAAA  2400:cb00:2049:1::adf5:3b82&#xA;&#xA;A seção aditional pode trazer informações como o IP dos DNS Server autoritativos da seção authority, esse parâmetro suprime esse trecho.&#xA;&#xA;+norec&#xA;&#xA;    $ dig +norec @monroe.ns.cloudflare.com. gutocarvalho.net a&#xA;&#xA;Essa opção desabilita a pesquisa recursiva, neste caso a CloudFlare &#xA;e responsável por responder por meu domínio, sendo que o servidor monroe é um dos meus servidores DNS, ele já sabe a resposta.&#xA;&#xA;Pesquisas parametrizadas comuns&#xA;&#xA;pesquisa comum e rápida que retorna apenas o endereço IP&#xA;&#xA;    $ dig +short lb.gutocarvalho.net&#xA;&#xA;pesquisando por registro A com resposta simples&#xA;&#xA;    $ dig +nocmd lb.gutocarvalho.net a +noall +answer&#xA;&#xA;pesquisando por CNAME com resposta simples&#xA;&#xA;    $ dig +nocmd mail.google.com cname +noall +answer&#xA;&#xA;pesquisando por registro TXT com resposta simples&#xA;&#xA;    $ dig +nocmd google.com txt +noall +answer&#xA;&#xA;fazendo pesquisa em múltiplos domínios&#xA;&#xA;    $ dig ubuntu.com mx +noall +answer redhat.com ns +noall +answer&#xA;&#xA;Pesquisa usando um arquivo (bulk)&#xA;&#xA;Imagine que você tem o arquivo dominios.txt com o conteúdo abaixo&#xA;&#xA;gutocarvalho.net&#xA;nativetrail.io&#xA;viahorizonte.life&#xA;vamos rodar agora uma pesquisa contra o arquivo&#xA;&#xA;    $ dig -f dominios.txt +short&#xA;&#xA;saída&#xA;&#xA;185.199.110.153&#xA;185.199.111.153&#xA;185.199.108.153&#xA;185.199.109.153&#xA;185.199.111.153&#xA;185.199.108.153&#xA;185.199.109.153&#xA;185.199.110.153&#xA;185.199.110.153&#xA;185.199.111.153&#xA;185.199.108.153&#xA;185.199.109.153&#xA;&#xA;:)&#xA;&#xA;Quer saber mais?&#xA;&#xA;Para saber mais veja o help do comando&#xA;&#xA;    $ dig --help&#xA;&#xA;Para ir além acesse a manpage&#xA;&#xA;    $ man dig&#xA;&#xA;Configurando seu .digrc&#xA;&#xA;O dig tem um arquivo de configuração, o famoso .digrc.&#xA;&#xA;    $ echo &#34;+nostats +nocomments +nocmd +noquestion +recurse&#34;   ~/.digrc&#xA;    &#xA;Agora você digita menos e tem o resultado desejado.&#xA;&#xA;Um pouco de teoria de DNS para quem gosta :)&#xA;&#xA;Entendendo o funcionamento do DIG&#xA;&#xA;Imagine que mandamos essa query pelo dig&#xA;&#xA;    $ dig gutocarvalho.net&#xA;&#xA;Essa query é estrutura da seguinte forma pelo DIG para o servidor de DNS autoritativo&#xA;&#xA;           +-------------------------------------+&#xA;Header     | OPCODE=SQUERY                       |&#xA;           +-------------------------------------+&#xA;Question   | QNAME=GUTO.NET., QCLASS=IN, QTYPE=A |&#xA;           +-------------------------------------+&#xA;Answer     | empty                             |&#xA;           +-------------------------------------+&#xA;Authority  | empty                             |&#xA;           +-------------------------------------+&#xA;Additional | empty                             |&#xA;           +-------------------------------------+&#xA;           &#xA;&#xA;A resposta do servidor que responde pelo domínio foi essa&#xA;&#xA;; &lt;  DiG 9.10.6 &lt;  gutocarvalho.net&#xA;;; global options: +cmd&#xA;;; Got answer:&#xA;;; -    HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 48153&#xA;;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1&#xA;&#xA;;; OPT PSEUDOSECTION:&#xA;; EDNS: version: 0, flags:; udp: 4096&#xA;;; QUESTION SECTION:&#xA;;gutocarvalho.net.&#x9;&#x9;IN&#x9;A&#xA;&#xA;;; ANSWER SECTION:&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.110.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.111.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.108.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.109.153&#xA;&#xA;;; Query time: 146 msec&#xA;;; SERVER: 1.1.1.1#53(1.1.1.1)&#xA;;; WHEN: Sun Mar 13 10:37:26 -03 2022&#xA;;; MSG SIZE  rcvd: 109&#xA;&#xA;Podemos estruturar dessa forma para entender melhor&#xA;&#xA;           +--------------------------------------------+&#xA;Header     | OPCODE=SQUERY, RESPONSE, AA                |&#xA;           +--------------------------------------------+&#xA;Question   | QNAME=GUTO.NET., QCLASS=IN, QTYPE=A        |&#xA;           +--------------------------------------------+&#xA;Answer     | GUTO.NET. 300 IN A 185.199.108.153         | &#xA;           |                   300 IN A 185.199.109.153 |&#xA;           |                   300 IN A 185.199.110.153 |&#xA;           |                   300 IN A 185.199.111.153 |&#xA;           +--------------------------------------------+&#xA;Authority  | empty                                    |&#xA;           +--------------------------------------------+&#xA;Additional | empty                                    |&#xA;           +--------------------------------------------+&#xA;&#xA;Entendendo as repostas entregues pelo DIG&#xA;&#xA;Uma resposta de consulta do DIG vem composta por informações separadas nas seções Header, Question, Answer, Authority e Additional.&#xA;&#xA;+------------+&#xA;| Header     | Cabeçalho com informações diversas &#xA;+------------+&#xA;| Question   | A questão enviada para o nameserver&#xA;+------------+&#xA;| Answer     | Registros que vão responder a query&#xA;+------------+&#xA;| Authority  | Registros da autoridade do domínio&#xA;+------------+&#xA;| Additional | Registros com informações adicionais&#xA;+------------+&#xA;&#xA;Vamos entender cada uma delas.&#xA;&#xA;Header section, um cabeçalho fixo que contém ID, flgas e informações das outras seções (contadores)&#xA;&#xA;Question section, contém a query que foi passada (QNAME), o tipo (QTYPE) e a classe (QCLLASS). Na resposta receberemos novamente a query&#xA;&#xA;Answer section, pode conter a lista de reguistros, se houver resposta cada um irá trazer QNAME, QTYPE, QCLASS, TTL e informaçÕes de RDATA&#xA;&#xA;Authority section, pode conter a lista de registros que apontam para os servidores autoritativos&#xA;&#xA;Additional section, pode conter outros registros e mais informações sobre os servidores autoritativos&#xA;&#xA;HEADER SECTION&#xA;&#xA;;; -    HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 63625&#xA;;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1&#xA;&#xA;Informações que encontramos do HEADER&#xA;&#xA;+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;|                      ID                       |&#xA;+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;|QR|   Opcode  |AA|TC|RD|RA| Z|AD|CD|   RCODE   |&#xA;+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;|                    QDCOUNT                    |&#xA;+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;|                    ANCOUNT                    |&#xA;+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;|                    NSCOUNT                    |&#xA;+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;|                    ARCOUNT                    |&#xA;+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;&#xA;Entendendo as informações do HEADER&#xA;&#xA;QR pode conter&#xA;&#xA;0, QUERY &#xA;1, RESPONSE&#xA;&#xA;OPCODE pode conter os seguintes valores:&#xA;&#xA;0&#x9;Query&#x9;[RFC1035]&#xA;2&#x9;Status&#x9;[RFC1035]&#xA;3&#x9;Unassigned&#x9;&#xA;4&#x9;Notify&#x9;[RFC1996]&#xA;5&#x9;Update&#x9;[RFC2136]&#xA;6&#x9;DNS Stateful Operations (DSO)&#x9;[RFC8490]&#xA;7-15&#x9;Unassigned&#xA;&#xA;No Header vamos encontrar as seguintes FLAGs:&#xA;&#xA;AA: Authoritative Answer (set by the server)&#xA;TC: message is TrunCated (set by the server)&#xA;RD: Recursion Desired (set by the client and copied to the response)&#xA;RA: Recursion Available (set by the server)&#xA;AD: Authenticated Data, DNSSEC flag (set by the server)&#xA;CD: Checking Disabled, DNSSEC flag (set by the client, copied to the response)&#xA;&#xA; No Header vamos encontrar o RCODE/Status (4 bits) que pode conter:&#xA;&#xA;0&#x9;NoError&#x9;No Error&#x9;[RFC1035]&#xA;1&#x9;FormErr&#x9;Format Error&#x9;[RFC1035]&#xA;2&#x9;ServFail&#x9;Server Failure&#x9;[RFC1035]&#xA;3&#x9;NXDomain&#x9;Non-Existent Domain&#x9;[RFC1035]&#xA;4&#x9;NotImp&#x9;Not Implemented&#x9;[RFC1035]&#xA;5&#x9;Refused&#x9;Query Refused&#x9;[RFC1035]&#xA;6&#x9;YXDomain&#x9;Name Exists when it should not&#x9;RFC2136&#xA;7&#x9;YXRRSet&#x9;RR Set Exists when it should not&#x9;[RFC2136]&#xA;8&#x9;NXRRSet&#x9;RR Set that should exist does not&#x9;[RFC2136]&#xA;9&#x9;NotAuth&#x9;Server Not Authoritative for zone&#x9;[RFC2136]&#xA;9&#x9;NotAuth&#x9;Not Authorized&#x9;[RFC8945]&#xA;10&#x9;NotZone&#x9;Name not contained in zone&#x9;[RFC2136]&#xA;11&#x9;DSOTYPENI&#x9;DSO-TYPE Not Implemented&#x9;[RFC8490]&#xA;12-15&#x9;Unassigned&#x9;&#x9;&#xA;16&#x9;BADVERS&#x9;Bad OPT Version&#x9;[RFC6891]&#xA;16&#x9;BADSIG&#x9;TSIG Signature Failure&#x9;[RFC8945]&#xA;17&#x9;BADKEY&#x9;Key not recognized&#x9;[RFC8945]&#xA;18&#x9;BADTIME&#x9;Signature out of time window&#x9;[RFC8945]&#xA;19&#x9;BADMODE&#x9;Bad TKEY Mode&#x9;[RFC2930]&#xA;20&#x9;BADNAME&#x9;Duplicate key name&#x9;[RFC2930]&#xA;21&#x9;BADALG&#x9;Algorithm not supported&#x9;[RFC2930]&#xA;22&#x9;BADTRUNC&#x9;Bad Truncation&#x9;[RFC8945]&#xA;23&#x9;BADCOOKIE&#x9;Bad/missing Server Cookie&#x9;[RFC7873]&#xA;24-3840&#x9;Unassigned&#x9;&#x9;&#xA;3841-4095&#x9;Reserved for Private Use&#x9;&#x9;[RFC6895]&#xA;4096-65534&#x9;Unassigned&#x9;&#x9;&#xA;65535&#x9;Reserved, can be allocated by Standards Action&#x9;&#x9;[RFC6895]&#xA;&#xA;No Header também temos contadores, são eles:&#xA;&#xA;QDCOUNT, número de respostas da seção queries&#xA;ANCOUNT, número de respostas da seção answers&#xA;NSCOUNT, número de respostas da seção autoritativos&#xA;ARCOUNT, número de respostas da seção adicional&#xA;&#xA;Os contadores vão retornar o número de registros encontrados na pesquisa&#xA;&#xA;Entendendo um pouco mais das Flags do HEADER&#xA;&#xA;Você verá que na resposta teremos geralmente 4 flags setadas, sao elas:&#xA;&#xA;qr, rd, ra, ad.&#xA;&#xA;Vamos entendê-las agora&#xA;&#xA;QR, é uma flag diferente que pode retornar 0 ou 1, 1 significa query&#xA;&#xA;RD significa &#34;recursive desired&#34;, sinaliza que desejamos usar pesquisa recursiva, isso é definido pelo cliente.&#xA;&#xA;RA significa &#34;recursive available&#34;, sinaliza que pesquisa recursiva está disponível, isso é definiado pelo servidor.&#xA;&#xA;AD significa &#34;authenticated data&#34;, sinaliza que os dados de resposta e autoridade foram validados e autenticados pelas políticas de segurança daquele servidor de dns. É setado apenas quando todos os dados da resposta foram devidamente criptografados e verificados. Esse é um recurso do DNSSEC.&#xA;&#xA;Existem ainda as seguintes flags opcionais&#xA;&#xA;AA, significa servidor autoritativo&#xA;&#xA;TC, significa mensagem truncada&#xA;&#xA;E no caso de DNSSEC pode conter ainda&#xA;&#xA;CD, significa &#34;checking disabled&#34;, utilizado pelo DNSSEC.&#xA;&#xA;DO, que significa que a resposta do DNSSEC está ok&#xA;&#xA;Entendendo os status (RCODE) mais comuns &#xA;&#xA;NOERROR (0), a pesquisa voltou sem erros&#xA;SERVFAIL (2), houve uma falha na resposta do servidor&#xA;NXDOMAN (3), o domínio não foi encontrado ou não existe&#xA;REFUSED (5), o pedido de query foi recusado&#xA;&#xA;QUESTION SECTION&#xA;&#xA;Aqui encontraremos dados de nossa query.&#xA;&#xA;;; QUESTION SECTION:&#xA;;gutocarvalho.net.&#x9;&#x9;IN&#x9;A&#xA;&#xA;Uma query é estruturada da seguinte forma:&#xA;&#xA;    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;    |                                               |&#xA;    /                     QNAME                     /&#xA;    /                                               /&#xA;    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;    |                     QTYPE                     |&#xA;    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;    |                     QCLASS                    |&#xA;    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+&#xA;&#xA;Vamos entender QNAME, QTYPE e QCLASS.&#xA;&#xA;QNAME possuirá o domínio que você setou na query&#xA;QTYPE possuirá o tipo de RR que você utilizou na pesquisa&#xA;QCLASS possuirá o tipo de classe de DNS, geralmente IN (internet)&#xA;&#xA;ANSWER SECTION&#xA;&#xA;;; ANSWER SECTION:&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.108.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.109.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.110.153&#xA;gutocarvalho.net.&#x9;300&#x9;IN&#x9;A&#x9;185.199.111.153&#xA;Retorna os registros e informações destes, se houver.&#xA;&#xA;AUTHORITY SECTION&#xA;&#xA;;; AUTHORITY SECTION:&#xA;gutocarvalho.net.&#x9;3533&#x9;IN&#x9;NS&#x9;monroe.ns.cloudflare.com.&#xA;gutocarvalho.net.&#x9;3533&#x9;IN&#x9;NS&#x9;houston.ns.cloudflare.com.&#xA;&#xA;Retorna dados de autoridade acerca do domínio.&#xA;&#xA;ADITIONAL SECTION&#xA;&#xA;;; ADDITIONAL SECTION:&#xA;monroe.ns.cloudflare.com. 107&#x9;IN&#x9;A&#x9;172.64.34.153&#xA;houston.ns.cloudflare.com. 900&#x9;IN&#x9;A&#x9;172.64.35.52&#xA;&#xA;Retorna dados adicionais da query.&#xA;&#xA;QUERY SECTION&#xA;&#xA;;; Query time: 36 msec&#xA;;; SERVER: 1.1.1.1#53(1.1.1.1)&#xA;;; WHEN: Sat Mar 12 19:49:29 -03 2022&#xA;;; MSG SIZE  rcvd: 109&#xA;&#xA;Retorna métricas da query, auto explicativo.&#xA;&#xA;Glossário &#xA;&#xA;termos comuns&#xA;&#xA;Zona, Uma zona contém as informações e registros de um domínio&#xA;TTL, significa Time to live, é o tempo de vida de um registro ou zona&#xA;DNSSEC, é um sistema de proteção que aumenta a segurança do DNS&#xA;&#xA;tipos de registros comuns e seus significados&#xA;&#xA;SOA, Start of Authority ou início de autoridade&#xA;NS, significa nameserver, esse registro aponta para um servidor de DNS&#xA;A, registro tipo endereço ipv4, é associado a um endereço IP&#xA;AAAA, registro tipo endereço ipv6, é associado a um endereço IP&#xA;PTR, registro tipo reverso, ele resolve um IP para um nome&#xA;CNAME, nome canônico, ele resolve um nome para outro nome.&#xA;MX, significa mail exchange, aponta para o servidor de correio&#xA;TXT, registros de texto, podem ter qualquer tipo de informação&#xA;&#xA;tipos de registro para DNSSEC&#xA;&#xA;DNSKEY: keeps the public key to verify RRSIGs&#xA;DS: keeps the digest of a DNSKEY RR&#xA;RRSIG: keeps the digital signature of an RRset&#xA;NSEC: used for authenticated denial existence, meaning to show an RRset is not part of a signed zone&#xA;&#xA;tipos de pesquisa de DNS&#xA;&#xA;Iterative approach: where the resolver/client repeatedly queries different servers until it finds the answer&#xA;Recursive approach: where the resolver/client sends the query only to a single server, but the server repeatedly queries different servers until it finds and returns the answer to the resolver&#xA;&#xA;Quais outras ferramentas uso para troubleshooting de DNS?&#xA;&#xA;ferramentas clássicas&#xA;&#xA;nslookup&#xA;host&#xA;whois&#xA;&#xA;ferramentas extras para testes do lado do cliente&#xA;&#xA;dnsprobe&#xA;dnstracer&#xA;subfinder (para encontrar subdomains)&#xA;dnsviz (avalia comportamento do seu DNS Server/DNSSEC)&#xA;&#xA;ferramentas extras para testes em seu servidor de dns&#xA;&#xA;dnstop (métricas)&#xA;dnsperf (teste de carga)&#xA;flamethrower (teste de carga)&#xA;dnsblast (teste de carga)&#xA;&#xA;Quais os comandos que eu mais uso no dia-a-dia?&#xA;&#xA;    $ dig +short lb.gutocarvalho.net&#xA;    $ dig -x 200.150.204.87&#xA;    $ dig mx gutocarvalho.net&#xA;    $ dig ns gutocarvalho.net&#xA;&#xA;Amarrando as pontas&#xA;&#xA;Esse post é uma tentativa de dar um norte ou um caminho para fazer um bom troubleshooting de DNS.&#xA;&#xA;Volte aqui sempre que precisar :)&#xA;&#xA;Aquele abraço!&#xA;&#xA;Mando aquele abraço para o professor MESTRE Ulysses Almeida (@ulyssesalmeida) que me ensinou a usar o DIG lá no início do século.&#xA;&#xA;Mando aquele abraço pro @gomex e @badtux que via exemplo me fazem contribuir mais e mais e mais :)&#xA;&#xA;Mando aquele abraço para todos que leram, comentaram, revisaram e contribuíram de alguma forma com esse post!&#xA;&#xA;DNS RFC&#39;s&#xA;&#xA;https://www.ietf.org/rfc/rfc1034.txt&#xA;https://www.ietf.org/rfc/rfc1035.txt&#xA;&#xA;References&#xA;&#xA;https://linux.die.net/man/1/dig&#xA;https://cmdref.net/os/linux/command/dig.html&#xA;https://ipok.com.br/blog/usando-dig-para-pesquisas-de-dns-parte-1&#xA;https://ipok.com.br/blog/usando-dig-para-pesquisas-de-dns-parte-2&#xA;https://linuxize.com/post/how-to-use-dig-command-to-query-dns-in-linux&#xA;https://www.hostinger.com/tutorials/how-to-use-the-dig-command-in-linux&#xA;https://metebalci.com/blog/a-short-practical-tutorial-of-dig-dns-and-dnssec&#xA;https://neverendingsecurity.wordpress.com/2015/04/13/dig-commands-cheatsheet&#xA;&#xA;- -&#xA;&#xA;Este post é do tipo #Mindnodes, entenda aqui.&#xA;&#xA;Se gostou manda um alô no twitter @gutocarvalho ou deixa um comentário bacana :)&#xA;&#xA;[s]br&#xA;Guto&#xA;&#xA;hr&#xD;&#xA;Gostou do conteúdo?&#xD;&#xA;&#xD;&#xA;Você também me encontra nessas redes!&#xD;&#xA;&#xD;&#xA;Mastodon&#xD;&#xA;@gutocarvalho@bolha.us&#xD;&#xA;&#xD;&#xA;PixelFed&#xD;&#xA;@gutocarvalho@bolha.photos&#xD;&#xA;&#xD;&#xA;Lemmy&#xD;&#xA;@gutocarvalho@bolha.forum&#xD;&#xA;&#xD;&#xA;WriteFreely&#xD;&#xA;@gutocarvalho@bolha.blog&#xD;&#xA;@notamental@bolha.blog&#xD;&#xA;@poesias@bolha.blog&#xD;&#xA;@contos@bolha.blog&#xD;&#xA;&#xD;&#xA;Bookwyrm&#xD;&#xA;@gutocarvalho@bolha.review&#xD;&#xA;&#xD;&#xA;Peertube&#xD;&#xA;@gutocarvalho@bolha.tube&#xD;&#xA;&#xD;&#xA;Friendica&#xD;&#xA;@gutocarvalho@bolha.network&#xD;&#xA;&#xD;&#xA;Quer saber mais sobre mim? &#xD;&#xA;&#xD;&#xA;Visite meus sites!&#xD;&#xA;&#xD;&#xA;https://gutocarvalho.net&#xD;&#xA;  https://curriculo.gutocarvalho.net&#xD;&#xA;  https://resume.gutocarvalho.net&#xD;&#xA; &#xD;&#xA;E meus blogs:&#xD;&#xA;&#xD;&#xA; https://blogs.gutocarvalho.net&#xD;&#xA; https://blogs.gutocarvalho.net/falagutera&#xD;&#xA; https://blogs.gutocarvalho.net/infra&#xD;&#xA; https://blogs.gutocarvalho.net/opiniao&#xD;&#xA; https://blogs.gutocarvalho.net/contos&#xD;&#xA; https://blogs.gutocarvalho.net/poesias&#xD;&#xA; https://blogs.gutocarvalho.net/lives&#xD;&#xA; https://blogs.gutocarvalho.net/orixas&#xD;&#xA; https://blogs.gutocarvalho.net/archives&#xD;&#xA;&#xD;&#xA;Conhece o Coletivo Bolha?&#xD;&#xA;&#xD;&#xA;Então vem conhecer o bolha.io ou bolhaverso!&#xD;&#xA;&#xD;&#xA;fediverso&#xD;&#xA;    mastodon, https://bolha.us&#xD;&#xA;    pixelfed, https://bolha.photos&#xD;&#xA;    lemmy, https://bolha.forum&#xD;&#xA;    bookwyrnm, https://bolha.review&#xD;&#xA;    writefreely, https://bolha.blog&#xD;&#xA;    peertube, https://bolha.tube&#xD;&#xA;    castopod, https://bolha.studio&#xD;&#xA;    owncast, https://bolha.stream&#xD;&#xA;    friendica, https://bolha.network  &#xD;&#xA;chat&#xD;&#xA;    mattermost, https://mattermost.bolha.chat&#xD;&#xA;    zulip, https://zulip.bolha.chat&#xD;&#xA;vídeo&#xD;&#xA;    jitsi, https://bolha.video   &#xD;&#xA;frontends&#xD;&#xA;    lingva, https://translate.bolha.tools&#xD;&#xA;    libremdb, https://libremdb.bolha.tools&#xD;&#xA;translations&#xD;&#xA;    libretranslate, https://libretranslate.bolha.tools&#xD;&#xA;editors&#xD;&#xA;    hedgedoc, https://notes.bolha.tools&#xD;&#xA;    draw.io, https://draw.bolha.tools&#xD;&#xA;    excalidraw, https://excalidraw.bolha.tools&#xD;&#xA;    pdf stirling, https://spdf.bolha.tools &#xD;&#xA;    wisemaping, https://mindmap.bolha.tools&#xD;&#xA;    mermaid, https://mermaid.bolha.tools&#xD;&#xA;    cryptpad, https://cryptad.bolha.tools&#xD;&#xA;secrets sharing&#xD;&#xA;    yopass, https://yopass.bolha.tools&#xD;&#xA;    password pusher, https://pusher.bolha.tools&#xD;&#xA;pastbin&#xD;&#xA;    yabin, https://yabin.bolha.tools&#xD;&#xA;terminal recorder&#xD;&#xA;    ascinnema, https://ascinemma.bolha.tools&#xD;&#xA;anti paywall&#xD;&#xA;    13ft, https://open.bolha.tools&#xD;&#xA;&#xD;&#xA;Nós temos muito mais para compartilhar contigo!&#xD;&#xA;&#xD;&#xA;Quer apoiar nosso trabalho? Você pode!&#xD;&#xA;&#xD;&#xA;https://www.patreon.com/bolha&#xD;&#xA;https://apoia.se/bolha&#xD;&#xA;pix@bolha.us&#xD;&#xA;&#xD;&#xA;Te vejo no mastodon da bolha.us!&#xD;&#xA;&#xD;&#xA;[s]]]&gt;</description>
      <content:encoded><![CDATA[<h1 id="dig-crash-course">DIG Crash Course</h1>

<p>O DIG é uma ferramenta para interrogar servidores de DNS.</p>

<p>Com o DIG nós conseguiremos fazer lookup de DNS com objetivos simples como troubleshooting por exemplo.</p>

<p>A ideia aqui é fazer um crash course dessa ferramenta.</p>

<p>Um Crash Course é um tipo de “curso rápido” sobre um determinado assunto, indo direto ao ponto de forma mais objetiva possível.</p>

<h2 id="quando-devo-usar-o-dig">Quando devo usar o DIG?</h2>

<p>Sempre que você precisar verificar alguma coisa em nível de DNS, seguem alguns cenários que o DIG pode te ajudar :</p>
<ul><li>para testar se a resolução de DNS está funcionando</li>
<li>para comparar a resolução de DNS entre NS diferentes</li>
<li>quando precisamos resolver um problema de DNS</li>
<li>para descobrir o IP de um registro de DNS</li>
<li>para descobrir o MX de um domínio</li>
<li>para descobrir o NS de um domínio</li>
<li>para descobrir o SOA de um domínio</li>
<li>para descobrir o PTR (reverso) de um endereço IP</li>
<li>para verificar se uma alteração de registro já fez efeito</li></ul>

<p>Essas são algumas das situações mais básicas em que o DIG pode ser útil.</p>

<h2 id="para-quem-foi-feito-esse-post">Para quem foi feito esse post?</h2>

<p>Aqui o foco está nas pessoas atuando nas posições abaixo:</p>
<ul><li>Sysadmin;</li>
<li>Cloud Native Engineer;</li>
<li>Cloud Engineer;</li>
<li>DevOps Engineer;</li>
<li>Plataform Engineer;</li>
<li>GitOps Engineer.</li></ul>

<h2 id="momento-merchan-p">Momento Merchan :P</h2>

<p>Me siga no twitter <a href="https://twitter.com/gutocarvalho" rel="nofollow">@gutocarvalho</a> e acompanhe meus posts sobre Cloud Native e CI/CD.</p>

<p>Aproveite e siga a <a href="https://twitter.com/CDeliveryFdn" rel="nofollow">CD Foundation</a> e <a href="https://twitter.com/cloudnativefdn" rel="nofollow">Cloud Native Foundation</a> no twitter.</p>

<h2 id="colaboradores">Colaboradores</h2>

<p>Pessoas que colaboraram com o texto.</p>
<ul><li>Julia Lamenza (@jlamenza)</li>
<li>João (@P0ssuidao)</li>
<li>Rafael Gomex (@gomex)</li>
<li>Rafael Silva (@rafaotetra)</li></ul>

<h2 id="dig-crash-course-1">Dig Crash Course</h2>

<h3 id="aprendendo-o-básico-para-uso-no-dia-a-dia">Aprendendo o básico para uso no dia a dia</h3>

<h4 id="fazendo-uma-pesquisa-simples-com-todos-os-detalhes">fazendo uma pesquisa simples com todos os detalhes</h4>

<p>    $ dig gutocarvalho.net</p>

<h4 id="fazendo-uma-pesquisa-simples-retornando-só-o-ip">fazendo uma pesquisa simples retornando só o IP</h4>

<p>    $ dig +short gutocarvalho.net</p>

<h4 id="pesquisando-o-soa-do-domínio">pesquisando o SOA do domínio</h4>

<p>    $ dig SOA gutocarvalho.net</p>

<h4 id="pesquisando-o-ns-do-domínio">pesquisando o NS do domínio</h4>

<p>    $ dig NS gutocarvalho.net</p>

<h4 id="pesquisando-o-mx-de-correio">pesquisando o MX de correio</h4>

<p>    $ dig MX gutocarvalho.nmet</p>

<h4 id="pesquisando-o-ttl-do-domínio">pesquisando o TTL do domínio</h4>

<p>    $ dig TTL gutocarvalho.net</p>

<h4 id="pesquisando-o-ptr-reverso-de-um-ip">pesquisando o PTR (reverso) de um IP</h4>

<p>    $ dig -x 8.8.8.8</p>

<h4 id="pesquisando-os-registros-txt-de-um-domínio">pesquisando os registros TXT de um domínio</h4>

<p>    $ dig txt gutocarvalho.net</p>

<h3 id="explorando-um-pouco-mais-o-dig">Explorando um pouco mais o DIG</h3>

<h4 id="pesquisando-um-registro-em-um-ns-específico">pesquisando um registro em um NS específico</h4>

<p>    $ dig @1.1.1.1 lb.gutocarvalho</p>

<h4 id="pesquisando-as-informações-dnssec-de-um-domínio">pesquisando as informações DNSSEC de um domínio</h4>

<p>    $ dig +dnssec gutocarvalho.net</p>

<h3 id="pesquisando-as-chaves-dnssec-de-um-domínio">pesquisando as chaves DNSSEC de um domínio</h3>

<p>    $ dig DNSKEY -qr gutocarvalho.net</p>

<h4 id="pesquisando-uma-entrada-de-dns-com-trace">pesquisando uma entrada de DNS com trace</h4>

<p>    $ dig +trace lb.gutocarvalho.net</p>

<h4 id="verificando-o-tempo-de-resposta-do-soa-de-um-domínio">verificando o tempo de resposta do SOA de um domínio</h4>

<p>    $ dig +nssearch gutocarvalho.net</p>

<h3 id="parâmetros-interessantes-do-dig">Parâmetros interessantes do DIG</h3>

<h4 id="short">+short</h4>

<pre><code>$ dig gutocarvalho.net +short

185.199.110.153
185.199.111.153
185.199.108.153
185.199.109.153
</code></pre>

<p>O short só retorna os IPs para qual o registro aponta.</p>

<h4 id="tcp">+tcp</h4>

<p>    $ dig +tcp gutocarvalho.net</p>

<p>Usado quando desejamos fazer a pesquisa via TCP, o padrão é UDP.</p>

<h4 id="time">+time</h4>

<p>    $ dig +time=5 gutocarvalho.net</p>

<p>Define o timeout da pesquisa para 5 segundos.</p>

<h4 id="multiline">+multiline</h4>

<p>    $ dig gutocarvalho.net A +dnssec +multiline</p>

<p>Vai pesquisar entradas A com DNSSEC associado em multi-linhas.</p>

<h3 id="filtrando-saída-do-dig-com-parâmetros-especiais">Filtrando saída do DIG com parâmetros especiais</h3>

<p>Primeiro vamos fazer uma pesquisa comum para ter uma saída completa</p>

<pre><code>$ dig gutocarvalho.net

; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; gutocarvalho.net
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 40038
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
gutocarvalho.net.	300	IN	A	185.199.108.153
gutocarvalho.net.	300	IN	A	185.199.109.153
gutocarvalho.net.	300	IN	A	185.199.110.153
gutocarvalho.net.	300	IN	A	185.199.111.153

;; Query time: 38 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Mar 12 18:53:55 -03 2022
;; MSG SIZE  rcvd: 109
</code></pre>

<p>Agora vamos testando cada parâmetro</p>

<h4 id="noall">+noall</h4>

<pre><code>$ dig gutocarvalho.net +noall

; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; gutocarvalho.net +noall
;; global options: +cmd
</code></pre>

<p>Observe que o noall omite toda a saída do comando, ele normalmente é usado com outros comandos de forma composta, um exemplo é o answer.</p>

<h4 id="answer-noall">+answer +noall</h4>

<pre><code>$ dig gutocarvalho.net +noall +answer

; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; gutocarvalho.net +noall +answer
;; global options: +cmd
gutocarvalho.net.	300	IN	A	185.199.111.153
gutocarvalho.net.	300	IN	A	185.199.108.153
gutocarvalho.net.	300	IN	A	185.199.109.153
gutocarvalho.net.	300	IN	A	185.199.110.153
</code></pre>

<p>O answer é útil junto com o noall, ele vai nos trazer apenas a resposta, sem comments, question, authority, stats e quaisquer outras informações que estiverem disponíveis na resposta.</p>

<h4 id="nocmd">+nocmd</h4>

<pre><code> dig +nocmd a lb.gutocarvalho.net +noall +answer
lb.gutocarvalho.net.	42	IN	A	200.150.204.87
</code></pre>

<p>Quando aplicado retira a versao do bind e comando</p>

<pre><code>; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; a lb.gutocarvalho.net +noall +answer
</code></pre>

<p>Para funcionar o parâmetro tem que vir logo após o comando dig</p>

<h4 id="nocomments">+nocomments</h4>

<pre><code>$ dig gutocarvalho.net +nocomments

; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; gutocarvalho.net +nocomments
;; global options: +cmd
;gutocarvalho.net.		IN	A
gutocarvalho.net.	297	IN	A	185.199.110.153
gutocarvalho.net.	297	IN	A	185.199.111.153
gutocarvalho.net.	297	IN	A	185.199.108.153
gutocarvalho.net.	297	IN	A	185.199.109.153
;; Query time: 29 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Mar 12 18:58:57 -03 2022
;; MSG SIZE  rcvd: 109
</code></pre>

<p>O nocomments retira toda a parte inicial da resposta</p>

<pre><code>; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; gutocarvalho.net
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 40925
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;gutocarvalho.net.		IN	A
</code></pre>

<h4 id="noquestion">+noquestion</h4>

<pre><code>$ dig gutocarvalho.net +noquestion

; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; gutocarvalho.net +noquestion
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 10078
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; ANSWER SECTION:
gutocarvalho.net.	300	IN	A	185.199.108.153
gutocarvalho.net.	300	IN	A	185.199.109.153
gutocarvalho.net.	300	IN	A	185.199.110.153
gutocarvalho.net.	300	IN	A	185.199.111.153

;; Query time: 42 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Mar 12 19:01:58 -03 2022
;; MSG SIZE  rcvd: 109
</code></pre>

<p>O noquestion retira essa parte da resposta</p>

<pre><code>;; QUESTION SECTION:
;gutocarvalho.net.		IN	A
</code></pre>

<h4 id="nostats">+nostats</h4>

<pre><code>$ dig gutocarvalho.net +nostats

; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; gutocarvalho.net +nostats
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 63625
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
gutocarvalho.net.	300	IN	A	185.199.109.153
gutocarvalho.net.	300	IN	A	185.199.110.153
gutocarvalho.net.	300	IN	A	185.199.111.153
gutocarvalho.net.	300	IN	A	185.199.108.153
</code></pre>

<p>Esse parâmetro suprime as estatísticas da pesquisa.</p>

<pre><code>;; Query time: 38 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Mar 12 19:13:28 -03 2022
;; MSG SIZE  rcvd: 109
</code></pre>

<h4 id="noauthority">+noauthority</h4>

<pre><code>;; AUTHORITY SECTION:
gutocarvalho.net.	3144	IN	NS	monroe.ns.cloudflare.com.
gutocarvalho.net.	3144	IN	NS	houston.ns.cloudflare.com.
</code></pre>

<p>É útil para remover essa parte da resposta, caso retorne o authority na pesquisa.</p>

<h4 id="noadditional">+noadditional</h4>

<pre><code>;; ADDITIONAL SECTION:
lia.ns.cloudflare.com.	84354	IN	A	  173.245.58.185
lia.ns.cloudflare.com.	170762	IN	AAAA  2400:cb00:2049:1::adf5:3ab9
mark.ns.cloudflare.com.	170734	IN	A	  173.245.59.130
mark.ns.cloudflare.com.	170734	IN	AAAA  2400:cb00:2049:1::adf5:3b82
</code></pre>

<p>A seção aditional pode trazer informações como o IP dos DNS Server autoritativos da seção authority, esse parâmetro suprime esse trecho.</p>

<h4 id="norec">+norec</h4>

<p>    $ dig +norec @monroe.ns.cloudflare.com. gutocarvalho.net a</p>

<p>Essa opção desabilita a pesquisa recursiva, neste caso a CloudFlare
e responsável por responder por meu domínio, sendo que o servidor monroe é um dos meus servidores DNS, ele já sabe a resposta.</p>

<h2 id="pesquisas-parametrizadas-comuns">Pesquisas parametrizadas comuns</h2>

<p>pesquisa comum e rápida que retorna apenas o endereço IP</p>

<p>    $ dig +short lb.gutocarvalho.net</p>

<p>pesquisando por registro A com resposta simples</p>

<p>    $ dig +nocmd lb.gutocarvalho.net a +noall +answer</p>

<p>pesquisando por CNAME com resposta simples</p>

<p>    $ dig +nocmd mail.google.com cname +noall +answer</p>

<p>pesquisando por registro TXT com resposta simples</p>

<p>    $ dig +nocmd google.com txt +noall +answer</p>

<p>fazendo pesquisa em múltiplos domínios</p>

<p>    $ dig ubuntu.com mx +noall +answer redhat.com ns +noall +answer</p>

<h2 id="pesquisa-usando-um-arquivo-bulk">Pesquisa usando um arquivo (bulk)</h2>

<p>Imagine que você tem o arquivo dominios.txt com o conteúdo abaixo</p>

<pre><code>gutocarvalho.net
nativetrail.io
viahorizonte.life
</code></pre>

<p>vamos rodar agora uma pesquisa contra o arquivo</p>

<p>    $ dig -f dominios.txt +short</p>

<p>saída</p>

<pre><code>185.199.110.153
185.199.111.153
185.199.108.153
185.199.109.153
185.199.111.153
185.199.108.153
185.199.109.153
185.199.110.153
185.199.110.153
185.199.111.153
185.199.108.153
185.199.109.153
</code></pre>

<p>:)</p>

<h3 id="quer-saber-mais">Quer saber mais?</h3>

<p>Para saber mais veja o help do comando</p>

<p>    $ dig —help</p>

<p>Para ir além acesse a manpage</p>

<p>    $ man dig</p>

<h2 id="configurando-seu-digrc">Configurando seu .digrc</h2>

<p>O dig tem um arquivo de configuração, o famoso .digrc.</p>

<p>    $ echo “+nostats +nocomments +nocmd +noquestion +recurse” &gt; ~/.digrc</p>

<p>Agora você digita menos e tem o resultado desejado.</p>

<h2 id="um-pouco-de-teoria-de-dns-para-quem-gosta">Um pouco de teoria de DNS para quem gosta :)</h2>

<h3 id="entendendo-o-funcionamento-do-dig">Entendendo o funcionamento do DIG</h3>

<p>Imagine que mandamos essa query pelo dig</p>

<p>    $ dig gutocarvalho.net</p>

<p>Essa query é estrutura da seguinte forma pelo DIG para o servidor de DNS autoritativo</p>

<pre><code>
           +-------------------------------------+
Header     | OPCODE=SQUERY                       |
           +-------------------------------------+
Question   | QNAME=GUTO.NET., QCLASS=IN, QTYPE=A |
           +-------------------------------------+
Answer     | &lt;empty&gt;                             |
           +-------------------------------------+
Authority  | &lt;empty&gt;                             |
           +-------------------------------------+
Additional | &lt;empty&gt;                             |
           +-------------------------------------+
           
</code></pre>

<p>A resposta do servidor que responde pelo domínio foi essa</p>

<pre><code>
; &lt;&lt;&gt;&gt; DiG 9.10.6 &lt;&lt;&gt;&gt; gutocarvalho.net
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 48153
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
gutocarvalho.net.	300	IN	A	185.199.110.153
gutocarvalho.net.	300	IN	A	185.199.111.153
gutocarvalho.net.	300	IN	A	185.199.108.153
gutocarvalho.net.	300	IN	A	185.199.109.153

;; Query time: 146 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sun Mar 13 10:37:26 -03 2022
;; MSG SIZE  rcvd: 109
</code></pre>

<p>Podemos estruturar dessa forma para entender melhor</p>

<pre><code>           +--------------------------------------------+
Header     | OPCODE=SQUERY, RESPONSE, AA                |
           +--------------------------------------------+
Question   | QNAME=GUTO.NET., QCLASS=IN, QTYPE=A        |
           +--------------------------------------------+
Answer     | GUTO.NET. 300 IN A 185.199.108.153         | 
           |                   300 IN A 185.199.109.153 |
           |                   300 IN A 185.199.110.153 |
           |                   300 IN A 185.199.111.153 |
           +--------------------------------------------+
Authority  | &lt;empty&gt;                                    |
           +--------------------------------------------+
Additional | &lt;empty&gt;                                    |
           +--------------------------------------------+
</code></pre>

<h3 id="entendendo-as-repostas-entregues-pelo-dig">Entendendo as repostas entregues pelo DIG</h3>

<p>Uma resposta de consulta do DIG vem composta por informações separadas nas seções Header, Question, Answer, Authority e Additional.</p>

<pre><code>+------------+
| Header     | Cabeçalho com informações diversas 
+------------+
| Question   | A questão enviada para o nameserver
+------------+
| Answer     | Registros que vão responder a query
+------------+
| Authority  | Registros da autoridade do domínio
+------------+
| Additional | Registros com informações adicionais
+------------+
</code></pre>

<p>Vamos entender cada uma delas.</p>

<pre><code>- Header section, um cabeçalho fixo que contém ID, flgas e informações das outras seções (contadores)

- Question section, contém a query que foi passada (QNAME), o tipo (QTYPE) e a classe (QCLLASS). Na resposta receberemos novamente a query

- Answer section, pode conter a lista de reguistros, se houver resposta cada um irá trazer QNAME, QTYPE, QCLASS, TTL e informaçÕes de RDATA

- Authority section, pode conter a lista de registros que apontam para os servidores autoritativos

- Additional section, pode conter outros registros e mais informações sobre os servidores autoritativos
</code></pre>

<h4 id="header-section">HEADER SECTION</h4>

<pre><code>;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 63625
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
</code></pre>

<p>Informações que encontramos do HEADER</p>

<pre><code>+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                      ID                       |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR|   Opcode  |AA|TC|RD|RA| Z|AD|CD|   RCODE   |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    QDCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    ANCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    NSCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    ARCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</code></pre>

<p>Entendendo as informações do HEADER</p>

<pre><code>QR pode conter

- 0, QUERY 
- 1, RESPONSE

OPCODE pode conter os seguintes valores:

- 0	Query	[RFC1035]
- 2	Status	[RFC1035]
- 3	Unassigned	
- 4	Notify	[RFC1996]
- 5	Update	[RFC2136]
- 6	DNS Stateful Operations (DSO)	[RFC8490]
- 7-15	Unassigned

No Header vamos encontrar as seguintes FLAGs:

- AA: Authoritative Answer (set by the server)
- TC: message is TrunCated (set by the server)
- RD: Recursion Desired (set by the client and copied to the response)
- RA: Recursion Available (set by the server)
- AD: Authenticated Data, DNSSEC flag (set by the server)
- CD: Checking Disabled, DNSSEC flag (set by the client, copied to the response)

 No Header vamos encontrar o RCODE/Status (4 bits) que pode conter:

- 0	NoError	No Error	[RFC1035]
- 1	FormErr	Format Error	[RFC1035]
- 2	ServFail	Server Failure	[RFC1035]
- 3	NXDomain	Non-Existent Domain	[RFC1035]
- 4	NotImp	Not Implemented	[RFC1035]
- 5	Refused	Query Refused	[RFC1035]
- 6	YXDomain	Name Exists when it should not	[RFC2136][RFC6672]
- 7	YXRRSet	RR Set Exists when it should not	[RFC2136]
- 8	NXRRSet	RR Set that should exist does not	[RFC2136]
- 9	NotAuth	Server Not Authoritative for zone	[RFC2136]
- 9	NotAuth	Not Authorized	[RFC8945]
- 10	NotZone	Name not contained in zone	[RFC2136]
- 11	DSOTYPENI	DSO-TYPE Not Implemented	[RFC8490]
- 12-15	Unassigned		
- 16	BADVERS	Bad OPT Version	[RFC6891]
- 16	BADSIG	TSIG Signature Failure	[RFC8945]
- 17	BADKEY	Key not recognized	[RFC8945]
- 18	BADTIME	Signature out of time window	[RFC8945]
- 19	BADMODE	Bad TKEY Mode	[RFC2930]
- 20	BADNAME	Duplicate key name	[RFC2930]
- 21	BADALG	Algorithm not supported	[RFC2930]
- 22	BADTRUNC	Bad Truncation	[RFC8945]
- 23	BADCOOKIE	Bad/missing Server Cookie	[RFC7873]
- 24-3840	Unassigned		
- 3841-4095	Reserved for Private Use		[RFC6895]
- 4096-65534	Unassigned		
- 65535	Reserved, can be allocated by Standards Action		[RFC6895]

No Header também temos contadores, são eles:

- QDCOUNT, número de respostas da seção queries
- ANCOUNT, número de respostas da seção answers
- NSCOUNT, número de respostas da seção autoritativos
- ARCOUNT, número de respostas da seção adicional

Os contadores vão retornar o número de registros encontrados na pesquisa

</code></pre>

<p>Entendendo um pouco mais das Flags do HEADER</p>

<pre><code>Você verá que na resposta teremos geralmente 4 flags setadas, sao elas:

- qr, rd, ra, ad.

Vamos entendê-las agora

- QR, é uma flag diferente que pode retornar 0 ou 1, 1 significa query

- RD significa &#34;recursive desired&#34;, sinaliza que desejamos usar pesquisa recursiva, isso é definido pelo cliente.

- RA significa &#34;recursive available&#34;, sinaliza que pesquisa recursiva está disponível, isso é definiado pelo servidor.

- AD significa &#34;authenticated data&#34;, sinaliza que os dados de resposta e autoridade foram validados e autenticados pelas políticas de segurança daquele servidor de dns. É setado apenas quando todos os dados da resposta foram devidamente criptografados e verificados. Esse é um recurso do DNSSEC.

Existem ainda as seguintes flags opcionais

- AA, significa servidor autoritativo

- TC, significa mensagem truncada

E no caso de DNSSEC pode conter ainda

- CD, significa &#34;checking disabled&#34;, utilizado pelo DNSSEC.

- DO, que significa que a resposta do DNSSEC está ok

</code></pre>

<p>Entendendo os status (RCODE) mais comuns</p>

<pre><code>- NOERROR (0), a pesquisa voltou sem erros
- SERVFAIL (2), houve uma falha na resposta do servidor
- NXDOMAN (3), o domínio não foi encontrado ou não existe
- REFUSED (5), o pedido de query foi recusado
</code></pre>

<h4 id="question-section">QUESTION SECTION</h4>

<p>Aqui encontraremos dados de nossa query.</p>

<pre><code>;; QUESTION SECTION:
;gutocarvalho.net.		IN	A
</code></pre>

<p>Uma query é estruturada da seguinte forma:</p>

<pre><code>    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                                               |
    /                     QNAME                     /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     QTYPE                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     QCLASS                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</code></pre>

<p>Vamos entender QNAME, QTYPE e QCLASS.</p>

<pre><code>
- QNAME possuirá o domínio que você setou na query
- QTYPE possuirá o tipo de RR que você utilizou na pesquisa
- QCLASS possuirá o tipo de classe de DNS, geralmente IN (internet)
</code></pre>

<h4 id="answer-section">ANSWER SECTION</h4>

<pre><code>;; ANSWER SECTION:
gutocarvalho.net.	300	IN	A	185.199.108.153
gutocarvalho.net.	300	IN	A	185.199.109.153
gutocarvalho.net.	300	IN	A	185.199.110.153
gutocarvalho.net.	300	IN	A	185.199.111.153
</code></pre>

<p>Retorna os registros e informações destes, se houver.</p>

<h4 id="authority-section">AUTHORITY SECTION</h4>

<pre><code>;; AUTHORITY SECTION:
gutocarvalho.net.	3533	IN	NS	monroe.ns.cloudflare.com.
gutocarvalho.net.	3533	IN	NS	houston.ns.cloudflare.com.
</code></pre>

<p>Retorna dados de autoridade acerca do domínio.</p>

<h4 id="aditional-section">ADITIONAL SECTION</h4>

<pre><code>;; ADDITIONAL SECTION:
monroe.ns.cloudflare.com. 107	IN	A	172.64.34.153
houston.ns.cloudflare.com. 900	IN	A	172.64.35.52
</code></pre>

<p>Retorna dados adicionais da query.</p>

<h4 id="query-section">QUERY SECTION</h4>

<pre><code>;; Query time: 36 msec
;; SERVER: 1.1.1.1#53(1.1.1.1)
;; WHEN: Sat Mar 12 19:49:29 -03 2022
;; MSG SIZE  rcvd: 109
</code></pre>

<p>Retorna métricas da query, auto explicativo.</p>

<h3 id="glossário">Glossário</h3>

<p>termos comuns</p>
<ul><li>Zona, Uma zona contém as informações e registros de um domínio</li>
<li>TTL, significa Time to live, é o tempo de vida de um registro ou zona</li>
<li>DNSSEC, é um sistema de proteção que aumenta a segurança do DNS</li></ul>

<p>tipos de registros comuns e seus significados</p>
<ul><li>SOA, Start of Authority ou início de autoridade</li>
<li>NS, significa nameserver, esse registro aponta para um servidor de DNS</li>
<li>A, registro tipo endereço ipv4, é associado a um endereço IP</li>
<li>AAAA, registro tipo endereço ipv6, é associado a um endereço IP</li>
<li>PTR, registro tipo reverso, ele resolve um IP para um nome</li>
<li>CNAME, nome canônico, ele resolve um nome para outro nome.</li>
<li>MX, significa mail exchange, aponta para o servidor de correio</li>
<li>TXT, registros de texto, podem ter qualquer tipo de informação</li></ul>

<p>tipos de registro para DNSSEC</p>
<ul><li>DNSKEY: keeps the public key to verify RRSIGs</li>
<li>DS: keeps the digest of a DNSKEY RR</li>
<li>RRSIG: keeps the digital signature of an RRset</li>
<li>NSEC: used for authenticated denial existence, meaning to show an RRset is not part of a signed zone</li></ul>

<p>tipos de pesquisa de DNS</p>
<ul><li>Iterative approach: where the resolver/client repeatedly queries different servers until it finds the answer</li>
<li>Recursive approach: where the resolver/client sends the query only to a single server, but the server repeatedly queries different servers until it finds and returns the answer to the resolver</li></ul>

<h2 id="quais-outras-ferramentas-uso-para-troubleshooting-de-dns">Quais outras ferramentas uso para troubleshooting de DNS?</h2>

<p>ferramentas clássicas</p>
<ul><li>nslookup</li>
<li>host</li>
<li>whois</li></ul>

<p>ferramentas extras para testes do lado do cliente</p>
<ul><li><a href="https://github.com/projectdiscovery/dnsprobe" rel="nofollow">dnsprobe</a></li>
<li><a href="https://www.mavetju.org/unix/dnstracer.php" rel="nofollow">dnstracer</a></li>
<li><a href="//github.com/projectdiscovery/subfinder" rel="nofollow">subfinder</a> (para encontrar subdomains)</li>
<li><a href="https://github.com/dnsviz/dnsviz/" rel="nofollow">dnsviz</a> (avalia comportamento do seu DNS Server/DNSSEC)</li></ul>

<p>ferramentas extras para testes em seu servidor de dns</p>
<ul><li><a href="http://dns.measurement-factory.com/tools/dnstop/index.html" rel="nofollow">dnstop</a> (métricas)</li>
<li><a href="https://github.com/DNS-OARC/dnsperf" rel="nofollow">dnsperf</a> (teste de carga)</li>
<li><a href="https://github.com/DNS-OARC/flamethrower" rel="nofollow">flamethrower</a> (teste de carga)</li>
<li><a href="https://github.com/sandeeprenjith/dnsblast" rel="nofollow">dnsblast</a> (teste de carga)</li></ul>

<h2 id="quais-os-comandos-que-eu-mais-uso-no-dia-a-dia">Quais os comandos que eu mais uso no dia-a-dia?</h2>

<p>    $ dig +short lb.gutocarvalho.net
    $ dig -x 200.150.204.87
    $ dig mx gutocarvalho.net
    $ dig ns gutocarvalho.net</p>

<h2 id="amarrando-as-pontas">Amarrando as pontas</h2>

<p>Esse post é uma tentativa de dar um norte ou um caminho para fazer um bom troubleshooting de DNS.</p>

<p>Volte aqui sempre que precisar :)</p>

<h2 id="aquele-abraço">Aquele abraço!</h2>

<p>Mando aquele abraço para o professor MESTRE Ulysses Almeida (@ulyssesalmeida) que me ensinou a usar o DIG lá no início do século.</p>

<p>Mando aquele abraço pro @gomex e @badtux que via exemplo me fazem contribuir mais e mais e mais :)</p>

<p>Mando aquele abraço para todos que leram, comentaram, revisaram e contribuíram de alguma forma com esse post!</p>

<h3 id="dns-rfc-s">DNS RFC&#39;s</h3>
<ul><li><a href="https://www.ietf.org/rfc/rfc1034.txt" rel="nofollow">https://www.ietf.org/rfc/rfc1034.txt</a></li>
<li><a href="https://www.ietf.org/rfc/rfc1035.txt" rel="nofollow">https://www.ietf.org/rfc/rfc1035.txt</a></li></ul>

<h3 id="references">References</h3>
<ul><li><a href="https://linux.die.net/man/1/dig" rel="nofollow">https://linux.die.net/man/1/dig</a></li>
<li><a href="https://cmdref.net/os/linux/command/dig.html" rel="nofollow">https://cmdref.net/os/linux/command/dig.html</a></li>
<li><a href="https://ipok.com.br/blog/usando-dig-para-pesquisas-de-dns-parte-1" rel="nofollow">https://ipok.com.br/blog/usando-dig-para-pesquisas-de-dns-parte-1</a></li>
<li><a href="https://ipok.com.br/blog/usando-dig-para-pesquisas-de-dns-parte-2" rel="nofollow">https://ipok.com.br/blog/usando-dig-para-pesquisas-de-dns-parte-2</a></li>
<li><a href="https://linuxize.com/post/how-to-use-dig-command-to-query-dns-in-linux" rel="nofollow">https://linuxize.com/post/how-to-use-dig-command-to-query-dns-in-linux</a></li>
<li><a href="https://www.hostinger.com/tutorials/how-to-use-the-dig-command-in-linux" rel="nofollow">https://www.hostinger.com/tutorials/how-to-use-the-dig-command-in-linux</a></li>
<li><a href="https://metebalci.com/blog/a-short-practical-tutorial-of-dig-dns-and-dnssec" rel="nofollow">https://metebalci.com/blog/a-short-practical-tutorial-of-dig-dns-and-dnssec</a></li>
<li><a href="https://neverendingsecurity.wordpress.com/2015/04/13/dig-commands-cheatsheet" rel="nofollow">https://neverendingsecurity.wordpress.com/2015/04/13/dig-commands-cheatsheet</a></li></ul>

<hr>

<p>Este post é do tipo <a href="/archives/tag:Mindnodes" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Mindnodes</span></a>, entenda <a href="https://gutocarvalho.net/o-que-sao-mindnotes/" rel="nofollow">aqui</a>.</p>

<p>Se gostou manda um alô no twitter <a href="https://twitter.com/gutocarvalho" rel="nofollow">@gutocarvalho</a> ou deixa um comentário bacana :)</p>

<p>[s]<br>
Guto</p>

<hr>

<h3 id="gostou-do-conteúdo">Gostou do conteúdo?</h3>

<p>Você também me encontra nessas redes!</p>

<h4 id="mastodon">Mastodon</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.us" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.us</span></a></p>

<h4 id="pixelfed">PixelFed</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.photos" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.photos</span></a></p>

<h4 id="lemmy">Lemmy</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.forum" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.forum</span></a></p>

<h4 id="writefreely">WriteFreely</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.blog" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.blog</span></a>
<a href="https://blogs.gutocarvalho.net/@/notamental@bolha.blog" class="u-url mention" rel="nofollow">@<span>notamental@bolha.blog</span></a>
<a href="https://blogs.gutocarvalho.net/@/poesias@bolha.blog" class="u-url mention" rel="nofollow">@<span>poesias@bolha.blog</span></a>
<a href="https://blogs.gutocarvalho.net/@/contos@bolha.blog" class="u-url mention" rel="nofollow">@<span>contos@bolha.blog</span></a></p>

<h4 id="bookwyrm">Bookwyrm</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.review" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.review</span></a></p>

<h4 id="peertube">Peertube</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.tube" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.tube</span></a></p>

<h4 id="friendica">Friendica</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.network" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.network</span></a></p>

<h2 id="quer-saber-mais-sobre-mim">Quer saber mais sobre mim?</h2>

<p>Visite meus sites!</p>
<ul><li><a href="https://gutocarvalho.net" rel="nofollow">https://gutocarvalho.net</a>
<ul><li><a href="https://curriculo.gutocarvalho.net" rel="nofollow">https://curriculo.gutocarvalho.net</a></li>
<li><a href="https://resume.gutocarvalho.net" rel="nofollow">https://resume.gutocarvalho.net</a></li></ul></li></ul>

<p>E meus blogs:</p>
<ul><li><a href="https://blogs.gutocarvalho.net" rel="nofollow">https://blogs.gutocarvalho.net</a></li>
<li><a href="https://blogs.gutocarvalho.net/falagutera" rel="nofollow">https://blogs.gutocarvalho.net/falagutera</a></li>
<li><a href="https://blogs.gutocarvalho.net/infra" rel="nofollow">https://blogs.gutocarvalho.net/infra</a></li>
<li><a href="https://blogs.gutocarvalho.net/opiniao" rel="nofollow">https://blogs.gutocarvalho.net/opiniao</a></li>
<li><a href="https://blogs.gutocarvalho.net/contos" rel="nofollow">https://blogs.gutocarvalho.net/contos</a></li>
<li><a href="https://blogs.gutocarvalho.net/poesias" rel="nofollow">https://blogs.gutocarvalho.net/poesias</a></li>
<li><a href="https://blogs.gutocarvalho.net/lives" rel="nofollow">https://blogs.gutocarvalho.net/lives</a></li>
<li><a href="https://blogs.gutocarvalho.net/orixas" rel="nofollow">https://blogs.gutocarvalho.net/orixas</a></li>
<li><a href="https://blogs.gutocarvalho.net/archives" rel="nofollow">https://blogs.gutocarvalho.net/archives</a></li></ul>

<h2 id="conhece-o-coletivo-bolha">Conhece o Coletivo Bolha?</h2>

<p>Então vem conhecer o bolha.io ou bolhaverso!</p>
<ul><li>fediverso
<ul><li>mastodon, <a href="https://bolha.us" rel="nofollow">https://bolha.us</a></li>
<li>pixelfed, <a href="https://bolha.photos" rel="nofollow">https://bolha.photos</a></li>
<li>lemmy, <a href="https://bolha.forum" rel="nofollow">https://bolha.forum</a></li>
<li>bookwyrnm, <a href="https://bolha.review" rel="nofollow">https://bolha.review</a></li>
<li>writefreely, <a href="https://bolha.blog" rel="nofollow">https://bolha.blog</a></li>
<li>peertube, <a href="https://bolha.tube" rel="nofollow">https://bolha.tube</a></li>
<li>castopod, <a href="https://bolha.studio" rel="nofollow">https://bolha.studio</a></li>
<li>owncast, <a href="https://bolha.stream" rel="nofollow">https://bolha.stream</a></li>
<li>friendica, <a href="https://bolha.network" rel="nofollow">https://bolha.network</a><br></li></ul></li>
<li>chat
<ul><li>mattermost, <a href="https://mattermost.bolha.chat" rel="nofollow">https://mattermost.bolha.chat</a></li>
<li>zulip, <a href="https://zulip.bolha.chat" rel="nofollow">https://zulip.bolha.chat</a></li></ul></li>
<li>vídeo
<ul><li>jitsi, <a href="https://bolha.video" rel="nofollow">https://bolha.video</a><br></li></ul></li>
<li>frontends
<ul><li>lingva, <a href="https://translate.bolha.tools" rel="nofollow">https://translate.bolha.tools</a></li>
<li>libremdb, <a href="https://libremdb.bolha.tools" rel="nofollow">https://libremdb.bolha.tools</a></li></ul></li>
<li>translations
<ul><li>libretranslate, <a href="https://libretranslate.bolha.tools" rel="nofollow">https://libretranslate.bolha.tools</a></li></ul></li>
<li>editors
<ul><li>hedgedoc, <a href="https://notes.bolha.tools" rel="nofollow">https://notes.bolha.tools</a></li>
<li>draw.io, <a href="https://draw.bolha.tools" rel="nofollow">https://draw.bolha.tools</a></li>
<li>excalidraw, <a href="https://excalidraw.bolha.tools" rel="nofollow">https://excalidraw.bolha.tools</a></li>
<li>pdf stirling, <a href="https://spdf.bolha.tools" rel="nofollow">https://spdf.bolha.tools</a></li>
<li>wisemaping, <a href="https://mindmap.bolha.tools" rel="nofollow">https://mindmap.bolha.tools</a></li>
<li>mermaid, <a href="https://mermaid.bolha.tools" rel="nofollow">https://mermaid.bolha.tools</a></li>
<li>cryptpad, <a href="https://cryptad.bolha.tools" rel="nofollow">https://cryptad.bolha.tools</a></li></ul></li>
<li>secrets sharing
<ul><li>yopass, <a href="https://yopass.bolha.tools" rel="nofollow">https://yopass.bolha.tools</a></li>
<li>password pusher, <a href="https://pusher.bolha.tools" rel="nofollow">https://pusher.bolha.tools</a></li></ul></li>
<li>pastbin
<ul><li>yabin, <a href="https://yabin.bolha.tools" rel="nofollow">https://yabin.bolha.tools</a></li></ul></li>
<li>terminal recorder
<ul><li>ascinnema, <a href="https://ascinemma.bolha.tools" rel="nofollow">https://ascinemma.bolha.tools</a></li></ul></li>
<li>anti paywall
<ul><li>13ft, <a href="https://open.bolha.tools" rel="nofollow">https://open.bolha.tools</a></li></ul></li></ul>

<p>Nós temos muito mais para compartilhar contigo!</p>

<h3 id="quer-apoiar-nosso-trabalho-você-pode">Quer apoiar nosso trabalho? Você pode!</h3>
<ul><li><a href="https://www.patreon.com/bolha" rel="nofollow">https://www.patreon.com/bolha</a></li>
<li><a href="https://apoia.se/bolha" rel="nofollow">https://apoia.se/bolha</a></li>
<li>pix@bolha.us</li></ul>

<p>Te vejo no mastodon da bolha.us!</p>

<p>[s]</p>
]]></content:encoded>
      <guid>https://blogs.gutocarvalho.net/archives/dig-crash-course</guid>
      <pubDate>Sat, 12 Mar 2022 21:11:01 +0000</pubDate>
    </item>
    <item>
      <title>Tcpdump Crash Course</title>
      <link>https://blogs.gutocarvalho.net/archives/tcpdump-crash-course</link>
      <description>&lt;![CDATA[O TCPDUMP é uma ferramenta de captura e análise de pacotes usada para fazer troubleshooting de rede. Ele usa a LIBCAP para fazer isso.&#xA;&#xA;A ideia aqui é fazer um crash course dessa ferramenta. &#xA;&#xA;Um Crash Course é um tipo de &#34;curso rápido&#34; sobre um determinado assunto, indo direto ao ponto de forma mais objetiva possível.&#xA;&#xA;Quando devo usar o tcpdump?&#xA;&#xA;Sempre que você precisar verificar alguma coisa em nível de rede, seguem algumas perguntas que o TCPDUMP pode ajudar a responder:&#xA;&#xA;A máquina X está chega no servidor Y ?&#xA;A máquina X está conseguindo resolver DNS ?&#xA;A máquina X está conseguindo resolver NTP ?&#xA;Os clientes estã chegando na Máquina X e porta Y ?&#xA;&#xA;Essa são as perguntas mais básicas que o TCPDUMP pode responder para você.&#xA;&#xA;Para quem foi feito esse post?&#xA;&#xA;Aqui o foco está nas pessoas atuando nas posições abaixo:&#xA;&#xA;Sysadmin;&#xA;Cloud Native Engineer;&#xA;Cloud Engineer;&#xA;DevOps Engineer;&#xA;Plataform Engineer;&#xA;GitOps Engineer.&#xA;&#xA;Momento Merchan :P&#xA;&#xA;Me siga no twitter @gutocarvalho e acompanhe meus posts sobre Cloud Native e CI/CD.&#xA;&#xA;Aproveite e siga a CD Foundation e Cloud Native Foundation no twitter.&#xA;&#xA;Colaboradores&#xA;&#xA;Pessoas que colaboraram com o texto.&#xA;&#xA;Julia Lamenza (@jlamenza)&#xA;João (@P0ssuidao)&#xA;Rafael Gomex (@gomex)&#xA;Rafael Silva (@rafaotetra)&#xA;&#xA;TCPDUMP Crash Course&#xA;&#xA;instalando no mac&#xA;&#xA;    $ brew install tcpdump&#xA;&#xA;detectando recursos disponíveis no sistema&#xA;&#xA;Listando interfaces&#xA;&#xA;    $ tcpdump -D&#xA;&#xA;Listando data-link types suportados no sistema&#xA;&#xA;    $ tcpdump -L&#xA;&#xA;capturando pacotes de interfaces&#xA;&#xA;Capturando tráfego de todas as interfaces&#xA;&#xA;    $ tcpdump -i any&#xA;&#xA;Capturando tráfego de uma interface específica&#xA;&#xA;    $ tcpdump -i en0&#xA;&#xA;Capturando tráfego de uma interface específica sem resolver nomes&#xA;&#xA;    $ tcpdump -n -i en0&#xA;&#xA;Capturando tráfego de uma interface específica sem resolver nomes ou fazer checksums TCP&#xA;&#xA;    $ tcpdump -n -K -i en0&#xA;&#xA;Capturando tráfego de uma interface específica sem resolver nomes e fazer lookups&#xA;&#xA;    $ tcpdump -nn -i en0&#xA;&#xA;Capturando tráfego de uma interface específica mostrando o mac address&#xA;&#xA;    $ tcpdump -e -i en0&#xA;&#xA;Capturando tráfego de uma interface específica sem ativar o modo promíscuo, ou seja você apenas verá pacotes PARA ou DE seu computador.&#xA;&#xA;    $ tcpdump -p -i en0&#xA;&#xA;trabalhando com arquivos&#xA;&#xA;Capturando tráfego de uma interface específica e jogando saída para um arquivo&#xA;&#xA;    $ tcpdump -i eth0 -w tcpdump.txt&#xA;&#xA;Limitando a captura em 10.000 pacotes para não encher seu disco&#xA;&#xA;    $ tcpdump -i eth0 -c 10000 -w tcpdump.txt&#xA;&#xA;Lendo pacotes de um arquivo (replay)&#xA;&#xA;    $ tcpdump -i eth0 -r tcpdump.txt&#xA;&#xA;capturando pacotes de hosts e redes específicos&#xA;&#xA;Capturando tráfego de um host específico&#xA;&#xA;    $ tcpdump host 192.168.222.1&#xA;    &#xA;Capturando tráfego de uma rede específica&#xA;&#xA;    $ tcpdump net 192.168.222.0/24&#xA;&#xA;capturando pacotes de endereços mac específicos&#xA;&#xA;Capturando pacotes com origem no endereço mac e8:2b:88:ef:55:11&#xA;&#xA;    $ tcpdump ether src e8:2b:88:ef:55:11&#xA;&#xA;Capturando pacotes com destino ao endereço mac e8:2b:88:ef:55:11&#xA;&#xA;    $ tcpdump ether dst e8:2b:88:ef:55:11&#xA;&#xA;Capturando pacotes enviados ou recebidos pelo mac e8:2b:88:ef:55:11&#xA;&#xA;    $ tcpdump ether host e8:2b:88:ef:55:11&#xA;&#xA;capturando pacotes de origem e destino&#xA;&#xA;Capturando tráfego de uma origem específica&#xA;&#xA;    $ tcpdump src 200.150.204.87&#xA;&#xA;Capturando tráfego para um destino específico&#xA;&#xA;    $ tcpdump dst 200.150.204.87&#xA;&#xA;capturando pacotes de serviços e portas&#xA;&#xA; Capturando tráfego de um serviço específico&#xA; &#xA;    $ tcpdump http&#xA;&#xA;Capturando tráfego de uma porta específica&#xA;&#xA;    $ tcpdump port 80&#xA;&#xA;Capturando tráfego de um range de portas   &#xA;&#xA;    $ tcpdump portrange 8001-8009&#xA;        &#xA;capturando pacotes de protocolos específicos&#xA;&#xA;Capturando apenas pacotes IPv4&#xA;&#xA;    $ tcpdump ip&#xA;&#xA;Capturando apenas pacotes IPv6&#xA;&#xA;    $ tcpdump ipv6&#xA;&#xA;Capturando apenas pacotes TCP&#xA;&#xA;    $ tcpdump tcp&#xA;&#xA;Capturando apenas pacotes UDP&#xA;&#xA;    $ tcpdump udp&#xA;    &#xA;Capturando apenas pacotes ICMP&#xA;&#xA;    $ tcpdump icmp&#xA;&#xA;Capturando apenas pacotes ARP&#xA;&#xA;    $ tcpdump arp&#xA;&#xA;capturando pacotes em quantidades específicas&#xA;&#xA;Capturando os primeiros 100 pacotes TCP&#xA;&#xA;    $ tcpdump -c 100 tcp&#xA;&#xA;capturando pacotes de tamanhos específicos&#xA;&#xA;Capturando pacotes maiores do que 200 bytes&#xA;&#xA;    $ sudo tcpdump greater 200&#xA;    &#xA;Capturando pacotes menores do que 200 bytes&#xA;&#xA;    $ sudo tcpdump less 200&#xA;&#xA;capturando pacotes usando expressões lógicas no filtro&#xA;&#xA;Capturando pacotes com origem no IP 192.168.222.1 e destino na porta 8005 (AND)&#xA;&#xA;    $ tcpdump -n -i en0 src 192.168.222.1 and dst port 8005&#xA;&#xA;Capturando pacotes da porta 8001 ou 8005 da interface eth0 (OR)&#xA;&#xA;    $ tcpdump -n -i en0 port 8001 or port 8005&#xA;&#xA;Capturando pacotes da interface eth0 com exceção da porta 22 (NOT)&#xA;&#xA;    $ tcpdump -n -i en0 not port 22&#xA;    &#xA;Capturando pacotes de origem a rede 10.10.0.0/24 e destino rede 192.169.100.0/24 (AND)&#xA;&#xA;    $ tcpdump src net 10.10.0.0/24 and dst net 192.168.100.0/24&#xA; &#xA;Capturando pacotes de duas redes específicas (AND)&#xA; &#xA;    $ tcpdump net 10.10.0.0/24 and net 192.168.100.0/24&#xA;&#xA;Capturando pacotes tcp entre dois hosts específicos (AND)&#xA;&#xA;    $ tcpdump tcp and host 10.10.0.1 and host 192.168.100.54&#xA;&#xA;Capturando pacotes maiores ou igual a 32 bytes (GREATER)&#xA;&#xA;    $ tcpdump tcp   = 32&#xA;    &#xA;Capturando pacotes menores ou igual a 32 bytes (LESS)&#xA;&#xA;    $ tcpdump tcp &lt;= 32&#xA;&#xA;quais as expressões lógicas disponíveis?&#xA;&#xA;Negation    : ! or &#34;not&#34; (without the quotes)&#xA;Concatanate : &amp;&amp; or &#34;and&#34;&#xA;Alternate   : || or &#34;or&#34;&#xA;&#xA;quais os operadores disponíveis?&#xA;&#xA;  : greater&#xA;&lt;  : lower&#xA;  = : greater or equal&#xA;&lt;= : lower or equal&#xA;=  : equal&#xA;!= : different&#xA;&#xA;veja alguns exemplos de composição lógica múltipla&#xA;&#xA;Essa regra vai casar com tráfego na porta 80 com host 192.168.222.254 ou 192.168.222.200&#xA;&#xA;    $ tcpdump &#39;((tcp) and (port 80) and ((dst host 192.168.222.254) or (dst host 192.168.222.200)))&#39;&#xA;&#xA;Essa regra vai casar com qualquer tráfego ICMP envolvendo os destinos 00:01:02:03:04:05.&#xA;&#xA;    $ tcpdump &#39;((icmp) and ((ether dst host 00:01:02:03:04:05)))&#39;&#xA;&#xA;Essa regra vai filtrar tráfego para a rede de destino 192.168 com exceção do host 192.168.222.200&#xA;&#xA;    $ tcpdump &#39;((tcp) and ((dst net 192.168) and (not dst host 192.168.222.200)))&#39;&#xA;&#xA;capturando flags de pacotes TCP&#xA;&#xA;Isolando apenas flags RST do protocolo TCP&#xA;&#xA;    $ tcpdump &#39;tcp[tcpflags] == tcp-rst&#39;&#xA;    &#xA;Isolando apenas flags SYN e ACK do protocolo TCP&#xA;&#xA;    $ tcpdump &#39;tcp[tcpflags] == tcp-syn&#39; and &#39;tcp[tcpflags] == tcp-ack&#39;&#xA;&#xA;Isolando apenas flags FIN do protocolo TCP&#xA;&#xA;    $ tcpdump &#39;tcp[tcpflags] == tcp-fin&#39;&#xA;&#xA;capturando informações do protocolo HTTP&#xA;&#xA;Essa captura vai mostrar os requests e conteúdos dos pacotes HTTP&#xA;&#xA;    $tcpdump -A -i en0 http&#xA;    &#xA;Capturando o user agent&#xA;&#xA;    $ tcpdump -vvAls0 | grep &#39;User-Agent:&#39;&#xA;&#xA;Capturando requisições do tipo GET&#xA;&#xA;    $ tcpdump -vvAls0 | grep &#39;GET&#39;&#xA;&#xA;Capturando requisições do tipo POST&#xA;&#xA;    $ tcpdump -vvAls0 | grep &#39;POST&#39;&#xA;&#xA;Capturando HTTP HEADERS&#xA;&#xA;    $ tcpdump -vvAls0 | grep &#39;Host:&#39;&#xA;&#xA;Capturando HTTP COOKIES&#xA;&#xA;    $ tcpdump -vvAls0 | grep &#39;Set-Cookie|Host:|Cookie:&#39;&#xA;&#xA;capturando infos específicas de protocolos diversos&#xA;&#xA;Buscando tráfego SSH independente da porta que estiver rodando&#xA;&#xA;    $ tcpdump &#39;tcp[(tcp[12]    2):4] = 0x5353482D&#39;&#xA;&#xA;Buscando tráfego de DNS&#xA;&#xA;    $ tcpdump -vvAs0 port 53&#xA;&#xA;Buscando tráfego NTP&#xA;&#xA;    $ tcpdump -vvAs0 port 123&#xA;&#xA;capturando senhas clear-text&#xA;&#xA;Aqui vamos pegar senhas clear-text em diversos protocolos&#xA;&#xA;    $ tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -lA | egrep -i -B5 &#39;pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd= |password=|pass:|user:|username:|password:|login:|pass |user &#39;&#xA;&#xA;configurando timestamp da captura de pacotes&#xA;&#xA;Capturando pacotes sem mostrar timestamp&#xA;&#xA;    $ tcpdump -i en0 -t&#xA;&#xA;Capturando pacotes com timestamp com nano-resolution&#xA;&#xA;    $ tcpdump --time-stamp-precision nano&#xA;&#xA;Capturando pacotes com timestamp em formato unix epoc (seconds since January 1, 1970)&#xA;&#xA;    $ tcpdump -tt&#xA;&#xA;Capturando pacotes com timestamp usando horas, minutos, segundos e microsegundos&#xA;&#xA;    $ tcpdump -tttt&#xA;&#xA;configurando nível de ruído na captura de pacotes&#xA;&#xA;Mostrando menos detalhes (quite mode)&#xA;&#xA;    $ tcpdump -i en0 -q&#xA;&#xA;Modo verboso inicial&#xA;&#xA;    $ tcpdump -i en0 -v&#xA;    &#xA;Modo um pouco mais verboso&#xA;&#xA;    $ tcpdump -i en0 -vv&#xA;    &#xA;Modo mais verboso possível no tcpdump&#xA;&#xA;    $ tcpdump -i en0 -vvv&#xA;&#xA;configurando os formatos de saída da captura&#xA;&#xA;Definindo a saída em formato ASCII&#xA;&#xA;    $ tcpdump -i en0 -A&#xA;&#xA;Definindo a saída em formato HEX&#xA;&#xA;    $ tcpdump -i en0 -x&#xA;&#xA;tcpdump colorido, tem como?&#xA;&#xA;Dá para fazer, vamos instalar o CCZE para ajudar&#xA;&#xA;    $ brew install ccze&#xA;    &#xA;Agora vamos usar ele assim&#xA;&#xA;    $ tpcdump -i en0 | ccze -A&#xA;    &#xA;Pronto, saída colorida bem fácil de ler!&#xA;&#xA;quer saber mais?&#xA;&#xA;Para saber mais veja o help do comando&#xA;&#xA;    $ tcpdump --help&#xA;&#xA;Para ir além acesse a manpage&#xA;&#xA;    $ man tcpdump&#xA;&#xA;qual o meu comando do dia a dia?&#xA;&#xA;Use essa combinação para ver uma saída bastante verbosa, sem resolução de nomes ou portas e mostrando timestamp o mais human-readble possível.&#xA;&#xA;    $ tcpdump -ttttnnvvS&#xA;   &#xA;Amarrando as pontas&#xA;&#xA;Esse post é uma tentativa de dar um norte ou um caminho para fazer um bom troubleshooting de redes usando o tcpdump.&#xA;&#xA;Volte aqui sempre que precisar :)&#xA;&#xA;Aquele abraço!&#xA;&#xA;Mando aquele abraço para o professor MESTRE Ulysses Almeida (@ulyssesalmeida) que me ensinou a usar o TCPDUMP lá no início do século.&#xA;&#xA;Mando aquele abraço pro @gomex e @badtux que via exemplo me fazem contribuir mais e mais e mais :)&#xA;&#xA;Mando aquele abraço para todos que leram, comentaram, revisaram e contribuiram de alguma forma com esse post!&#xA;&#xA;---&#xA;&#xA;Este post é do tipo #Mindnodes, entenda aqui.&#xA;&#xA;Se gostou manda um alo no twitter @gutocarvalho ou deixa um comentário bacana :)&#xA;&#xA;Refs&#xA;&#xA;https://www.tcpdump.org&#xA;https://jvns.ca/tcpdump-zine.pdf&#xA;https://danielmiessler.com/study/tcpdump/&#xA;https://packetlife.net/media/library/12/tcpdump.pdf&#xA;https://www.xmodulo.com/tcpdump-cheat-sheet-examples.html&#xA;https://www.comparitech.com/net-admin/tcpdump-cheat-sheet&#xA;https://blog.wains.be/2007/2007-10-01-tcpdump-advanced-filters&#xA;https://gist.github.com/jforge/27962c52223ea9b8003b22b8189d93fb&#xA;&#xA;[s]br&#xA;Guto&#xA;&#xA;hr&#xD;&#xA;Gostou do conteúdo?&#xD;&#xA;&#xD;&#xA;Você também me encontra nessas redes!&#xD;&#xA;&#xD;&#xA;Mastodon&#xD;&#xA;@gutocarvalho@bolha.us&#xD;&#xA;&#xD;&#xA;PixelFed&#xD;&#xA;@gutocarvalho@bolha.photos&#xD;&#xA;&#xD;&#xA;Lemmy&#xD;&#xA;@gutocarvalho@bolha.forum&#xD;&#xA;&#xD;&#xA;WriteFreely&#xD;&#xA;@gutocarvalho@bolha.blog&#xD;&#xA;@notamental@bolha.blog&#xD;&#xA;@poesias@bolha.blog&#xD;&#xA;@contos@bolha.blog&#xD;&#xA;&#xD;&#xA;Bookwyrm&#xD;&#xA;@gutocarvalho@bolha.review&#xD;&#xA;&#xD;&#xA;Peertube&#xD;&#xA;@gutocarvalho@bolha.tube&#xD;&#xA;&#xD;&#xA;Friendica&#xD;&#xA;@gutocarvalho@bolha.network&#xD;&#xA;&#xD;&#xA;Quer saber mais sobre mim? &#xD;&#xA;&#xD;&#xA;Visite meus sites!&#xD;&#xA;&#xD;&#xA;https://gutocarvalho.net&#xD;&#xA;  https://curriculo.gutocarvalho.net&#xD;&#xA;  https://resume.gutocarvalho.net&#xD;&#xA; &#xD;&#xA;E meus blogs:&#xD;&#xA;&#xD;&#xA; https://blogs.gutocarvalho.net&#xD;&#xA; https://blogs.gutocarvalho.net/falagutera&#xD;&#xA; https://blogs.gutocarvalho.net/infra&#xD;&#xA; https://blogs.gutocarvalho.net/opiniao&#xD;&#xA; https://blogs.gutocarvalho.net/contos&#xD;&#xA; https://blogs.gutocarvalho.net/poesias&#xD;&#xA; https://blogs.gutocarvalho.net/lives&#xD;&#xA; https://blogs.gutocarvalho.net/orixas&#xD;&#xA; https://blogs.gutocarvalho.net/archives&#xD;&#xA;&#xD;&#xA;Conhece o Coletivo Bolha?&#xD;&#xA;&#xD;&#xA;Então vem conhecer o bolha.io ou bolhaverso!&#xD;&#xA;&#xD;&#xA;fediverso&#xD;&#xA;    mastodon, https://bolha.us&#xD;&#xA;    pixelfed, https://bolha.photos&#xD;&#xA;    lemmy, https://bolha.forum&#xD;&#xA;    bookwyrnm, https://bolha.review&#xD;&#xA;    writefreely, https://bolha.blog&#xD;&#xA;    peertube, https://bolha.tube&#xD;&#xA;    castopod, https://bolha.studio&#xD;&#xA;    owncast, https://bolha.stream&#xD;&#xA;    friendica, https://bolha.network  &#xD;&#xA;chat&#xD;&#xA;    mattermost, https://mattermost.bolha.chat&#xD;&#xA;    zulip, https://zulip.bolha.chat&#xD;&#xA;vídeo&#xD;&#xA;    jitsi, https://bolha.video   &#xD;&#xA;frontends&#xD;&#xA;    lingva, https://translate.bolha.tools&#xD;&#xA;    libremdb, https://libremdb.bolha.tools&#xD;&#xA;translations&#xD;&#xA;    libretranslate, https://libretranslate.bolha.tools&#xD;&#xA;editors&#xD;&#xA;    hedgedoc, https://notes.bolha.tools&#xD;&#xA;    draw.io, https://draw.bolha.tools&#xD;&#xA;    excalidraw, https://excalidraw.bolha.tools&#xD;&#xA;    pdf stirling, https://spdf.bolha.tools &#xD;&#xA;    wisemaping, https://mindmap.bolha.tools&#xD;&#xA;    mermaid, https://mermaid.bolha.tools&#xD;&#xA;    cryptpad, https://cryptad.bolha.tools&#xD;&#xA;secrets sharing&#xD;&#xA;    yopass, https://yopass.bolha.tools&#xD;&#xA;    password pusher, https://pusher.bolha.tools&#xD;&#xA;pastbin&#xD;&#xA;    yabin, https://yabin.bolha.tools&#xD;&#xA;terminal recorder&#xD;&#xA;    ascinnema, https://ascinemma.bolha.tools&#xD;&#xA;anti paywall&#xD;&#xA;    13ft, https://open.bolha.tools&#xD;&#xA;&#xD;&#xA;Nós temos muito mais para compartilhar contigo!&#xD;&#xA;&#xD;&#xA;Quer apoiar nosso trabalho? Você pode!&#xD;&#xA;&#xD;&#xA;https://www.patreon.com/bolha&#xD;&#xA;https://apoia.se/bolha&#xD;&#xA;pix@bolha.us&#xD;&#xA;&#xD;&#xA;Te vejo no mastodon da bolha.us!&#xD;&#xA;&#xD;&#xA;[s]]]&gt;</description>
      <content:encoded><![CDATA[<p>O TCPDUMP é uma ferramenta de captura e análise de pacotes usada para fazer troubleshooting de rede. Ele usa a LIBCAP para fazer isso.</p>

<p>A ideia aqui é fazer um crash course dessa ferramenta.</p>

<p>Um Crash Course é um tipo de “curso rápido” sobre um determinado assunto, indo direto ao ponto de forma mais objetiva possível.</p>

<h2 id="quando-devo-usar-o-tcpdump">Quando devo usar o tcpdump?</h2>

<p>Sempre que você precisar verificar alguma coisa em nível de rede, seguem algumas perguntas que o TCPDUMP pode ajudar a responder:</p>
<ul><li>A máquina X está chega no servidor Y ?</li>
<li>A máquina X está conseguindo resolver DNS ?</li>
<li>A máquina X está conseguindo resolver NTP ?</li>
<li>Os clientes estã chegando na Máquina X e porta Y ?</li></ul>

<p>Essa são as perguntas mais básicas que o TCPDUMP pode responder para você.</p>

<h2 id="para-quem-foi-feito-esse-post">Para quem foi feito esse post?</h2>

<p>Aqui o foco está nas pessoas atuando nas posições abaixo:</p>
<ul><li>Sysadmin;</li>
<li>Cloud Native Engineer;</li>
<li>Cloud Engineer;</li>
<li>DevOps Engineer;</li>
<li>Plataform Engineer;</li>
<li>GitOps Engineer.</li></ul>

<h2 id="momento-merchan-p">Momento Merchan :P</h2>

<p>Me siga no twitter <a href="https://twitter.com/gutocarvalho" rel="nofollow">@gutocarvalho</a> e acompanhe meus posts sobre Cloud Native e CI/CD.</p>

<p>Aproveite e siga a <a href="https://twitter.com/CDeliveryFdn" rel="nofollow">CD Foundation</a> e <a href="https://twitter.com/cloudnativefdn" rel="nofollow">Cloud Native Foundation</a> no twitter.</p>

<h2 id="colaboradores">Colaboradores</h2>

<p>Pessoas que colaboraram com o texto.</p>
<ul><li>Julia Lamenza (@jlamenza)</li>
<li>João (@P0ssuidao)</li>
<li>Rafael Gomex (@gomex)</li>
<li>Rafael Silva (@rafaotetra)</li></ul>

<h2 id="tcpdump-crash-course">TCPDUMP Crash Course</h2>

<h3 id="instalando-no-mac">instalando no mac</h3>

<p>    $ brew install tcpdump</p>

<h3 id="detectando-recursos-disponíveis-no-sistema">detectando recursos disponíveis no sistema</h3>

<p>Listando interfaces</p>

<p>    $ tcpdump -D</p>

<p>Listando data-link types suportados no sistema</p>

<p>    $ tcpdump -L</p>

<h3 id="capturando-pacotes-de-interfaces">capturando pacotes de interfaces</h3>

<p>Capturando tráfego de todas as interfaces</p>

<p>    $ tcpdump -i any</p>

<p>Capturando tráfego de uma interface específica</p>

<p>    $ tcpdump -i en0</p>

<p>Capturando tráfego de uma interface específica sem resolver nomes</p>

<p>    $ tcpdump -n -i en0</p>

<p>Capturando tráfego de uma interface específica sem resolver nomes ou fazer checksums TCP</p>

<p>    $ tcpdump -n -K -i en0</p>

<p>Capturando tráfego de uma interface específica sem resolver nomes e fazer lookups</p>

<p>    $ tcpdump -nn -i en0</p>

<p>Capturando tráfego de uma interface específica mostrando o mac address</p>

<p>    $ tcpdump -e -i en0</p>

<p>Capturando tráfego de uma interface específica sem ativar o modo promíscuo, ou seja você apenas verá pacotes PARA ou DE seu computador.</p>

<p>    $ tcpdump -p -i en0</p>

<h3 id="trabalhando-com-arquivos">trabalhando com arquivos</h3>

<p>Capturando tráfego de uma interface específica e jogando saída para um arquivo</p>

<p>    $ tcpdump -i eth0 -w tcpdump.txt</p>

<p>Limitando a captura em 10.000 pacotes para não encher seu disco</p>

<p>    $ tcpdump -i eth0 -c 10000 -w tcpdump.txt</p>

<p>Lendo pacotes de um arquivo (replay)</p>

<p>    $ tcpdump -i eth0 -r tcpdump.txt</p>

<h3 id="capturando-pacotes-de-hosts-e-redes-específicos">capturando pacotes de hosts e redes específicos</h3>

<p>Capturando tráfego de um host específico</p>

<p>    $ tcpdump host 192.168.222.1</p>

<p>Capturando tráfego de uma rede específica</p>

<p>    $ tcpdump net 192.168.222.0/24</p>

<h3 id="capturando-pacotes-de-endereços-mac-específicos">capturando pacotes de endereços mac específicos</h3>

<p>Capturando pacotes com origem no endereço mac e8:2b:88:ef:55:11</p>

<p>    $ tcpdump ether src e8:2b:88:ef:55:11</p>

<p>Capturando pacotes com destino ao endereço mac e8:2b:88:ef:55:11</p>

<p>    $ tcpdump ether dst e8:2b:88:ef:55:11</p>

<p>Capturando pacotes enviados ou recebidos pelo mac e8:2b:88:ef:55:11</p>

<p>    $ tcpdump ether host e8:2b:88:ef:55:11</p>

<h3 id="capturando-pacotes-de-origem-e-destino">capturando pacotes de origem e destino</h3>

<p>Capturando tráfego de uma origem específica</p>

<p>    $ tcpdump src 200.150.204.87</p>

<p>Capturando tráfego para um destino específico</p>

<p>    $ tcpdump dst 200.150.204.87</p>

<h3 id="capturando-pacotes-de-serviços-e-portas">capturando pacotes de serviços e portas</h3>

<p> Capturando tráfego de um serviço específico</p>

<p>    $ tcpdump http</p>

<p>Capturando tráfego de uma porta específica</p>

<p>    $ tcpdump port 80</p>

<p>Capturando tráfego de um range de portas</p>

<p>    $ tcpdump portrange 8001-8009</p>

<h3 id="capturando-pacotes-de-protocolos-específicos">capturando pacotes de protocolos específicos</h3>

<p>Capturando apenas pacotes IPv4</p>

<p>    $ tcpdump ip</p>

<p>Capturando apenas pacotes IPv6</p>

<p>    $ tcpdump ipv6</p>

<p>Capturando apenas pacotes TCP</p>

<p>    $ tcpdump tcp</p>

<p>Capturando apenas pacotes UDP</p>

<p>    $ tcpdump udp</p>

<p>Capturando apenas pacotes ICMP</p>

<p>    $ tcpdump icmp</p>

<p>Capturando apenas pacotes ARP</p>

<p>    $ tcpdump arp</p>

<h3 id="capturando-pacotes-em-quantidades-específicas">capturando pacotes em quantidades específicas</h3>

<p>Capturando os primeiros 100 pacotes TCP</p>

<p>    $ tcpdump -c 100 tcp</p>

<h3 id="capturando-pacotes-de-tamanhos-específicos">capturando pacotes de tamanhos específicos</h3>

<p>Capturando pacotes maiores do que 200 bytes</p>

<p>    $ sudo tcpdump greater 200</p>

<p>Capturando pacotes menores do que 200 bytes</p>

<p>    $ sudo tcpdump less 200</p>

<h3 id="capturando-pacotes-usando-expressões-lógicas-no-filtro">capturando pacotes usando expressões lógicas no filtro</h3>

<p>Capturando pacotes com origem no IP 192.168.222.1 <strong>e</strong> destino na porta 8005 (AND)</p>

<p>    $ tcpdump -n -i en0 src 192.168.222.1 and dst port 8005</p>

<p>Capturando pacotes da porta 8001 <strong>ou</strong> 8005 da interface eth0 (OR)</p>

<p>    $ tcpdump -n -i en0 port 8001 or port 8005</p>

<p>Capturando pacotes da interface eth0 <strong>com exceção</strong> da porta 22 (NOT)</p>

<p>    $ tcpdump -n -i en0 not port 22</p>

<p>Capturando pacotes de origem a rede 10.10.0.0/24 e destino rede 192.169.100.0/24 (AND)</p>

<p>    $ tcpdump src net 10.10.0.0/24 and dst net 192.168.100.0/24</p>

<p>Capturando pacotes de duas redes específicas (AND)</p>

<p>    $ tcpdump net 10.10.0.0/24 and net 192.168.100.0/24</p>

<p>Capturando pacotes tcp entre dois hosts específicos (AND)</p>

<p>    $ tcpdump tcp and host 10.10.0.1 and host 192.168.100.54</p>

<p>Capturando pacotes maiores ou igual a 32 bytes (GREATER)</p>

<p>    $ tcpdump tcp &gt;= 32</p>

<p>Capturando pacotes menores ou igual a 32 bytes (LESS)</p>

<p>    $ tcpdump tcp &lt;= 32</p>

<h4 id="quais-as-expressões-lógicas-disponíveis">quais as expressões lógicas disponíveis?</h4>

<pre><code>Negation    : ! or &#34;not&#34; (without the quotes)
Concatanate : &amp;&amp; or &#34;and&#34;
Alternate   : || or &#34;or&#34;
</code></pre>

<h4 id="quais-os-operadores-disponíveis">quais os operadores disponíveis?</h4>

<pre><code>&gt;  : greater
&lt;  : lower
&gt;= : greater or equal
&lt;= : lower or equal
=  : equal
!= : different
</code></pre>

<h4 id="veja-alguns-exemplos-de-composição-lógica-múltipla">veja alguns exemplos de composição lógica múltipla</h4>

<p>Essa regra vai casar com tráfego na porta 80 com host 192.168.222.254 ou 192.168.222.200</p>

<p>    $ tcpdump &#39;((tcp) and (port 80) and ((dst host 192.168.222.254) or (dst host 192.168.222.200)))&#39;</p>

<p>Essa regra vai casar com qualquer tráfego ICMP envolvendo os destinos 00:01:02:03:04:05.</p>

<p>    $ tcpdump &#39;((icmp) and ((ether dst host 00:01:02:03:04:05)))&#39;</p>

<p>Essa regra vai filtrar tráfego para a rede de destino 192.168 com exceção do host 192.168.222.200</p>

<p>    $ tcpdump &#39;((tcp) and ((dst net 192.168) and (not dst host 192.168.222.200)))&#39;</p>

<h3 id="capturando-flags-de-pacotes-tcp">capturando flags de pacotes TCP</h3>

<p>Isolando apenas flags RST do protocolo TCP</p>

<p>    $ tcpdump &#39;tcp[tcpflags] == tcp-rst&#39;</p>

<p>Isolando apenas flags SYN e ACK do protocolo TCP</p>

<p>    $ tcpdump &#39;tcp[tcpflags] == tcp-syn&#39; and &#39;tcp[tcpflags] == tcp-ack&#39;</p>

<p>Isolando apenas flags FIN do protocolo TCP</p>

<p>    $ tcpdump &#39;tcp[tcpflags] == tcp-fin&#39;</p>

<h3 id="capturando-informações-do-protocolo-http">capturando informações do protocolo HTTP</h3>

<p>Essa captura vai mostrar os requests e conteúdos dos pacotes HTTP</p>

<p>    $tcpdump -A -i en0 http</p>

<p>Capturando o user agent</p>

<p>    $ tcpdump -vvAls0 | grep &#39;User-Agent:&#39;</p>

<p>Capturando requisições do tipo GET</p>

<p>    $ tcpdump -vvAls0 | grep &#39;GET&#39;</p>

<p>Capturando requisições do tipo POST</p>

<p>    $ tcpdump -vvAls0 | grep &#39;POST&#39;</p>

<p>Capturando HTTP HEADERS</p>

<p>    $ tcpdump -vvAls0 | grep &#39;Host:&#39;</p>

<p>Capturando HTTP COOKIES</p>

<p>    $ tcpdump -vvAls0 | grep &#39;Set-Cookie|Host:|Cookie:&#39;</p>

<h3 id="capturando-infos-específicas-de-protocolos-diversos">capturando infos específicas de protocolos diversos</h3>

<p>Buscando tráfego SSH independente da porta que estiver rodando</p>

<p>    $ tcpdump &#39;tcp[(tcp[12]&gt;&gt;2):4] = 0x5353482D&#39;</p>

<p>Buscando tráfego de DNS</p>

<p>    $ tcpdump -vvAs0 port 53</p>

<p>Buscando tráfego NTP</p>

<p>    $ tcpdump -vvAs0 port 123</p>

<h3 id="capturando-senhas-clear-text">capturando senhas clear-text</h3>

<p>Aqui vamos pegar senhas clear-text em diversos protocolos</p>

<p>    $ tcpdump port http or port ftp or port smtp or port imap or port pop3 or port telnet -lA | egrep -i -B5 &#39;pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd= |password=|pass:|user:|username:|password:|login:|pass |user &#39;</p>

<h3 id="configurando-timestamp-da-captura-de-pacotes">configurando timestamp da captura de pacotes</h3>

<p>Capturando pacotes sem mostrar timestamp</p>

<p>    $ tcpdump -i en0 -t</p>

<p>Capturando pacotes com timestamp com nano-resolution</p>

<p>    $ tcpdump —time-stamp-precision nano</p>

<p>Capturando pacotes com timestamp em formato unix epoc (seconds since January 1, 1970)</p>

<p>    $ tcpdump -tt</p>

<p>Capturando pacotes com timestamp usando horas, minutos, segundos e microsegundos</p>

<p>    $ tcpdump -tttt</p>

<h3 id="configurando-nível-de-ruído-na-captura-de-pacotes">configurando nível de ruído na captura de pacotes</h3>

<p>Mostrando menos detalhes (quite mode)</p>

<p>    $ tcpdump -i en0 -q</p>

<p>Modo verboso inicial</p>

<p>    $ tcpdump -i en0 -v</p>

<p>Modo um pouco mais verboso</p>

<p>    $ tcpdump -i en0 -vv</p>

<p>Modo mais verboso possível no tcpdump</p>

<p>    $ tcpdump -i en0 -vvv</p>

<h3 id="configurando-os-formatos-de-saída-da-captura">configurando os formatos de saída da captura</h3>

<p>Definindo a saída em formato ASCII</p>

<p>    $ tcpdump -i en0 -A</p>

<p>Definindo a saída em formato HEX</p>

<p>    $ tcpdump -i en0 -x</p>

<h3 id="tcpdump-colorido-tem-como">tcpdump colorido, tem como?</h3>

<p>Dá para fazer, vamos instalar o CCZE para ajudar</p>

<p>    $ brew install ccze</p>

<p>Agora vamos usar ele assim</p>

<p>    $ tpcdump -i en0 | ccze -A</p>

<p>Pronto, saída colorida bem fácil de ler!</p>

<h3 id="quer-saber-mais">quer saber mais?</h3>

<p>Para saber mais veja o help do comando</p>

<p>    $ tcpdump —help</p>

<p>Para ir além acesse a manpage</p>

<p>    $ man tcpdump</p>

<h3 id="qual-o-meu-comando-do-dia-a-dia">qual o meu comando do dia a dia?</h3>

<p>Use essa combinação para ver uma saída bastante verbosa, sem resolução de nomes ou portas e mostrando timestamp o mais human-readble possível.</p>

<p>    $ tcpdump -ttttnnvvS</p>

<h2 id="amarrando-as-pontas">Amarrando as pontas</h2>

<p>Esse post é uma tentativa de dar um norte ou um caminho para fazer um bom troubleshooting de redes usando o tcpdump.</p>

<p>Volte aqui sempre que precisar :)</p>

<h2 id="aquele-abraço">Aquele abraço!</h2>

<p>Mando aquele abraço para o professor MESTRE Ulysses Almeida (@ulyssesalmeida) que me ensinou a usar o TCPDUMP lá no início do século.</p>

<p>Mando aquele abraço pro @gomex e @badtux que via exemplo me fazem contribuir mais e mais e mais :)</p>

<p>Mando aquele abraço para todos que leram, comentaram, revisaram e contribuiram de alguma forma com esse post!</p>

<hr>

<p>Este post é do tipo <a href="/archives/tag:Mindnodes" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Mindnodes</span></a>, entenda <a href="https://gutocarvalho.net/o-que-sao-mindnotes/" rel="nofollow">aqui</a>.</p>

<p>Se gostou manda um alo no twitter <a href="https://twitter.com/gutocarvalho" rel="nofollow">@gutocarvalho</a> ou deixa um comentário bacana :)</p>

<h3 id="refs">Refs</h3>
<ul><li><a href="https://www.tcpdump.org" rel="nofollow">https://www.tcpdump.org</a></li>
<li><a href="https://jvns.ca/tcpdump-zine.pdf" rel="nofollow">https://jvns.ca/tcpdump-zine.pdf</a></li>
<li><a href="https://danielmiessler.com/study/tcpdump/" rel="nofollow">https://danielmiessler.com/study/tcpdump/</a></li>
<li><a href="https://packetlife.net/media/library/12/tcpdump.pdf" rel="nofollow">https://packetlife.net/media/library/12/tcpdump.pdf</a></li>
<li><a href="https://www.xmodulo.com/tcpdump-cheat-sheet-examples.html" rel="nofollow">https://www.xmodulo.com/tcpdump-cheat-sheet-examples.html</a></li>
<li><a href="https://www.comparitech.com/net-admin/tcpdump-cheat-sheet" rel="nofollow">https://www.comparitech.com/net-admin/tcpdump-cheat-sheet</a></li>
<li><a href="https://blog.wains.be/2007/2007-10-01-tcpdump-advanced-filters" rel="nofollow">https://blog.wains.be/2007/2007-10-01-tcpdump-advanced-filters</a></li>
<li><a href="https://gist.github.com/jforge/27962c52223ea9b8003b22b8189d93fb" rel="nofollow">https://gist.github.com/jforge/27962c52223ea9b8003b22b8189d93fb</a></li></ul>

<p>[s]<br>
Guto</p>

<hr>

<h3 id="gostou-do-conteúdo">Gostou do conteúdo?</h3>

<p>Você também me encontra nessas redes!</p>

<h4 id="mastodon">Mastodon</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.us" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.us</span></a></p>

<h4 id="pixelfed">PixelFed</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.photos" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.photos</span></a></p>

<h4 id="lemmy">Lemmy</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.forum" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.forum</span></a></p>

<h4 id="writefreely">WriteFreely</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.blog" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.blog</span></a>
<a href="https://blogs.gutocarvalho.net/@/notamental@bolha.blog" class="u-url mention" rel="nofollow">@<span>notamental@bolha.blog</span></a>
<a href="https://blogs.gutocarvalho.net/@/poesias@bolha.blog" class="u-url mention" rel="nofollow">@<span>poesias@bolha.blog</span></a>
<a href="https://blogs.gutocarvalho.net/@/contos@bolha.blog" class="u-url mention" rel="nofollow">@<span>contos@bolha.blog</span></a></p>

<h4 id="bookwyrm">Bookwyrm</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.review" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.review</span></a></p>

<h4 id="peertube">Peertube</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.tube" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.tube</span></a></p>

<h4 id="friendica">Friendica</h4>

<p><a href="https://blogs.gutocarvalho.net/@/gutocarvalho@bolha.network" class="u-url mention" rel="nofollow">@<span>gutocarvalho@bolha.network</span></a></p>

<h2 id="quer-saber-mais-sobre-mim">Quer saber mais sobre mim?</h2>

<p>Visite meus sites!</p>
<ul><li><a href="https://gutocarvalho.net" rel="nofollow">https://gutocarvalho.net</a>
<ul><li><a href="https://curriculo.gutocarvalho.net" rel="nofollow">https://curriculo.gutocarvalho.net</a></li>
<li><a href="https://resume.gutocarvalho.net" rel="nofollow">https://resume.gutocarvalho.net</a></li></ul></li></ul>

<p>E meus blogs:</p>
<ul><li><a href="https://blogs.gutocarvalho.net" rel="nofollow">https://blogs.gutocarvalho.net</a></li>
<li><a href="https://blogs.gutocarvalho.net/falagutera" rel="nofollow">https://blogs.gutocarvalho.net/falagutera</a></li>
<li><a href="https://blogs.gutocarvalho.net/infra" rel="nofollow">https://blogs.gutocarvalho.net/infra</a></li>
<li><a href="https://blogs.gutocarvalho.net/opiniao" rel="nofollow">https://blogs.gutocarvalho.net/opiniao</a></li>
<li><a href="https://blogs.gutocarvalho.net/contos" rel="nofollow">https://blogs.gutocarvalho.net/contos</a></li>
<li><a href="https://blogs.gutocarvalho.net/poesias" rel="nofollow">https://blogs.gutocarvalho.net/poesias</a></li>
<li><a href="https://blogs.gutocarvalho.net/lives" rel="nofollow">https://blogs.gutocarvalho.net/lives</a></li>
<li><a href="https://blogs.gutocarvalho.net/orixas" rel="nofollow">https://blogs.gutocarvalho.net/orixas</a></li>
<li><a href="https://blogs.gutocarvalho.net/archives" rel="nofollow">https://blogs.gutocarvalho.net/archives</a></li></ul>

<h2 id="conhece-o-coletivo-bolha">Conhece o Coletivo Bolha?</h2>

<p>Então vem conhecer o bolha.io ou bolhaverso!</p>
<ul><li>fediverso
<ul><li>mastodon, <a href="https://bolha.us" rel="nofollow">https://bolha.us</a></li>
<li>pixelfed, <a href="https://bolha.photos" rel="nofollow">https://bolha.photos</a></li>
<li>lemmy, <a href="https://bolha.forum" rel="nofollow">https://bolha.forum</a></li>
<li>bookwyrnm, <a href="https://bolha.review" rel="nofollow">https://bolha.review</a></li>
<li>writefreely, <a href="https://bolha.blog" rel="nofollow">https://bolha.blog</a></li>
<li>peertube, <a href="https://bolha.tube" rel="nofollow">https://bolha.tube</a></li>
<li>castopod, <a href="https://bolha.studio" rel="nofollow">https://bolha.studio</a></li>
<li>owncast, <a href="https://bolha.stream" rel="nofollow">https://bolha.stream</a></li>
<li>friendica, <a href="https://bolha.network" rel="nofollow">https://bolha.network</a><br></li></ul></li>
<li>chat
<ul><li>mattermost, <a href="https://mattermost.bolha.chat" rel="nofollow">https://mattermost.bolha.chat</a></li>
<li>zulip, <a href="https://zulip.bolha.chat" rel="nofollow">https://zulip.bolha.chat</a></li></ul></li>
<li>vídeo
<ul><li>jitsi, <a href="https://bolha.video" rel="nofollow">https://bolha.video</a><br></li></ul></li>
<li>frontends
<ul><li>lingva, <a href="https://translate.bolha.tools" rel="nofollow">https://translate.bolha.tools</a></li>
<li>libremdb, <a href="https://libremdb.bolha.tools" rel="nofollow">https://libremdb.bolha.tools</a></li></ul></li>
<li>translations
<ul><li>libretranslate, <a href="https://libretranslate.bolha.tools" rel="nofollow">https://libretranslate.bolha.tools</a></li></ul></li>
<li>editors
<ul><li>hedgedoc, <a href="https://notes.bolha.tools" rel="nofollow">https://notes.bolha.tools</a></li>
<li>draw.io, <a href="https://draw.bolha.tools" rel="nofollow">https://draw.bolha.tools</a></li>
<li>excalidraw, <a href="https://excalidraw.bolha.tools" rel="nofollow">https://excalidraw.bolha.tools</a></li>
<li>pdf stirling, <a href="https://spdf.bolha.tools" rel="nofollow">https://spdf.bolha.tools</a></li>
<li>wisemaping, <a href="https://mindmap.bolha.tools" rel="nofollow">https://mindmap.bolha.tools</a></li>
<li>mermaid, <a href="https://mermaid.bolha.tools" rel="nofollow">https://mermaid.bolha.tools</a></li>
<li>cryptpad, <a href="https://cryptad.bolha.tools" rel="nofollow">https://cryptad.bolha.tools</a></li></ul></li>
<li>secrets sharing
<ul><li>yopass, <a href="https://yopass.bolha.tools" rel="nofollow">https://yopass.bolha.tools</a></li>
<li>password pusher, <a href="https://pusher.bolha.tools" rel="nofollow">https://pusher.bolha.tools</a></li></ul></li>
<li>pastbin
<ul><li>yabin, <a href="https://yabin.bolha.tools" rel="nofollow">https://yabin.bolha.tools</a></li></ul></li>
<li>terminal recorder
<ul><li>ascinnema, <a href="https://ascinemma.bolha.tools" rel="nofollow">https://ascinemma.bolha.tools</a></li></ul></li>
<li>anti paywall
<ul><li>13ft, <a href="https://open.bolha.tools" rel="nofollow">https://open.bolha.tools</a></li></ul></li></ul>

<p>Nós temos muito mais para compartilhar contigo!</p>

<h3 id="quer-apoiar-nosso-trabalho-você-pode">Quer apoiar nosso trabalho? Você pode!</h3>
<ul><li><a href="https://www.patreon.com/bolha" rel="nofollow">https://www.patreon.com/bolha</a></li>
<li><a href="https://apoia.se/bolha" rel="nofollow">https://apoia.se/bolha</a></li>
<li>pix@bolha.us</li></ul>

<p>Te vejo no mastodon da bolha.us!</p>

<p>[s]</p>
]]></content:encoded>
      <guid>https://blogs.gutocarvalho.net/archives/tcpdump-crash-course</guid>
      <pubDate>Fri, 11 Mar 2022 17:10:20 +0000</pubDate>
    </item>
  </channel>
</rss>