archives

Tava dando uma olhada nas alternativas ao zimbra em 2022 e encontrei esse projeto.

Eu ainda não testei, mas achei interessante, muito mesmo.

Site do projeto

Código fonte

Stack do projeto

  • ACME
  • ClamAV (optional)
  • Dovecot
  • MariaDB
  • Memcached
  • Netfilter (Fail2ban-like integration by @mkuron)
  • Nginx
  • Oletools via Olefy
  • PHP
  • Postfix
  • Redis
  • Rspamd
  • SOGo
  • Solr (optional)
  • Unbound
  • A Watchdog to provide basic monitoring

Features

  • DKIM and ARC support
  • Black- and whitelists per domain and per user
  • Spam score management per-user (reject spam, mark spam, greylist)
  • Allow mailbox users to create temporary spam aliases
  • Prepend mail tags to subject or move mail to sub folder (per-user)
  • Allow mailbox users to toggle incoming and outgoing TLS enforcement
  • Allow users to reset SOGo ActiveSync device caches
  • imapsync to migrate or pull remote mailboxes regularly
  • TFA: Yubikey OTP and U2F USB (Google Chrome and derivatives only), TOTP
  • Add domains, mailboxes, aliases, domain aliases and SOGo resources
  • Add whitelisted hosts to forward mail to mailcow
  • Fail2ban-like integration
  • Quarantine system
  • Antivirus scanning incl. macro scanning in office documents-
  • Integrated basic monitoring

Dentre outras coisas.

Sogo Groupware

Ele usa o SOGO como groupware web

Outro projeto que eu ainda não conheço.

Preciso testar essa stack qualquer hora...

;)

[s]
Guto


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Surgiu a necessidade de colocar um auto-reply no Telegram para avisar que agora eu estou mais presente no Discord.

Já tinha uma galera bem brava comigo por não responder PVT, sorry gente :)

Procurei em muitos lugares e acabei achando esse snippet aqui e estou usando desde então.

Basicamente é um script em Python que usa a biblioteca Telethon.

import time

from telethon import TelegramClient, events

api_id = SEU_API_ID
api_hash = 'SEU_API_HASH'

# fill in your own details here
phone = 'SEU_NUMERO_DE_TELEFONE'
session_file = './session.gutera'  # use your username if unsure
password = 'SUA_SENHA'  # if you have two-step verification enabled

# content of the automatic reply
message = "[guterabot] Olá, estou dando um tempo do telegram, caso precise falar comigo entre no DISCORD #BolhaTech https://abre.ai/bolhatech"

if __name__ == '__main__':
    # Create the client and connect
    # use sequential_updates=True to respond to messages one at a time
    client = TelegramClient(session_file, api_id, api_hash, sequential_updates=True)


    @client.on(events.NewMessage(incoming=True))
    async def handle_new_message(event):
        if event.is_private:  # only auto-reply to private chats
            from_ = await event.client.get_entity(event.from_id)  # this lookup will be cached by telethon
            if not from_.bot:  # don't auto-reply to bots
                print(time.asctime(), '-', event.message)  # optionally log time and message
                time.sleep(1)  # pause for 1 second to rate-limit automatic replies
                await event.respond(message)


    print(time.asctime(), '-', 'Auto-replying...')
    client.start(phone, password)
    client.run_until_disconnected()
    print(time.asctime(), '-', 'Stopped!')

É só mandar um

$ python3 nomedoarquivo.py

E pronto, auto-reply funcionando.

Refs


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Agora estamos usando o projeto TediCross para conectar Telegram e Discord. O projeto é feito em NodeJS, se mostrou mais leve e estável que o matterbridge que estava apresentando muitos problemas de rede e timeout.

Seguimos com o MatterBridge (escrito em GO) entre Matrix e Discord, esse ainda está valendo a pena.

Conheça o projeto 

Exemplo de arquivo de configuração

telegram:
  token: SEU_TOKEN_TELEGRAM
  useFirstNameInsteadOfUsername: false
  colonAfterSenderName: false
  skipOldMessages: true
  sendEmojiWithStickers: true
discord:
  useNickname: false
  token: SEU_TOKEN_DISCORD
  skipOldMessages: true
  replyLength: 100
  maxReplyLines: 2
bridges:
  - name: valida-bridge
    direction: both
    telegram:
      chatId: -1001707735774
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955441656465879100'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: devops-br
    direction: both
    telegram:
      chatId: -1001423205502
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955421330038226984'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: docker-br
    direction: both
    telegram:
      chatId: -1001020429061
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955421304515887135'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: cloudnative-br
    direction: both
    telegram:
      chatId: -1001375583910
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955421395645497375'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: cicd-br
    direction: both
    telegram:
      chatId: -1001283833531
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955421395645497375'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: gitlab-br
    direction: both
    telegram:
      chatId: -1001116126565
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955421455598891049'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: terraform-br
    direction: both
    telegram:
      chatId: -1001141750151
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955421523404021822'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: packer-br
    direction: both
    telegram:
      chatId: -1001496751272
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955421501576851526'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: ansible-br
    direction: both
    telegram:
      chatId: -1001112694111
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955421554383138846'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true 
  - name: devosdays-br
    direction: both
    telegram:
      chatId: -1001109056730
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955426512176287834'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true 
  - name: gitops-br
    direction: both
    telegram:
      chatId: -1001375992764
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955421349273292870'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: macusers-br
    direction: both
    telegram:
      chatId: -1001052488672
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955564437555781682'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: tecladomecanico
    direction: both
    telegram:
      chatId: -1001208515699
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955564291665309726'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: homeservers
    direction: both
    telegram:
      chatId: -1001178428134
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '956331120247599144'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: vagas
    direction: both
    telegram:
      chatId: -1001682001563
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955598939380387950'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
  - name: conduta
    direction: both
    telegram:
      chatId: -1001095406242
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      relayCommands: true
      crossDeleteOnDiscord: true
    discord:
      channelId: '955573278796300318'
      relayJoinMessages: false
      relayLeaveMessages: false
      sendUsernames: true
      crossDeleteOnTelegram: true
debug: true

That's it!

[s] Guto


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Bom bom bom... eis a questão!


Tantos cursos, o que eu devo fazer em 2022?

Se você quer entrar logo no mercado de trabalho, e fazer um curso mais focado no que você vai ver aqui fora da faculdade, eu posso te dar algumas sugestões.

Cenário 1 (Preciso resolver isso rápido)

Se você tem contas para pagar, se ajuda nas contas da casa, se tem gente para sustentar e tá precisando pivotar e começar rápido em outra área, os cursos de tecnólogo são para você.

Em caso de um foco maior no lado de INFRA eu iria de:

- Tecn. Computação em Nuvem
- Tecn. DevOps
- Tecn. Cybersecurity 

Em caso de algo com foco maior em DEV eu iria de:

- Tecn. Backend
- Tecn. Web
- Tecn. Mobiles

Outras areas interessantes:

- Ciência de dados

Cursos de tecnólogo que eu não recomendo + fazer hoje:

- Tecn. AD Sistemas
- Tecn. Redes
- Tecn. Gestão da Informação

Eu acho que já foi o tempo deles e acho que precisam de um reboot. E no meu caso, eu recomendo algo para quem quer FIT com o mercado, se for esse seu caso vai nos de cima, tem vaga sobrando, paga bem, tá mais alinhado com a realidade do mundo hoje.

Cenário 2 (minha vida tá em paz)

Se você mora com alguém, não paga contas, não ajuda com as tarefas da casa, tem o que comer, beber e vestir e pode até se dar ao luxo de se divertir. Se alguém te banca de alguma forma (financeiramente), se alguém pode pagar os seus estudos e deixar você focar em estudar, e além de tudo isso, se você quer estudar COMPUTAÇÃO a FUNDO, não importando quantos semestres sejam, eu indicaria os cursos de bacharelado:

Na área de engenharia e desenvolvimento

- Engenharia da computação
- Engenharia de software
- Engenharia de telecomunicações

Tags: sistemas operacionais, redes, programação, hardware, elétrica e eletrônica

Na área de ciência e desenvolvimento

- Ciência da computação 
- Sistemas da informação

Tags: sistemas operacionais, redes, programação

Esse seria um resumo do resumo, o assunto é denso, complexo, cada curso tem um objetivo e um propósito, precisa estudar tudo com calma e cuidado, contudo, eu acho que isso aqui já dá um norte melhor que uma mensagem de 280 caracteres no twitter :)

Cenário 3 (E se eu quiser estudar por conta, isso rola?)

Rola, claro, isso é o que chamamos de um processo de autodidaxia, eu começaria por aqui.

- mentoria IaC
- linuxtips

[s]
Guto


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Não é todo dia que a gente toma, mas esse é uma honra :)


Eis que eu estava ontem na rua, resolvendo questões da vida, universo e tudo mais, de boas, e do nada o meu celular começou a pipocar notificação de todas as redes sociais possíveis e imagináveis, tudo graças a um EXPOSED do grande @Badtux_

Muito obrigado meu parceiro e conte comigo sempre!

Ainda não conhece o @badtux_ e a #LinuxTips?

Demoro, cola lá https://www.linuxtips.io/

[s]
Guto


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Quer usar dois provedores, mas não sabe por onde começar? Só vem!


Multi-WAN + Balanceamento de Links

Alguns profissionais – como eu – usam dois provedores para garantir que possam trabalhar sem interrupção em seu home office.

Apesar de ter dois provedores, nem tudo são flores, ficar trocando de modem ou rede sem fio pode ser beeeem chato, além do que a rede WIFI de um dispositivo vai interferir na outra, e mesmo que use cabos, ficar trocando o cabo de rede não é lá muito prático, em especial se está no meio de uma reunião, apresentação ou procedimento.

Para que a gente não passe por esses problemas, e para que a mudança de provedor ocorra de forma transparente, sem mexer com cabos ou trocar de rede sem fio, é preciso de um roteador multi-wan com balanceamento de links e também de um sistema wifi independente, de preferência com a tecnologia MESH.

Na minha primeira aventura nesse meio usei equipamentos da TP-Link

- TP-Link Router R600VPN para receber e balancear os dois links
- TP-Link Switch SG108E 16 Portas Gigabit para ligar todos os dispositivos
- TP-Link Antenas WIFI Deco M5 ( 3 unidades )

Depois de alguns anos busquei algo mais flexível e profissional e adotei a UNIFI

- Unifi USG como roteador para receber e balancear os dois links
- Unifi Switch8-60W para ligar todos os dispositivos e quartos
- Unifi Antenas WIFI UAP-AC-M-BR Mesh AC ( 2 unidades )

E o provedor?

É um pouco complexo conseguir retirar o dipositivo do provedor, alguns não concordam, então nesse caso basta desligar o WIFI dos dispositivos existentes, conectar seus novos equipamentos e usar o WIFI do seu sistema independente MESH.

Caso o provedor concorde em tirar o equipamento deles e deixar você discar PPPOE diretamente, o ideal é comprar um equipamento de conversão de FIBRA para ETHERNET do tipo GPON ou EPON, cada caso é um caso, isso vai depender da tecnologia do seu provedor.

Curiosidades do meu cenário

Aqui eu uso dois provedores de fibra, cada um vem de uma cidade diferente, em fibras independentes. O provedor principal tem IP Fixo oferece 50% de Upload em relação a velocidade contratada. Meu segundo provedor também oferece IP Fixo e 30% de upload em relação a velocidade contratada. Upload pra mim é importante por causa das Lives então o principal é o que tem mais upload, sempre.

Na maioria dos casos, o pessoal prefere usar o provedor de backup em planos com 50% ou até 33% (1/3) da capacidade do plano principal, até para reduzir custos, mas varia de cada tipo de usuário. Eu que sou power user, os planos são quase os mesmos. Aqui em casa eu não posso falhar, se perder internet levo de 45 minutos a 1 hora para chegar em algum home office que tenha link bom o suficiente para eu conseguir trabalhar.

Estratégias

Podemos definir um balanceamento continuo entre os dois provedores ou então deixar o segundo como failover (backup), onde só será utilizado no caso de falha do primeiro, vai depender do gosto e necessidade de cada um.

É possível também criar grupos de dispositivos e definir que alguns vão sair por um provedor específico, com isso evitamos que o segundo link fique ocioso em caso de uso em estratégia failover. Aqui em casa eu faço isso aqui, minhas alexas, tvs e smart devices estão pendurados no segundo provedor de forma preferencial.

Benefícios

Confesso que eu nem percebo quando o provedor principal cai, é tudo bem transparente, se não fosse o APP no celular avisando eu nem iria saber que algo do tipo aconteceu.

Referências

TP-LINK

- Router Multiwan VPN-ER605
- Antenas WIFI MESH DECO M5
- SWITCH 16 Portas SG108e Gigabit

UNIFI

- Router Multiwan UNIFI USG
- Antenas WIFI UNIFI AC MESH
- SWITCH UNIFI 8-60W Gigabit


[s]
Guto

---

Este post é do tipo #FalaGutera, entenda aqui.

Se gostou manda um alo no twitter @gutocarvalho.

---

Se quiser falar comigo estou sempre no DISCORD da #BolhaTech :)

Aproveite e siga também os profiles abaixo:
- CD Foundation
- Cloud Native Foundation

:")


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Quer saber quais os canais integrados nas 3 redes? Então vem!


Até o momento temos as comunidades open source abaixo:

#devops-br
#cloudnative-br
#gitops-br
#cicd-br
#coberturas-br (coberturas de eventos)
#devopsdays-br
#codigo-de-conduta (canal de voluntários e mantenedores)

Os canais de tecnologias diversas:

#packer-br
#terraform-br
#docker-br
#gitlab-br
#ansible-br

As comunidades de TI variadas:

#macusers-br
#tecladomecanico

Canais comuns apenas no Matrix.org e Discord #BolhaTech

#kubernetes-br
#rancher-br
#servicemesh-br

#vault-br
#nomad-br
#boundary-br

#eventos-br
#vagas-br

Canais presentes – no momento – apenas no Discord #BolhaTech

#cloud-aws
#cloud-gcp
#cloud-oracle
#cloud-azure

#sgbd-mysql
#sgbd-postgresql
#sgbd-redis

#network-br
#linux-br

Redes Cobertas pela bridge

- Telegram
- Matrix.org
- Discord, servidor #BolhaTech (https://abre.ai/bolhatech)

Tecnologia de Bridge

- Matterbridge

Que integrar seu canal? Me chama no Matrix ou Discord que eu te ajudo.

[s]
Guto

---

Este post é do tipo #FalaGutera, entenda aqui.

Se gostou manda um alo no twitter @gutocarvalho.


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

Criamos um DISCORD para dominar o mundo... Brincadeira :P


Fala meu povo.

Passando para avisar que criamos um servidor no DISCORD chamado #BolhaTech e estamos integrando os canais dele com os canais do TELEGRAM e MATRIX.ORG.

Os mesmos canais de TI em 3 redes diferentes, use a rede que quiser.

Veja aqui a lista de canais integrados e disponíveis.

:)

Só vem!

- https://abre.ai/bolhatech

[s]
Guto

---

Este post é do tipo #FalaGutera, entenda aqui.

Se gostou manda um alo no twitter @gutocarvalho.


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

O ministro do STF Alexandre de Moraes determinou o bloqueio do Telegram em todo Brasil.


Obviamente isso não é algo imediato, as operadoras pediram até terça-feira para fazer tal bloqueio.

No momento tem muita gente migrando para outras redes e a maioria está com receio de ficar sem acesso a suas comunidades de TI no Telegram.

Em fevereiro eu escrevi um post sobre isso, no qual eu disse que eu já imaginava esse possível cenário, portanto, eu comecei a criar "bridges" entre os canais que eu mantenho no telegram e a rede "matrix.org".

Eu explico o processo todo nesse post aqui

- https://gutocarvalho.net/migrando-telegram-para-matrix/

Leia o post para entender porque eu recomendo a matrix.org e como usar essa rede no celular, web ou desktop.

Canais que você vai encontrar lá conectados ao telegram

#cicd-br (canal #cdnbr no telegram)
#gitops-br
#cloudnative-br
#macusers-br
#tecladomecanico
#gitlab-br
#docker-br
#packer-br
#devops-br
#terraform-br
#devopsdays-br
#coberturas-br
#ansible-br
#codigo-de-conduta

Outros canais só no Matrix

#kubernetes-br
#rancher-br

Se você mantém comunidades no
Telegram e precisa de ajuda para criar uma bridge para alguma outra rede, me chama no twitter (@gutocarvalho) que eu tento de ajudar da melhor forma :)

[s]
Guto

---

Este post é do tipo #FalaGutera, entenda aqui.

Se gostou manda um alo no twitter @gutocarvalho.


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]

DIG Crash Course

O DIG é uma ferramenta para interrogar servidores de DNS.

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

A ideia aqui é fazer um crash course dessa ferramenta.

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

Quando devo usar o DIG?

Sempre que você precisar verificar alguma coisa em nível de DNS, seguem alguns cenários que o DIG pode te ajudar :

  • para testar se a resolução de DNS está funcionando
  • para comparar a resolução de DNS entre NS diferentes
  • quando precisamos resolver um problema de DNS
  • para descobrir o IP de um registro de DNS
  • para descobrir o MX de um domínio
  • para descobrir o NS de um domínio
  • para descobrir o SOA de um domínio
  • para descobrir o PTR (reverso) de um endereço IP
  • para verificar se uma alteração de registro já fez efeito

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

Para quem foi feito esse post?

Aqui o foco está nas pessoas atuando nas posições abaixo:

  • Sysadmin;
  • Cloud Native Engineer;
  • Cloud Engineer;
  • DevOps Engineer;
  • Plataform Engineer;
  • GitOps Engineer.

Momento Merchan :P

Me siga no twitter @gutocarvalho e acompanhe meus posts sobre Cloud Native e CI/CD.

Aproveite e siga a CD Foundation e Cloud Native Foundation no twitter.

Colaboradores

Pessoas que colaboraram com o texto.

  • Julia Lamenza (@jlamenza)
  • João (@P0ssuidao)
  • Rafael Gomex (@gomex)
  • Rafael Silva (@rafaotetra)

Dig Crash Course

Aprendendo o básico para uso no dia a dia

fazendo uma pesquisa simples com todos os detalhes

$ dig gutocarvalho.net

fazendo uma pesquisa simples retornando só o IP

$ dig +short gutocarvalho.net

pesquisando o SOA do domínio

$ dig SOA gutocarvalho.net

pesquisando o NS do domínio

$ dig NS gutocarvalho.net

pesquisando o MX de correio

$ dig MX gutocarvalho.nmet

pesquisando o TTL do domínio

$ dig TTL gutocarvalho.net

pesquisando o PTR (reverso) de um IP

$ dig -x 8.8.8.8

pesquisando os registros TXT de um domínio

$ dig txt gutocarvalho.net

Explorando um pouco mais o DIG

pesquisando um registro em um NS específico

$ dig @1.1.1.1 lb.gutocarvalho

pesquisando as informações DNSSEC de um domínio

$ dig +dnssec gutocarvalho.net

pesquisando as chaves DNSSEC de um domínio

$ dig DNSKEY -qr gutocarvalho.net

pesquisando uma entrada de DNS com trace

$ dig +trace lb.gutocarvalho.net

verificando o tempo de resposta do SOA de um domínio

$ dig +nssearch gutocarvalho.net

Parâmetros interessantes do DIG

+short

$ dig gutocarvalho.net +short

185.199.110.153
185.199.111.153
185.199.108.153
185.199.109.153

O short só retorna os IPs para qual o registro aponta.

+tcp

$ dig +tcp gutocarvalho.net

Usado quando desejamos fazer a pesquisa via TCP, o padrão é UDP.

+time

$ dig +time=5 gutocarvalho.net

Define o timeout da pesquisa para 5 segundos.

+multiline

$ dig gutocarvalho.net A +dnssec +multiline

Vai pesquisar entradas A com DNSSEC associado em multi-linhas.

Filtrando saída do DIG com parâmetros especiais

Primeiro vamos fazer uma pesquisa comum para ter uma saída completa

$ dig gutocarvalho.net

; <<>> DiG 9.10.6 <<>> gutocarvalho.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 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

Agora vamos testando cada parâmetro

+noall

$ dig gutocarvalho.net +noall

; <<>> DiG 9.10.6 <<>> gutocarvalho.net +noall
;; global options: +cmd

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

+answer +noall

$ dig gutocarvalho.net +noall +answer

; <<>> DiG 9.10.6 <<>> 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

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.

+nocmd

 dig +nocmd a lb.gutocarvalho.net +noall +answer
lb.gutocarvalho.net.	42	IN	A	200.150.204.87

Quando aplicado retira a versao do bind e comando

; <<>> DiG 9.10.6 <<>> a lb.gutocarvalho.net +noall +answer

Para funcionar o parâmetro tem que vir logo após o comando dig

+nocomments

$ dig gutocarvalho.net +nocomments

; <<>> DiG 9.10.6 <<>> 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

O nocomments retira toda a parte inicial da resposta

; <<>> DiG 9.10.6 <<>> gutocarvalho.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 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

+noquestion

$ dig gutocarvalho.net +noquestion

; <<>> DiG 9.10.6 <<>> gutocarvalho.net +noquestion
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 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

O noquestion retira essa parte da resposta

;; QUESTION SECTION:
;gutocarvalho.net.		IN	A

+nostats

$ dig gutocarvalho.net +nostats

; <<>> DiG 9.10.6 <<>> gutocarvalho.net +nostats
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 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

Esse parâmetro suprime as estatísticas da pesquisa.

;; 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

+noauthority

;; AUTHORITY SECTION:
gutocarvalho.net.	3144	IN	NS	monroe.ns.cloudflare.com.
gutocarvalho.net.	3144	IN	NS	houston.ns.cloudflare.com.

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

+noadditional

;; 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

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.

+norec

$ dig +norec @monroe.ns.cloudflare.com. gutocarvalho.net a

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.

Pesquisas parametrizadas comuns

pesquisa comum e rápida que retorna apenas o endereço IP

$ dig +short lb.gutocarvalho.net

pesquisando por registro A com resposta simples

$ dig +nocmd lb.gutocarvalho.net a +noall +answer

pesquisando por CNAME com resposta simples

$ dig +nocmd mail.google.com cname +noall +answer

pesquisando por registro TXT com resposta simples

$ dig +nocmd google.com txt +noall +answer

fazendo pesquisa em múltiplos domínios

$ dig ubuntu.com mx +noall +answer redhat.com ns +noall +answer

Pesquisa usando um arquivo (bulk)

Imagine que você tem o arquivo dominios.txt com o conteúdo abaixo

gutocarvalho.net
nativetrail.io
viahorizonte.life

vamos rodar agora uma pesquisa contra o arquivo

$ dig -f dominios.txt +short

saída

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

:)

Quer saber mais?

Para saber mais veja o help do comando

$ dig —help

Para ir além acesse a manpage

$ man dig

Configurando seu .digrc

O dig tem um arquivo de configuração, o famoso .digrc.

$ echo “+nostats +nocomments +nocmd +noquestion +recurse” > ~/.digrc

Agora você digita menos e tem o resultado desejado.

Um pouco de teoria de DNS para quem gosta :)

Entendendo o funcionamento do DIG

Imagine que mandamos essa query pelo dig

$ dig gutocarvalho.net

Essa query é estrutura da seguinte forma pelo DIG para o servidor de DNS autoritativo


           +-------------------------------------+
Header     | OPCODE=SQUERY                       |
           +-------------------------------------+
Question   | QNAME=GUTO.NET., QCLASS=IN, QTYPE=A |
           +-------------------------------------+
Answer     | <empty>                             |
           +-------------------------------------+
Authority  | <empty>                             |
           +-------------------------------------+
Additional | <empty>                             |
           +-------------------------------------+
           

A resposta do servidor que responde pelo domínio foi essa


; <<>> DiG 9.10.6 <<>> gutocarvalho.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- 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

Podemos estruturar dessa forma para entender melhor

           +--------------------------------------------+
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  | <empty>                                    |
           +--------------------------------------------+
Additional | <empty>                                    |
           +--------------------------------------------+

Entendendo as repostas entregues pelo DIG

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

+------------+
| 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
+------------+

Vamos entender cada uma delas.

- 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

HEADER SECTION

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

Informações que encontramos do HEADER

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                      ID                       |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR|   Opcode  |AA|TC|RD|RA| Z|AD|CD|   RCODE   |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    QDCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    ANCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    NSCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|                    ARCOUNT                    |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

Entendendo as informações do HEADER

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

Entendendo um pouco mais das Flags do HEADER

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 "recursive desired", sinaliza que desejamos usar pesquisa recursiva, isso é definido pelo cliente.

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

- AD significa "authenticated data", 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 "checking disabled", utilizado pelo DNSSEC.

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

Entendendo os status (RCODE) mais comuns

- 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

QUESTION SECTION

Aqui encontraremos dados de nossa query.

;; QUESTION SECTION:
;gutocarvalho.net.		IN	A

Uma query é estruturada da seguinte forma:

    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                                               |
    /                     QNAME                     /
    /                                               /
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     QTYPE                     |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                     QCLASS                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+

Vamos entender QNAME, QTYPE e QCLASS.


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

ANSWER SECTION

;; 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

Retorna os registros e informações destes, se houver.

AUTHORITY SECTION

;; AUTHORITY SECTION:
gutocarvalho.net.	3533	IN	NS	monroe.ns.cloudflare.com.
gutocarvalho.net.	3533	IN	NS	houston.ns.cloudflare.com.

Retorna dados de autoridade acerca do domínio.

ADITIONAL SECTION

;; ADDITIONAL SECTION:
monroe.ns.cloudflare.com. 107	IN	A	172.64.34.153
houston.ns.cloudflare.com. 900	IN	A	172.64.35.52

Retorna dados adicionais da query.

QUERY SECTION

;; 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

Retorna métricas da query, auto explicativo.

Glossário

termos comuns

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

tipos de registros comuns e seus significados

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

tipos de registro para DNSSEC

  • DNSKEY: keeps the public key to verify RRSIGs
  • DS: keeps the digest of a DNSKEY RR
  • RRSIG: keeps the digital signature of an RRset
  • NSEC: used for authenticated denial existence, meaning to show an RRset is not part of a signed zone

tipos de pesquisa de DNS

  • Iterative approach: where the resolver/client repeatedly queries different servers until it finds the answer
  • 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

Quais outras ferramentas uso para troubleshooting de DNS?

ferramentas clássicas

  • nslookup
  • host
  • whois

ferramentas extras para testes do lado do cliente

ferramentas extras para testes em seu servidor de dns

Quais os comandos que eu mais uso no dia-a-dia?

$ dig +short lb.gutocarvalho.net $ dig -x 200.150.204.87 $ dig mx gutocarvalho.net $ dig ns gutocarvalho.net

Amarrando as pontas

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

Volte aqui sempre que precisar :)

Aquele abraço!

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.

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

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

DNS RFC's

References


Este post é do tipo #Mindnodes, entenda aqui.

Se gostou manda um alô no twitter @gutocarvalho ou deixa um comentário bacana :)

[s]
Guto


Gostou do conteúdo?

Você também me encontra nessas redes!

Mastodon

@gutocarvalho@bolha.us

PixelFed

@gutocarvalho@bolha.photos

Lemmy

@gutocarvalho@bolha.forum

WriteFreely

@gutocarvalho@bolha.blog @notamental@bolha.blog @poesias@bolha.blog @contos@bolha.blog

Bookwyrm

@gutocarvalho@bolha.review

Peertube

@gutocarvalho@bolha.tube

Friendica

@gutocarvalho@bolha.network

Quer saber mais sobre mim?

Visite meus sites!

E meus blogs:

Conhece o Coletivo Bolha?

Então vem conhecer o bolha.io ou bolhaverso!

Nós temos muito mais para compartilhar contigo!

Quer apoiar nosso trabalho? Você pode!

Te vejo no mastodon da bolha.us!

[s]