Olá pessoal,
Eu estava sofrendo bastante com algumas situações estranhas na minha rede, entre elas a principal era o fato de que Facebook vez ou outra falhar para mostrar algumas fotos, perfis e imagens de maneira geral.
Muitas pessoas culpavam o DNS por isso, e depois de assistir online uma palestra sobre a infraestrutura do Facebook, e de como nossa conexão era jogada "de lá pra cá" pelo sistema deles , resolvi partir para uma solução dedicada de resolução de nomes.
Pelo que eu entendi, este "joguete" acaba causando pane nos sistemas que usam Cache de DNS, exatamente como o do Mikrotik. Mas o objetivo aqui não é explicar isso, é simplesmente, fugir disso.
As 2 soluções mais famosas hoje são o Bind e o Unbound: o Unbound me pareceu um pouco mais simples, por conta disso escolhi ele.
Como o objetivo era um teste, utilizei um Notebook com Windows XP que já tenho na rede 24/7 fazendo as vezes de webserver para meu sistema de Locadora Virtual e Jogos OnLan que tenho.
Vou relatar aqui então, um procedimento com passos simples, sem muitas configurações avançadas, explicando aquilo que eu descobri nos meus testes:
Passo 1: Download
http://unbound.net/download.html
* Eu escolhi a versão "Binaries (no install)" , mas podem escolher a versão "Installer", até recomendo. Se escolher a versão sem instalação, executem pela primeira vez o Unbound já na pasta correta, se recortarem a pasta depois de rodar uma vez, terão que limpar o registro do windows para que o sistema torne a funcionar.
Passo 2: Instale ou Extraia em uma pasta que não será movida futuramente.
Passo 3: Dentro da pasta, os 2 arquivos mais importantes são o "unbound.exe" e o "service.conf" , o primeiro é o executável do processo, e o segundo o arquivo de configuração. Antes de executar, é preciso configurar o arquivo service.conf, vou descrever aqui um modelo de configuração, o mesmo que eu uso aqui pra mim:
## Inicio Config
server:
port: 53
interface: 10.10.10.10 # IP da Interface que irá retornar as configurações
interface: 127.0.0.1 # Em geral o IP da máquina ( acima ) e o loopback se for navegar pelo próprio server resolvendo pelo Unbound
access-control: 0.0.0.0/0 refuse # recomendação de segurança, recuse tudo ( menos o abaixo )
access-control: 127.0.0.1/32 allow # aqui entram as máquinas ou redes que terão
access-control: 10.10.10.9/32 allow # permissão a requisitarem resoluções
access-control: 10.10.10.8/32 allow # estou usando /32 aqui pois meu Unbound está
access-control: 10.10.10.14/32 allow # por detrás de um NAT, se o Unbound rodar em bridge ou roteado, é preciso cadastrar aqui a rede que deve se beneficiar da resolução.
verbosity: 1 # Quantidade de detalhes no LOG, quanto maior o número, mais detalhes.
num-threads: 2 # Quantidade de tarefas, indica-se que se use a quantidade de núcleos do CPU onde o Unbound irá rodar
outgoing-range: 8192 # Essas 2 opções são recomendadas para uso com a biblioteca libevent, de fato eu ativei no Windows...
num-queries-per-thread: 4096 # ... sem me preocupar com a tal biblioteca e tá funcionando bem até hoje.
so-rcvbuf: 4m
so-sndbuf: 4m
msg-cache-slabs: 2 # casando com a quantidade de cores
rrset-cache-slabs: 2 # casando com a quantidade de cores
infra-cache-slabs: 2 # casando com a quantidade de cores
key-cache-slabs: 2 # casando com a quantidade de cores
rrset-cache-size: 100m # quantidade de memória, atentando que este valor deve...
msg-cache-size: 50m # ser o dobro deste
do-ip4: yes
do-ip6: no
module-config: "iterator" # apenas recursivo
logfile: "C:\Program Files\unbound\ubound.log" # ponha a sua pasta de instalação do Unbound
local-data: "cliente.inforosul.com.br A 10.10.10.10" # entrada estática, redireciona manualmente o domínio para o IP, 10.10.10.10 tem um webserver ( além do Unbound )
local-data-ptr: "192.168.21.1 192-168-21-1.provedorsmart.inforosul.com.br" # informa um domínio para o tracert na saída, acho que serve para configurar o reverso pra quem tem direito
#forward-zone: # estar parte é caso você queira utilizar algum DNS de operadora
#name: "." # se deixar "." ele vai utilizar para tudo, os DNSs abaixo ( daí perdendo boa parte dos benefícios do UnBound )
#name: "akamaihd.com" # forma correta se for usar, dizendo que este endereço deve ser resovido pelos DNS's abaixo, e não pelo metódo raíz convencional.
#forward-addr: 189.127.128.199
#forward-addr: 189.127.128.209
#forward-addr: 200.176.2.10
#forward-addr: 8.8.4.4
## Fim Config
Passo 4: Depois de configurado então o services.conf, é hora de executar o Unbound, sua execução exige um parâmetro, portanto é indicado executar pelo Prompt do DOS, até para conseguir visualizar alguma mensagem de erro que por ventura surja. Chegando na pasta do UnBound então, digite o seguinte comando para iniciá-lo: unbound -c service.conf
Ficará a janela preta do windows parada, esta é a indicação do funcionamento normal do Unbound.
Passo 5: Uma vez rodando, experimente navegar, abra um segundo prompt e ping domínios diversos, aqui eu costumo abrir o google e pesquisar qualquer termo, ir no avançado e selecionar sei lá, domínios na Argélia, para não ter perigo de requisitar alguma página que esteja em qualquer cache.
Passo 6: Funcionando, o passo seguinte seria instalar o serviço, para não precisar mais da linha de comando e também em caso de falta de energia não ficar dependente do logon do windows ( se o Windows for Server ele não loga sozinho por padrão ). O comando para instalar o serviço é, atravéz do prompt também, na pasta do unbound, rodar o comando: unbound-service-install.exe
Passo 7: Verifique os serviços do windows e desca até o novo serviço "Unbound DNS validator", se ele não estiver iniciado, inicie-o. Abra o gerenciador de tarefas e veja se unbound.exe está na lista de processos.
Passo 8: Teste por alguns dias, veja como tudo se comporta, se vingar a implementação, procure uma máquina rodando uma distro Linux compatível ou implemente uma máquina dedicada ( também com Linux ) para a tarefa.
Algumas considerações:
Junto com a pasta do Unbound há um arquivo de exemplos ( example.conf ) com a explicação de praticamente todas as opções possíveis, é bastante interessante dar uma lida e testar algumas coisas se quiser entender o que as opções acima dispostas fazem e implementar funções diferentes das recomendadas por mim.
Ao montar a minha configuração eu me basiei em grande parte no que está disposto no próprio site do unbound, no link http://unbound.net/documentation/howto_optimise.html . Fora isso li bastante e conversei com bastante gente, faça o mesmo.
Abraço a todos e bom proveito, qualquer dúvida, postem aqui, se eu souber respondo, se não souber pesquiso/pergunto e tento entender para responder.
Eu estava sofrendo bastante com algumas situações estranhas na minha rede, entre elas a principal era o fato de que Facebook vez ou outra falhar para mostrar algumas fotos, perfis e imagens de maneira geral.
Muitas pessoas culpavam o DNS por isso, e depois de assistir online uma palestra sobre a infraestrutura do Facebook, e de como nossa conexão era jogada "de lá pra cá" pelo sistema deles , resolvi partir para uma solução dedicada de resolução de nomes.
Pelo que eu entendi, este "joguete" acaba causando pane nos sistemas que usam Cache de DNS, exatamente como o do Mikrotik. Mas o objetivo aqui não é explicar isso, é simplesmente, fugir disso.
As 2 soluções mais famosas hoje são o Bind e o Unbound: o Unbound me pareceu um pouco mais simples, por conta disso escolhi ele.
Como o objetivo era um teste, utilizei um Notebook com Windows XP que já tenho na rede 24/7 fazendo as vezes de webserver para meu sistema de Locadora Virtual e Jogos OnLan que tenho.
Vou relatar aqui então, um procedimento com passos simples, sem muitas configurações avançadas, explicando aquilo que eu descobri nos meus testes:
Passo 1: Download
http://unbound.net/download.html
* Eu escolhi a versão "Binaries (no install)" , mas podem escolher a versão "Installer", até recomendo. Se escolher a versão sem instalação, executem pela primeira vez o Unbound já na pasta correta, se recortarem a pasta depois de rodar uma vez, terão que limpar o registro do windows para que o sistema torne a funcionar.
Passo 2: Instale ou Extraia em uma pasta que não será movida futuramente.
Passo 3: Dentro da pasta, os 2 arquivos mais importantes são o "unbound.exe" e o "service.conf" , o primeiro é o executável do processo, e o segundo o arquivo de configuração. Antes de executar, é preciso configurar o arquivo service.conf, vou descrever aqui um modelo de configuração, o mesmo que eu uso aqui pra mim:
## Inicio Config
server:
port: 53
interface: 10.10.10.10 # IP da Interface que irá retornar as configurações
interface: 127.0.0.1 # Em geral o IP da máquina ( acima ) e o loopback se for navegar pelo próprio server resolvendo pelo Unbound
access-control: 0.0.0.0/0 refuse # recomendação de segurança, recuse tudo ( menos o abaixo )
access-control: 127.0.0.1/32 allow # aqui entram as máquinas ou redes que terão
access-control: 10.10.10.9/32 allow # permissão a requisitarem resoluções
access-control: 10.10.10.8/32 allow # estou usando /32 aqui pois meu Unbound está
access-control: 10.10.10.14/32 allow # por detrás de um NAT, se o Unbound rodar em bridge ou roteado, é preciso cadastrar aqui a rede que deve se beneficiar da resolução.
verbosity: 1 # Quantidade de detalhes no LOG, quanto maior o número, mais detalhes.
num-threads: 2 # Quantidade de tarefas, indica-se que se use a quantidade de núcleos do CPU onde o Unbound irá rodar
outgoing-range: 8192 # Essas 2 opções são recomendadas para uso com a biblioteca libevent, de fato eu ativei no Windows...
num-queries-per-thread: 4096 # ... sem me preocupar com a tal biblioteca e tá funcionando bem até hoje.
so-rcvbuf: 4m
so-sndbuf: 4m
msg-cache-slabs: 2 # casando com a quantidade de cores
rrset-cache-slabs: 2 # casando com a quantidade de cores
infra-cache-slabs: 2 # casando com a quantidade de cores
key-cache-slabs: 2 # casando com a quantidade de cores
rrset-cache-size: 100m # quantidade de memória, atentando que este valor deve...
msg-cache-size: 50m # ser o dobro deste
do-ip4: yes
do-ip6: no
module-config: "iterator" # apenas recursivo
logfile: "C:\Program Files\unbound\ubound.log" # ponha a sua pasta de instalação do Unbound
local-data: "cliente.inforosul.com.br A 10.10.10.10" # entrada estática, redireciona manualmente o domínio para o IP, 10.10.10.10 tem um webserver ( além do Unbound )
local-data-ptr: "192.168.21.1 192-168-21-1.provedorsmart.inforosul.com.br" # informa um domínio para o tracert na saída, acho que serve para configurar o reverso pra quem tem direito
#forward-zone: # estar parte é caso você queira utilizar algum DNS de operadora
#name: "." # se deixar "." ele vai utilizar para tudo, os DNSs abaixo ( daí perdendo boa parte dos benefícios do UnBound )
#name: "akamaihd.com" # forma correta se for usar, dizendo que este endereço deve ser resovido pelos DNS's abaixo, e não pelo metódo raíz convencional.
#forward-addr: 189.127.128.199
#forward-addr: 189.127.128.209
#forward-addr: 200.176.2.10
#forward-addr: 8.8.4.4
## Fim Config
Passo 4: Depois de configurado então o services.conf, é hora de executar o Unbound, sua execução exige um parâmetro, portanto é indicado executar pelo Prompt do DOS, até para conseguir visualizar alguma mensagem de erro que por ventura surja. Chegando na pasta do UnBound então, digite o seguinte comando para iniciá-lo: unbound -c service.conf
Ficará a janela preta do windows parada, esta é a indicação do funcionamento normal do Unbound.
Passo 5: Uma vez rodando, experimente navegar, abra um segundo prompt e ping domínios diversos, aqui eu costumo abrir o google e pesquisar qualquer termo, ir no avançado e selecionar sei lá, domínios na Argélia, para não ter perigo de requisitar alguma página que esteja em qualquer cache.
Passo 6: Funcionando, o passo seguinte seria instalar o serviço, para não precisar mais da linha de comando e também em caso de falta de energia não ficar dependente do logon do windows ( se o Windows for Server ele não loga sozinho por padrão ). O comando para instalar o serviço é, atravéz do prompt também, na pasta do unbound, rodar o comando: unbound-service-install.exe
Passo 7: Verifique os serviços do windows e desca até o novo serviço "Unbound DNS validator", se ele não estiver iniciado, inicie-o. Abra o gerenciador de tarefas e veja se unbound.exe está na lista de processos.
Passo 8: Teste por alguns dias, veja como tudo se comporta, se vingar a implementação, procure uma máquina rodando uma distro Linux compatível ou implemente uma máquina dedicada ( também com Linux ) para a tarefa.
Algumas considerações:
Junto com a pasta do Unbound há um arquivo de exemplos ( example.conf ) com a explicação de praticamente todas as opções possíveis, é bastante interessante dar uma lida e testar algumas coisas se quiser entender o que as opções acima dispostas fazem e implementar funções diferentes das recomendadas por mim.
Ao montar a minha configuração eu me basiei em grande parte no que está disposto no próprio site do unbound, no link http://unbound.net/documentation/howto_optimise.html . Fora isso li bastante e conversei com bastante gente, faça o mesmo.
Abraço a todos e bom proveito, qualquer dúvida, postem aqui, se eu souber respondo, se não souber pesquiso/pergunto e tento entender para responder.