<h1>QUESTÃOS FREQUENTEMENTES PERGUNTADAS (FAQ)</h1>

<h2>INDICE</h2>
<BLOCKQUOTE>
1. <A HREF=#version1>Eu ainda estou usando versão 1.0 do MaraDNS</A> <P>

2. <A HREF=#tryout>Como eu experimento o MaraDNS?</A> <P>

3. <A HREF=#license>Sob qual licença é liberado o MaraDNS?</A><P>

4. <A HREF=#bugzilla>Como que relato bugs no MaraDNS?</A><P>

5. <A HREF=#chatter>Alguns email da lista de email não falam sobre MaraDNS!</A><P>

6. <A HREF=#unsub>Como faço para sair da lista de email?</A><P>

7. <A HREF=#rdns>Como eu configuro um DNS reverso no MaraDNS?</A><P>

8. <A HREF=#timeout>Eu estou em uma rede lenta, e MaraDNS não consegue processar  
   consultas recursivas</A><P>

9. <A HREF=#obtuse>Quando tento executa o MaraDNS, recebo uma mensagem de erro cryptic.</A><P>

10. <A HREF=#netstat>Após inicializar o MaraDNS, não consigo ver o processo quando 
executo netstat - na </A><P>

11. <A HREF=#jsstr>Que biblioteca de string MaraDNS utiliza?</A><P>

12. <A HREF=#whythreads>Por que MaraDNS utiliza um modelo de multi-threads?</A><P>

13. <A HREF=#wishlist>Eu acho que aquela característica XXX deveria ser implantada no 
MaraDNS</A><P>

14. <A HREF=#docbook>Eu sinto que o MaraDNS deveria usar outro formato de 
documentação</A><P>

15. <A HREF=#patch>Existe algum processo que preciso seguir para adicionar um patch 
no MaraDNS?</A><P>

16. <A HREF=#primary>Pode MaraDNS agir com um servidor de nomes primário?</A><P>

17. <A HREF=#secondary>Pode MaraDNS agir com um servidor de nomes segundário?</A><P>

18. <A HREF=#auth>Qual a diferença entre um servidor de dns autoritavio e   
um recursivo?</A><P>

19. <A HREF=#bailiwick>O client getzone não está me permitindo adiconar certos 
    hostnames à minha zona.</A><P>

20. <A HREF=#portable>MaraDNS pode ser portado para outras plataformas?</A><P>

21. <A HREF=#cygwin>Eu posso usar o MaraDNS no Windows?</A><P>

22. <A HREF=#upstream>MaraDNS "congela" após ser usado por algum tempo</A><P>

23. <A HREF=#python>Que tipo de integração com o Python MaraDNS tem?</A><P>

24. <A HREF=#kvar>"kvar" não significa "four" em Esperanto?</A><p>

25. <A href=#scability>O quanto escalável é MaraDNS?</A><p>

26. <A href=#upstream_d>Estou tendo problemas em configurar <tt>upstream_servers</tt> </A><p> 

</BLOCKQUOTE>
<H2>RESPOSTAS</H2>

<A NAME=version1>
<H2>1. Eu ainda estou usando versão 1.0 do MaraDNS</H2>
</A>

MaraDNS 1.0 continuará sendo SUPORTADO completamente até 21 de 
dezembro de 2007; isto significa que questões sobre MaraDNS 1.0 ainda serão
respondidas e correções de bug serã aplicados. Depois de 21/12/2007, MaraDNS 1.0
não será mais completamente suportado; as únicas atualizações a serem feitas serão as 
mais graves de segurança. Nem mesmo estas atualizações serão aplicadas depois de
21 de dezembro de 2010.    

<p>

Pessoas que desejam executar MaraDNS 1.0 sem suporte depois de 21/12/2010
precisam ter em mente que o MaraDNS 1.0 <i>não</i> é Y2038 compatível, e terá   
problemas em início de 2036 e adiante.  Por outro lado, MaraDNS 1.2 é completamente  
Y2038 compatível.

<p>

Ainda há um FAQ para versão 1.0 do MaraDNS disponível
<A href=http://www.maradns.org/faq-1.0.html>here</A>.

<p>

Atualizando do 1.0 para 1.2 requer um número mínimo de mudanças;
com a maioria das configurações, MaraDNS 1.2 é completamente compatível
com os arquivos de dados do MaraDNS 1.0.  Detalhes estão no tutorial <A 
href=http://www.maradns.org/tutorial/1.2/update.html>updating</A>.

<p>

Enquanto os arquivos de zona csv1 são completamente suportados em 
MaraDNS 1.2, há um script Perl para atualizar as zonas de arquivos de 
CSV1 para CSV2  dentro do diretório <tt>/tools</tt> do MaraDNS 1.2.

<A NAME=tryout>
<H2>2.Como eu experimento o MaraDNS?</H2>
</A>

<p>Leia o  <A 
href=http://www.maradns.org/tutorial/1.2/quick_start.html>guia 
instantâneo </A>, que é o arquivo chamado 0QuickStart no pacote
fonte do MaraDNS.
<p>

<A NAME=license>
<H2>3. Sob qual licença é liberado o MaraDNS?</H2>
</A>
MaraDNS 1.2 foi liberado com as duas cláusula da seguinte licença de BSD:
Licença tipo BSD:
<BLOCKQUOTE>
Copyright (c) 2002-2005 Sam Trenholme
<p>
TERMS
<p>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
<p>
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
<p>
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.
<p>
This software is provided 'as is' with no guarantees of correctness or
fitness for purpose.
</BLOCKQUOTE>

<A NAME=bugzilla>
<H2>4. Como que relato bugs no MaraDNS?</H2>
</A>

Favor <A href=http://www.maradns.org/contact.html>me contatar</A>.

<A NAME=chatter>
<H2>5. Alguns email da lista de email não falam sobre MaraDNS!</H2>
</A>
Em casos donde eu postar algo à lista de email que não fale diretamente  
sobre MaraDNS, a linha de assunto não conterá a palavra [ MARA] nela, e sim 
outra palavra qualquer.    
<P>
Deste modo, pessoas que não gostem disto podem montar filtros de email 
para filtrar qualquer coisa que venha desta lista e não contenha a palavra 
[MARA] no assunto ou simplesmente se desinscrever da lista e lei-a dos
arquivos; se a pessoa precisar informar um bug, ela pode se inscrever na lista  
novamente, postar o bug, então se desinscrever depois de uma semana.    
<P>
Outra opção é configurar as preferências do Freshmeat (http://freshmeat.net) 
da pessoa a ser notificadas por e-mail toda a vez que atualizo o MaraDNS no 
Freshmeat. Isto dará uma notificação de e-mail de qualquer conserto de bug 
crítico sem precisar estar inscrito na lista de emails.  
<P>
No site <A href=http://www.maradns.org>http://www.maradns.org</A>
tem um link para os arquivo da lista de email.

<A NAME=unsub>
<H2>6. Como faço para sair da lista de email?</H2>
</A>
Envie um email para a list-request@maradns.org com a palavra "unsubscribe"
no campo assunto.

<A NAME=rdns>
<H2>7. Como eu configuro um DNS reverso no MaraDNS?</H2>
</A>
Usando o registro PTR (pointer). Por exemplo, o registro PTR no qual realiza
o lookup de DNS reverso para o ip 1.2.3.4 aparece assim em uma zona CSV2 :
<blockquote>
<tt>
4.3.2.1.in-addr.arpa. PTR www.example.com.
</tt>
</blockquote>
Se você deseja ter um registro PTR (lookup de DNS reverso; obtendo um nome 
DNS de um IP numérico) trabalhando na internet, não é uma simples  
questão de apenas acrescentar um registro assim a um arquivo de zona do
MaraDNS. Existe também a necessidade de um controle apropriado do domínio
in-addr.arpa e a solicitação desse serviço no seu provedor ou empresa 
que lhe fornece acesso á internet..  
<p>
Enquanto isso pode fazer sentido para contatar o IP 10.11.12.13 ao 
tentar obter o lookup de DNS reverso (nome de domínio completamente
qualificado) para um determinado IP, servidores de DNS não fazem isto. 
Servidores de DNS, ao invés, contata os servidores DNS root para um 
determinado nome in-addr.arpa para obter o lookup de DNS reverso,  
assim como eles fazem com qualquer outro tipo de registro.  
<p>
Quando um provedor de internet é responsável por uma faixa de IPs, eles também são  
responsáveis pelo controle do zonas DNS que lhes permite controlar DNS reverso  
para esse IPs.  Enquanto é possível obter um domínio e executar um servidor
de DNS sem o conhecimento ou intervenção de um provedor, ser  
capaz de controlar lookups de DNS reverso para esse IPs requer a   
intervenção do provedor.  

<A NAME=timeout>
<H2>8. Eu estou em uma rede lenta, e MaraDNS não consegue processar  
consultas recursivas</H2>
</A>

MaraDNS, por padrão, somente espera dois segundos para uma resposta
de um servidor de DNS remoto. Este padrão pode ser aumentado 
adicioando uma linha assin no arquivo mararc:
<blockquote>
<pre>
timeout_seconds = 5
</pre>
</blockquote>

Nota que fazendo este número muito alto, irá reduzi a velocidade do
MaraDNS quando servidores de DNS estiverem inoperando, o que, aliais é 
muito comum na internet de hoje.


<A NAME=obtuse>
<H2>9. Quando tento executa o MaraDNS, recebo uma mensagem de erro cryptic.</H2>
</A>
Normalmente existe algum contexto donde há um erro de sintaxe dentro um  
arquivo de dados antes da mensagem de erro cryptic.  Por exemplo, quando há  
um erro de sintaxe em um arquivo de zona csv2, MaraDNS lhe dirá exatamente  
em que ponto teve que finalisar a análise do arquivo de zona.  
<p>

Se MaraDNS retornar uma mensagem de erro cryptic sem mostrar o que está errado,
<A href=http://www.maradns.org/contact.html>me contata</A> 
para eu poder eliminar esse bug.  MaraDNS é projetado para ser fácil de usar; 
mensages de erro cryptic vão contra esse espírito.

<A NAME=netstat>
<H2>10. Apois inicializar o MaraDNS, não consigo ver o processo quando 
executo netstat - na
</H2>
</A>

Serviços UDP não tem um proeminente "LISTEN" quando netstat é executado.
<p>
Quando MaraDNS está rodando, a linha pertinente no netstat produz a seguinte    
saída:            
<tt>
udp        0      0 127.0.0.4:53            0.0.0.0:* 
</tt>
<p>
Enquanto no tópico do netstat, se você executar <TT>netstat -nap</TT> 
como root, você poderá ver os nomes dos processos que estão provendo
serviços de internet.

<A NAME=jsstr>
<H2>11. Que biblioteca de string MaraDNS utiliza?</H2>
</A>

<p>MaraDNS utiliza sua própria bibiloteca de string, no qual é chamada de 
biblioteca "js_string".  O Man pages para a maioria das funções na biblioteca
js_string estão no diretório <tt>doc/man</tt> dos fontes do <A href=download.html>MaraDNS</A>

<A name=whythreads>
<H2>12. Por que MaraDNS utiliza um modelo de multi-threaded?</H2>
</A>

<p>O modelo multi-threaded é, plano e simples, sendo o modo mais simples para escrever  
um servidor de DNS recursivo funcional. Existe uma razão por que MaraDNS, pdnsd, e  
bind 9 utilizem o modelo multi-threaded. 

<A NAME=wishlist>
<H2>13. Eu acho que aquela característica XXX deveria ser implantada no 
MaraDNS</H2>
</A>
<p>
Não há nenhum plano para implementar novas características no MaraDNS
atualmente.  A razão para isto é porque, MaraDNS não tem feito meu  
currículo impressionante o bastante para eu arrumar um emprego no mercado
de trabalho hoje em dia.  

<p>
Tanto os servidores de nomes Bind e NSD foram desenvolvidos tendo os programadores  
pagos para trabalhar nos programas.  PowerDNS era um software originalmente comercial  
com o autor só relutantemente liberado em GPL depois de ver que o mercado  
para servidores de DNS comercial ser muito pequeno. Todos os outros servidores de DNS  
foram desenvolvidos como projetos de hobby (Posadis, Pdnsd, e djbdns)   
já que não estam mais sendo trabalhados ativamente pelos seus criadores.  

<p>
Se eu fosse trabalhar novamente no MaraDNS, ele seria completamente reescrito em C++;  
se eu puder colocar C++ em meu currículo, talvez eu possa arrumar um emprego mais 
facilmente. 
<p>
Como qualquer outra coisa, isto não é absoluto.  Por exemplo, se eu vejo 
um grande comunidade do MaraDNS e uma demanda forte para características
novas daquela comunidade, posso mudar minha opinião.  Se ipv6 começar a ficar
dominante, eu atualizarei MaraDNS para ter suporte completo ao ipv6. Se uma 
outra tecnologia aparecer e isso requer uma atualização para MaraDNS continuar
funcionando como um servidor de DNS, eu posso atualizar MaraDNS para usar
aquela tecnologia.  

<A NAME=docbook>
<H2>14. Eu sinto que o MaraDNS deveria usar outro formato de 
documentação</H2>
</A>
<p>
A razão que faz o MaraDNS usar seu próprio formato de documentação é satisfazer 
tanto as necessidades de tradutores para ter um formato de documento unificado e
minha própria necessidade de usar um formato de documentação que seja simples o
bastante para ser prontamente entendida e o qual posso adicionar características 
quando necessárias.
<p>
O formato de documentação é essencialmente um HTML simplificado com algumas  
tag especiais adicionadas para satisfazer as necessidades especiais do MaraDNS.
<p>
Isto me dá mais flexibilidade de adaptar o formato da documentação para  
necessidades variádas. Por exemplo, quando alguém mostrou que não é  
uma boa idéia ter o man page com hi-bit carácter, foi uma simples questão  
de adicionar uma nova tag HIBIT que permitisse man pages de serem 
feitos sem  o carácter hi-bit, e outros formatos de documento para reter 
hi-bit carácter.  
<p>
Um determinado programa ter seu próprio formato de documentação não é  
sem precedente; Perl usa seu próprio formato de documentação o "pod."  

<A NAME=patch>
<H2>15. Existe algum processo para adicionar um patch no MaraDNS?</H2>
</A>

<p>Sim.  

<p>Aqui está o procedimento para fazer um patch:

<p>

<ul>
<li>Entre no diretório que o arquivo se encontra, por exemplo
    <tt>maradns-1.2.00/server</tt>

<li>Copie o arquivo que você deseja modificar para um outro 
nome de arquivo. Exemplo: <tt>cp MaraDNS.c MaraDNS.c.orig</tt>

<li>Edite o arquivo em questão, ex: <tt>vi MaraDNS.c</tt>

<li>Após editar, faça algo como: <br><tt>
    diff -u MaraDNS.c.orig MaraDNS.c > maradns.patch</tt>

<li>Tenha certeza que a versão modificada compila corretamente.

</ul>
Envie o patch para mim via e-mail, junto com uma declaração de que você
coloca, os conteúdos do patch sob licença de BSD do MaraDNS.  Se eu achar
que o patch trabalha bem, eu integrarei isto no MaraDNS.


<A NAME=primary>
<H2>16. Pode MaraDNS agir com um servidor de nomes primário?</H2>
</A>

<p>Sim.

<p>O programa <tt>zoneserver</tt> server zonas então, outros servidores
de DNS podem ser secundários para as zonas que o MaraDNS server. Este é um
programa separado do servidor <tt>maradns</tt>, no qual processa tanto 
consultas de DNS UDP autoritativas e recursivas.

<p>Veja o documento <A href=http://www.maradns.org/tutorial/1.2/dnsmaster.html>DNS
master</A> nos tutoriais do MaraDNS.

<A NAME=secondary>
<H2>17. Pode MaraDNS agir com um servidor de nomes segundário?</H2>
</A>

<p>Sim.

<p>Favor leia o documento <A href=http://www.maradns.org/tutorial/1.2/dnsslave.html>
DNS slave</A>, no qual é parte do tutorial MaraDNS.


<A NAME=auth>
<H2>18. Qual a diferença entre um servidor de DNS autoritavio e um recursivo?</H2>
</A>
Um servidor recursivo é um servidor de DNS que pode contatar outros 
servidores de DNS para solucionar um determinado nome de domínio.  
Este é o tipo de servidor de DNS que a pessoa aponta para dentro de 
/etc/resolve.conf (em sistemas Linux e Unix).

<p>
Um servidor de DNS autoritativo é um servidor de DNS que um servidor recursivo   
contata para descobrir a resposta a uma determinada consulta de DNS.

<A NAME=bailiwick>
<H2>19. O client fetchzone não está me permitindo adiconar certos 
hostnames à minha zona.</H2>
</A>
Por razões de segurança, o cliente fetchzone do MaraDNS não faz 
adição de registros que não fazem parte da zona em questão. 
Por exemplo, se alguém tem uma zona para example.com, e este
registro na zona:  
<p>
<tt>
1.1.1.10.in-addr.arpa. PTR dns.example.com.
</tt>
<p>

MaraDNS não irá adicionar o registro, já que o registro está out-of-bailiwick. 
Em outras palavras, é um nome de host que não termina em .example.com.  
<p>                                     
Há duas soluções para isto:
<UL>
<LI>Criar um arquivo zona para 1.1.10.in-addr.arpa., e colocar o registro 
PTR lá.
<LI>Use rcp, rsync, ou outro método para copiar os arquivos de zona em
questão.
</UL>

<A name=portable>
<H2>20. MaraDNS pode ser portado para outras plataformas?</H2>
</A>

<p>MaraDNS somente compilará no FreeBSD, Mac OS X, Cygwin, Linux, e
parcialmente em sistemas MinGW32. Se você estiver interessado em 
portar o MaraDNS para um outro sistema, favor <A 
href=http://www.maradns.org/contact.html>me contatar</A>.

<A NAME=cygwin>
<H2>21. Eu posso usar o MaraDNS no Windows?</H2>
</A>

<p>
Sim.  Há tanto uma versão mingw32 parcial (binário win32 nativo)
e uma versão completa para Cygwin; ambos versões fazem parte 
da construção nativa do MaraDNS.

<A NAME=upstream>
<H2>22. MaraDNS "congela" após ser usado por algum tempo</H2>
</A>

Se estiver usando o servidores de nome do seu provedor ou alguns
outros servidores de nome que na realidade, não são servidores de 
nome root, por favor tenha certeza que você esteja usando a variável 
de dicionário upstream_servers em vez da variável de dicionário root_servers.  

<p>
Se o MaraDNS ainda gelar depois de fazer esta correção, por favor,  
envie um relatório de bug à lista de email.


<A NAME=python>
<H2>23. Que tipo de integração com o Python MaraDNS tem?</H2>
</A>
O arquivo mararc usa a mesma sintaxe que o Python utiliza; na realidade,
o Python pode analisar corretamente um arquivo mararc formatado.
<p>
Não há nenhuma outra integração atualmente com Python.

<A NAME=kvar>
<H2>24. "kvar" não significa "quatro" em Esperanto?</H2>
</A>
Realmente, sim.  Porém o uso de "kvar" no fonte do MaraDNS  
é apenas uma coincidencia com palavra Esperanta.  "kvar" é abreviação de  
"variável kiwi"; muito do código analisando gramaticalmente vem do código  
usado no projeto de filtro para spam Kiwi.    

<A NAME=scability>
<H2>25. O quanto escalável é MaraDNS?</H2>
</A>
MaraDNS é otimizado para servir um número pequeno de domínios o mais 
rápido possível.  Dito isso, MaraDNS é notavelmente eficiente em servir um  
grande número de domínios, contanto que o servidor que roda o MaraDNS tenha   
memória suficiente para ajustar todos os domínios, e que o tempo de
inicialização para o carregameto de um grande número de domínios possam 
ser trabalhados.  
 
<P>
O "grande-O" ou "theta" as taxas de crescimento para várias funções de MaraDNS
são como segue,  onde N é o númeor de host autoritativos send servidos:
<p>
<pre>
Startup time                            N
Memory usage                            N
Processing incoming DNS requests        1
</pre>
<p>
Como pode ser visto, MaraDNS processará 1 ou 100000 domínios na mesma quantia  
de tempo, uma vez que os nomes de domínio estiverem carregados na memória. 

<A name=upstream_d>
<h2>26. Estou tendo problemas em configurar <tt>upstream_servers</tt></h2>
</A>
A variável mararc <tt>upstream_servers</tt> é configurada desta maneira:

<blockquote>
<tt>upstream_servers["."] = "10.3.28.79, 10.2.19.83"</tt>
</blockquote>

Note o <tt>["."]</tt>.  A razão para isso é futuras versões do MaraDNS 
podem ter mais controles fine-grained para os valores de 
<tt>upstream_servers</tt> e <tt>root_servers</tt>.

<p>
Nota que a variável <tt>upstream_servers</tt> precisa ser inicializada
antes de ser usada via <tt>upstream_servers = {}</tt> (a razão para isto
é que deste modo o arquivo mararc tem 100% de compatibilidade
com a sintaxe Python). Um arquivo completo do mararc que usa 
<tt>upstream_servers</tt > pode ser como este: 

<pre>
ipv4_bind_addresses = "127.0.0.1"
chroot_dir = "/etc/maradns"
recursive_acl = "127.0.0.1/8"
upstream_servers = {}
upstream_servers["."] = "10.1.2.3, 10.2.4.6"
</pre>


