15

Pitch: Criei MEU PRÓPRIO SERVIDOR DNS por causa do meu irmão e da minha mãe!

O começo de tudo

Esse projeto não nasceu porque eu queria estudar DNS. Ele nasceu por causa da minha família.

Meu irmão mais novo sempre teve acesso muito livre à internet. Hoje ele tem 11 anos, e comecei a perceber que ficava cada vez mais difícil impedir o acesso a alguns sites que claramente não são apropriados ainda.

Ao mesmo tempo, minha mãe acabou entrando no mundo das apostas. Quem já viu alguém próximo passar por isso sabe como é complicado, basta um clique, um anúncio no YouTube ou algo do tipo para tudo voltar de novo.

Eu queria uma forma de dificultar esse acesso dentro da rede de casa.

O problema é que o roteador da operadora praticamente não oferece nenhum tipo de controle, e quando oferece, normalmente é extremamente limitado. Foi aí que comecei a pensar em outra solução.

A ideia

Em vez de depender do roteador, por que não criar meu próprio servidor DNS?

A ideia era simples: qualquer dispositivo da casa usaria esse DNS, e ele decidiria quais domínios poderiam ou não ser acessados.

Se um domínio estivesse bloqueado, ele não abriria. No lugar, exibiria uma página estática dizendo que o acesso ao site foi proibido. Se não estivesse, tudo continuaria funcionando normalmente.

Assim nasceu o meu pequeno projeto Domain Blocker DNS.

O objetivo nunca foi ser um projeto gigante

Existem diversas soluções profissionais para esse tipo de problema, porém a maioria é paga, depende de serviços externos ou exige equipamentos que muita gente simplesmente não tem, ou ainda não permite que possamos personalizar mais.

Eu queria exatamente o contrário.

  • Um projeto pequeno.
  • Leve.
  • Fácil de entender.
  • Fácil de configurar.
  • Que qualquer pessoa pudesse instalar em um computador antigo, Raspberry Pi ou qualquer máquina ligada na rede (hoje hospedo ele no meu Windows, ou no meu celular antigo).

Como ele funciona

O funcionamento é bem simples.

Quando alguém tenta acessar um site, o servidor verifica se aquele domínio está na lista de bloqueio. Se estiver, ele impede a resolução do endereço, exibindo a página que citei antes ou redirecionando para o site que você define no settings.json.

Caso contrário, a consulta é encaminhada normalmente para servidores DNS públicos, como Cloudflare ou Google DNS (também personalizável).

Também é possível bloquear domínios inteiros usando wildcard, como *.example.com, sem precisar cadastrar cada subdomínio individualmente, além de ser atualizado na hora.

As configurações ficam em um único arquivo JSON em ./src/settings.json e são recarregadas automaticamente quando ele é alterado. Não precisa reiniciar nada.

Um detalhe que achei importante

Quando um site bloqueado é acessado, também existe a possibilidade de redirecionar o navegador para uma página personalizada, ou você exibe o arquivo HTML padrão. É um detalhe simples, mas deixa a experiência muito melhor.

Ainda está evoluindo

Esse projeto ainda é pequeno e certamente pode melhorar muito. No momento não tenho mais ideias pra ele, já que cumpriu seu propósito aqui em casa. Então publiquei, porque talvez outras pessoas tenham exatamente o mesmo problema que eu tive.

Às vezes você só quer impedir o acesso a alguns sites dentro da sua casa, e não precisa de uma solução corporativa para isso.

Se ele ajudar mais alguém, já valeu a pena

No fim das contas, esse projeto nasceu tentando resolver um problema da minha própria família. Se ele acabar ajudando outras pessoas a protegerem os filhos de vocês, ou diminuírem distrações ou simplesmente terem mais controle sobre a própria rede, então já cumpriu seu propósito.

Se alguém quiser contribuir com ideias, melhorias ou correções, vai ser muito bem-vindo.

Carregando publicação patrocinada...
1

Como você configurou os sites proibidos, manualmente ou usou alguma automação para saber o conteúdo interno?

Gostei muito da ideia e aplicaçao!

1
1

Fico feliz que gostou, @Galdino!

Não tem nenhuma automação, eu consigo definir um DNS secundário para filtrar conteúdo adulto por exemplo, mas no repositório hoje você define os domínios que estão bloqueados, e aí a pessoa não pode acessar. Uma possibilidade para isso seria sitelists públicas, como essa do skvggor, que já fornecem listas gigantes de sites inapropriados.

2
1

Meus 2 cents,

Parabens pela iniciativa !

Eh sempre interessante acompanhar projetos reais usando tecnologia para resolver problemas do dia-a-dia, alem de servir para aprender sobre o funcionamento dos protocolos de rede.

So comentando, existem algumas alternativas prontas:

1 - Pi-hole

2 - Using dnsmasq to block DNS requests ou Ubuntu dnsmasq adblock

Repositorio devidamente starreado e forkeado - obrigado por compartilhar !

Saude e Sucesso !


Este post foi favoritado via extensão TABNEWS FAVORITOS

Tem curiosidade sobre IA ? Da uma olhada no meu LIVRO: IA PARA ENGENHEIROS

2

Obrigado pelo star e pelo fork @Oletros!

Sim, eu imaginei que houvesse projetos assim já disponíveis. Porém, o objetivo do repositório é ser algo mais customizável no meu contexto de forma fácil e intuitiva, e esse repo facilitou muito minha vida na hora de bloquear os sites haha

Além disso, levei ele muito em conta porque não tenho como manter meu PC o tempo todo ligado, ou comprar um Raspberry PI, etc. Então assim, posso hospedar esse código no meu celular antigo, ou no meu atual, ou em qualquer lugar onde eu possa abrir uma porta externa e instalar o Node.js. Ele ficou um projeto bem leve e funciona bem, então mantive assim.

Mas mesmo assim obrigado por compartilhar, essas alternativas em específico eu ainda não conhecia! ;)