MaraDNS: Simples - Seguro - Robusto

Neste artigo temos uma apresentação do servidor de DNS que veio para substituir o já cansado BIND. MaraDNS é o que temos de mais seguro e robusto em servidores de DNS. Mas o que irá lhe surpreender é a facilidade de uso. Aqui mostro como configurar um servidor de DNS recursivo para que nunca mais usemos os DNS das teles e dos provedores.

[ Hits: 38.083 ]

Por: Daniel Zilli em 04/07/2006


MaraDNS



Somente quem trabalha com algum tipo de suporte ao usuário sabe o trabalho que passa quando alguém perde o acesso a internet somente porque o servidor de DNS mudou de IP ou ficou fora do ar. Situação muito comum para quem ainda configura como DNS os servidores das teles.

Este documento é um guia passo a passo para configurar MaraDNS como um servidor de DNS recursivo. Neste artigo veremos:
  1. Quem é o MaraDNS?
  2. O que é um servidor recursivo?
  3. Instalando o MaraDNS
  4. Servidor Recursivo
  5. Configuração básica

Quem é o MaraDNS?


MaraDNS é um substituto para o BIND. MaraDNS é robusto, eficiente, simples e acima de tudo, seguro.

O que é um servidor recursivo?


Quando se fala em servidor DNS, temos basicamente três tipos de servidor:
  • Autoritativo: é o tipo de servidor que possui autoridade sobre um domínio. Esse é o tipo de servidor que configuramos quando hospedamos o nosso próprio domínio.
  • Recursivo: este é o servidor que mais trabalha, é ele que sei loucamente atrás dos IPs de endereços que nós solicitamos, através dos navegadores, cliente de email, etc. Um servidor de DNS recursivo é um servidor de DNS que contata outros servidores DNS para resolver um determinado domínio.
  • Cache: é um tipo de servidor que busca informações em outros servidores recursivos e armazena tais informações.

Para o escopo de guia, iremos trabalhar como servidor recursivo, já que com esse tipo de servidor configurado em nossa rede ou na própria máquina, eliminamos o uso de DNS externo. O que além de nos dar uma estabilidade maior, nos pode aumentar a velocidade do nosso acesso, já que é comum existir servidores de DNS mal configurados e sobre-carregados perdidos por aí.

    Próxima página

Páginas do artigo
   1. MaraDNS
   2. Instalando o MaraDNS
   3. Configuração básica
Outros artigos deste autor

MaraDNS: Simples - Seguro - Robusto (parte 2)

MaraDNS: Simples - Seguro - Robusto (parte 3)

Leitura recomendada

Configurando o X no Slackware

Personalizando o servidor centralizador de logs com rotate, script e crontab

HAproxy + Stunnel (https) + CentOS 6

Configurando o driver nVidia no Mandrake 10.1

VsFTPD com TLS no Debian 4.0

  
Comentários
[1] Comentário enviado por segment em 04/07/2006 - 09:50h

Parabéns pelo artigo, sinceramente não escutei falar do MaraDNS, concerteza irei testar ele, pelo que deu a entender é muito simples sua configuração, resta saber se realmente é seguro, e se vale a pena usar, vlw brother...

[2] Comentário enviado por teovictor em 04/07/2006 - 10:54h

Hum, a configuração parece ser bem simples mesmo. Gostei.

[3] Comentário enviado por feraf em 04/07/2006 - 12:59h

DNS é um serviço fácil de se implementar. Alguns recursos como busca recursiva já dão um pouco mais de trabalho. O DNS que eu implementei fazia buscas não-recursivas, com suporte a várias zonas e vários forwarders, e era multithreading. Tirei 9 no projeto :-)

[4] Comentário enviado por agk em 04/07/2006 - 15:13h

Caramba só isso? Esse MaraDNS é pura simplicidade, gostei, parabéns.
feraf teria como você disponibilizar esse seu projeto sobre DNS pra comunidade?

[5] Comentário enviado por gersonraymond em 04/07/2006 - 15:32h

Amigo muito bom este artigo também não conhecia esta tal MaraDNS estarei testando o mesmo, muito obrigado pela informação.

[6] Comentário enviado por zilli em 04/07/2006 - 15:56h

Respondendo agk

O MaraDNS é muito bem documentado com vários tutoriais e man-pages. Eu praticamente traduzi tudo, além de outras contribuições, como o pacote do MaraDNS para o slackware que se encontra no site.

O sistema é poderoso, pois além de servidor recursivo, você tem também a opção de trabalhar com ele como autoritativo ou cache. Posso lhe garantir que configurar um DNS para um domínio, nunca foi tão facil.

Estarei nos próximos meses lançado um livro sobre o MaraDNS, esse artigo é apenas um aperitivo. :-)

É com certeza o software de DNS mais seguro no momento. Testem, experimentem, que com certeza irão adorar.

Abraços,
Daniel Zilli



[7] Comentário enviado por lacierdias em 05/07/2006 - 10:42h

Amigo Daniel Zilli,

Seria possivel um artigo sobre o MaraDNS com cache e recursivo.
Porque isso sim deixaria o DNS extremamente rápido.
Poderia disponibilizar o material que vc traduziu..
Abraço.

[8] Comentário enviado por zilli em 05/07/2006 - 14:53h

Respondendo lcrdias,

Caro colega,

Todo o material que traduzi encontra-se inserido no pacote do programa. É só baixar o programa, descompactar e procurar no diretório doc/pt_br . Lá você encontrará os tutoriais traduzidos, inclusive como fazer o MaraDNS funcionar como cache.

Obs: Pessoalmente não utilizo o MaraDNS como cache, por três motivos: a) o ganho de velocidade é insignificante e as vezes fica mais lento, pois você irá depender de um outro servidor para fazer a resolução. b) se o provedor no qual ele se utiliza para fazer as resoluções estiver fora do ar ou mau configurado, você terá problemas. c) porque depender de terceiros, se o MaraDNS sozinho da conta do recado?

Abraços,
Daniel Zilli

[9] Comentário enviado por agk em 22/08/2006 - 09:49h

Finalmente sobrou um tempinho e comecei a testar o mara, depois de instalado e configurado me deparei com esse erro:

Aug 22 09:47:59 mcr-lnx-99 maradns.etc_maradns_mararc: Fatal error: root_servers["."] or upstream_servers["."] must be set in the
Aug 22 09:47:59 mcr-lnx-99 maradns.etc_maradns_mararc: mararc file
Aug 22 09:47:59 mcr-lnx-99 maradns.etc_maradns_mararc: e.g. root_servers["."] = "198.41.0.4"
Aug 22 09:47:59 mcr-lnx-99 maradns.etc_maradns_mararc: In addition, root_servers = {} (or upstream_servers = {}) must preceed this

[10] Comentário enviado por zilli em 22/08/2006 - 10:29h

Olá agk!

Você poderia postar aqui o arquivo mararc para ver como ele ficou?
Pelo erro parece que as variáveis upstream_servers = {} ou ipv4_alias = {} estão mau configuradas.

http://www.maradns.org/faq.html#upstream_d
http://www.maradns.org/tutorial/recursive.html#otherroot

Coloque o arquivo /etc/mararc que daí poderei saber bem certinho o que aconteceu.
Abraços,
Daniel

[11] Comentário enviado por agk em 23/08/2006 - 14:54h

Consegui fazer o maradns funcionar, fazendo do jeito que explica o artigo, ou seja, instalando a partir do fontes.
Antes eu tinha instalado pelo apt-get do Debian e ele gera o mararc com um monte de coisas diferentes nele, removi tudo e coloquei as 3 linhas que diz no artigo, daí que deram esses erros que reportei no comentário acima.
Bem pelo menos agora funciona, vou fazer algumas tentativas ainda pra colocar pra funcionar a instalação pelo apt-get.
Se não der certo vou usar os fontes mesmo, mas eu preciso criar um script para poder dar start/stop no serviço e colocar ele para rodar na inicialização do sistema.
Grato pela ajuda, [ ]'s.

[12] Comentário enviado por odragaonegro em 25/01/2007 - 00:57h

como faço pra inicializar no debian usei no bootmisc não funcionou criei um script com:
duende maradns
tambem não funcionou
alguem pode me ajudar??

[13] Comentário enviado por zilli em 25/01/2007 - 11:03h

Olá amigo,

Você compilou os fontes ou usou um pacote .deb. Eu sei que em algum lugar existe esse pacote em algum repositório, só não sei aonde. :-)
Se compilou os fontes veja se não existe problema de permissão.
Abaixo segue meu script que usou no slackware:
-------------------
#!/bin/bash

# Copyright 2005 Sam Trenholme

# TERMS

# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:

# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.

# This software is provided 'as is' with no guarantees of correctness or
# fitness for purpose.

# This is a script which stops and starts the MaraDNS process
# The first line points to bash because I don't have a true Solaris /bin/sh
# to test this against.

# The following is a pointer to the MaraDNS program
if [ -x "/usr/sbin/maradns" ] ; then
MARADNS="/usr/sbin/maradns"
elif [ -x "/usr/sbin/maradns.authonly" ] ; then
MARADNS="/usr/sbin/maradns.authonly"
elif [ -x "/usr/local/sbin/maradns" ] ; then
MARADNS="/usr/local/sbin/maradns"
elif [ -x "/usr/local/sbin/maradns.authonly" ] ; then
MARADNS="/usr/local/sbin/maradns.authonly"
else
echo unable to find maradns
exit 1
fi

# The following is a pointer to the duende daemonizer
if [ -x "/usr/sbin/duende" ] ; then
DUENDE="/usr/sbin/duende"
elif [ -x "/usr/local/sbin/duende" ] ; then
DUENDE="/usr/local/sbin/duende"
elif [ -x "/usr/local/bin/duende" ] ; then
DUENDE="/usr/local/bin/duende"
elif [ -x "/usr/bin/duende" ] ; then
DUENDE="/usr/bin/duende"
else
echo unable to find duende
exit 1
fi

# The following is the directory we place MaraDNS log entries in
LOGDIR="/var/log"

# The following is a list of all mararc files which we will load or
# unload;
# Simple case: Only one MaraDNS process, using the /etc/mararc file
MARARCS="/etc/mararc"
# Case two: Three MaraDNS processes, one using /etc/mararc.1, the second one
# using /etc/mararc.2, and the third one using /etc/mararc.3
# (this is not as essential as it was in the 1.0 days; MaraDNS can now bind
# to multiple IPs)
#MARARCS="/etc/mararc.1 /etc/mararc.2 /etc/mararc.3"

# Show usage information if this script is invoked with no arguments
if [ $# -lt 1 ] ; then
echo Usage: $0 \(start\|stop\|restart\)
exit 1
fi

# If invoked as stop or restart, kill *all* MaraDNS processes
if [ $1 = "stop" -o $1 = "restart" ] ; then
echo Sending all MaraDNS processes the TERM signal
ps -ef | awk '{print $2":"$8}' | grep maradns | grep -v $$ | \
cut -f1 -d: | xargs kill > /dev/null 2>&1
echo waiting 1 second
sleep 1
echo Sending all MaraDNS processes the KILL signal
ps -e | awk '{print $1":"$NF}' | grep maradns | grep -v $$ | \
cut -f1 -d: | xargs kill -9 > /dev/null 2>&1
echo MaraDNS should have been stopped
fi

# If invoked as start or restart, start the MaraDNS processes
if [ $1 = "start" -o $1 = "restart" ] ; then
echo Starting all maradns processes
for a in $MARARCS ; do
echo Starting maradns process which uses Mararc file $a
# Duende syslogs MaraDNS' output messages and daemonizes MaraDNS
$DUENDE $MARADNS -f $a
done
fi
---------------------

Qualquer coisa entra em contato.

Abraços,
Daniel

[14] Comentário enviado por agk em 01/02/2007 - 08:57h

Se você instalou a partir dos fontes tem um script tem um script pronto para funcionar com Debian dentro de /build chamado mara.startup.

Para funcionar basta copiar ele para /etc/init.d e depois fazer os links para os Runlevels que você quiser que ele inicie.

Se instalou a partir do repositório ou a partir de um .deb este script já deve estar em /etc/init.d, então basta adicionar os links para ele inicializar com o runlevel que você quiser.

[15] Comentário enviado por zilli em 01/02/2007 - 14:01h

Tinha esquecido desse arquivo, mas é o mesmo que uso no Slack e é distribuido nos pacotes RPM. O MaraDNS está sendo desenvolvido em um CentOS.

Daniel

[16] Comentário enviado por bean em 03/04/2007 - 14:22h

o mararc nao esta no /etc/mararc no mandriva 2007 como fasso pra encontra-lo ??? ou ele nao vem com esse arquivo no mandriva 2007

[17] Comentário enviado por zilli em 04/04/2007 - 23:55h

bean,

desculpe a demora.

Não sei se no mandriva existe esse pacote, mas você pode usar o rpm que se encontra no site http://www.maradns.org/download.html

Abraços,
Daniel


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts