O que vem a ser DNS?

Texto encontrado na Internet.

DNS é o Domain Name Server, ele simplesmente converte nome de maquinas para numeros IP, no qual cada maquina conectada a internet possui um.

Para conhecedores, DNS é o Sistema de Nome de Domínio. As regras que nomeiam máquinas e software que transformam estes nomes para números de IP. Este documento HOWTO defini tais cartografias que se usam num sistema de Linux. Uma cartografia é simplesmente uma associação entre duas coisas, neste caso uma máquina nomeada, como ftp.linux.org, e as máquinas que IP numeram, 199.249.150.4.

DNS é, para o 'uninitiated' (você ;-), um das áreas mais opacas da administração de rede. Este HOWTO tenta fazer algumas coisas leve. Descreve como montar um simples servidor de nome DNS. Começando com um caching só de servidor e indo montar um servidor de DNS primário para um domínio. Para ligações mais complexas você pode confirir a seção de ``FAQ'' deste documento. Se não for descrito lá você deve ler a Documentação Real. Eu voltarei no qual esta Documentação Real consiste ``no último capítulo''.

Antes de começar você deve configurar sua máquina de forma que possa acessar o telnet por fora, e possa fazer com sucesso qualquer tipo de conexões com a rede, devendo ser capaz especialmente de fazer um telnet para 127.0.0.1 e acessar a sua própria máquina (teste isto agora!). Você também precisa de um bom /etc/host.conf (ou /etc/nsswitch.conf), /etc/resolv.conf e /etc/hosts estes arquivos dão o ponto de partida, desde que eu não explique como eles funcionam aqui.

Se você não tem tudo isso montado e funcionando o HOWTO networking/NET-2 explica como montar. Leia-o.

Se você está usando SLIP ou PPP você precisará por em funcionamento. Se não leia o HOWTO PPP.

Quando eu digo "sua máquina" eu quero dizer a máquina que você está tentando montar o DNS.

Qualque outra máquina que você poderia usar não é envolvido em seu esforço de networking.

Eu irei assumir que você não está atrás de qualquer tipo de firewall que bloqueia pedidos de nome.

Se você precisa de uma configuração especial, veja a seção de``FAQ''.

No Unix um servidor de nomes é um programa chamado named. É uma parte do pacote do bind o qual é coordenado por Paul Vixie para o Consórcio de Software para a Internet.

O Named é incluído na maioria das distribuições do Linux e normalmente é instalado como /usr/sbin/named. Se você tem um named provavelmente poderá usa-lo; se você não o tem adquira o binário para Linux no Site de ftp do Linux, ou adquire um mais recente e com uma maior fonte em ftp.vix.com:/pub/bind no sub-diretório de release ou testing (lançamento ou em teste), qualquer tipo de ajuste é do seu melhor estilo de vida.

DNS é um banco de dados net-wide. Tome cuidado sobre o que você puser nele. Se você pôs algo jogue fora, você, e outros adquirirão isto. Mantenha o seu DNS limpo e consistente e você obterá um bom serviço.

Aprenda a usa-lo, admin, e depura-lo pois você será outro bom admin impedindo que a rede caia de joelhos sobrecarregados por 'mismanagement'.

Neste documento eu declaro um par de coisas que não são completamente verdadeira (elas são pelo menos meia verdades). Tudo no interesse de simplificação. Coisas que vão (provavelmente ;-) trabalhar se você acredita no que eu digo.

Tip: Faça copias auxiliares de todos os arquivos que eu ensinar e que você, assim se depois de passar por isto nada funcionar você pode voltar para o seu velho, Estado da Arte de trabalho.

 

Um caching somente para o Servidor de nomes.

A primeira punhalada na configuração do DNS, é muito útil para usuários de dialup. Um caching somente para o Servidor de nomes ele achará a resposta para nomear as questões e se lembrará da resposta da próxima vez que precisar.

Primeiro precisamos de um arquivo chamado /etc/named.boot. Ele é lido quando o named começa. No momento ele deve conter simplesmente isto:

_______________________________________________________________
;  Arquivo de Boot somente para o servidor de nomes
;
directory /var/named
;
; type          domain              source file or host
; tipo          dominio		        fonte do arquivo ou do host
cache           .                          root.cache
primary         0.0.127.in-addr.arpa       pz/127.0.0
_______________________________________________________________

MUITO IMPORTANTE: Em algumas versões deste documento os conteúdos de arquivo listado aqui terá um par de espaços ou um Tab antes do primeiro nome. Não é suposto que estão no arquivo. Apague qualquer espaço principalmente nos arquivos que você cortou e colou deste HOWTO.

A linha `Directory ' indica ao named onde procurar os arquivos. Todos os arquivos do named subseqüentemente será relativo a ele. /var/named é o diretório correto de acordo com o Padrão de Sistemas de Arquivo do Linux. Assim pz é um diretório debaixo de /var/named, i.e., /var/named/pz.

O arquivo named /var/named/root.cache é named nsito. O arquivo /var/named/root.cache deve conter:

 _______________________________________________________

   .       518400  NS      D.ROOT-SERVERS.NET.
   .       518400  NS      E.ROOT-SERVERS.NET.
   .       518400  NS      I.ROOT-SERVERS.NET.
   .       518400  NS      F.ROOT-SERVERS.NET.
   .       518400  NS      G.ROOT-SERVERS.NET.
   .       518400  NS      A.ROOT-SERVERS.NET.
   .       518400  NS      H.ROOT-SERVERS.NET.
   .       518400  NS      B.ROOT-SERVERS.NET.
   .       518400  NS      C.ROOT-SERVERS.NET.
  ;
  D.ROOT-SERVERS.NET.     3600000 A       128.8.10.90
  E.ROOT-SERVERS.NET.     3600000 A       192.203.230.10
  I.ROOT-SERVERS.NET.     3600000 A       192.36.148.17
  F.ROOT-SERVERS.NET.     3600000 A       192.5.5.241
  G.ROOT-SERVERS.NET.     3600000 A       192.112.36.4
  A.ROOT-SERVERS.NET.     3600000 A       198.41.0.4
  H.ROOT-SERVERS.NET.     3600000 A       128.63.2.53
  B.ROOT-SERVERS.NET.     3600000 A       128.9.0.107
  C.ROOT-SERVERS.NET.     3600000 A       192.33.4.12
  _______________________________________________________

Lembre-se do que eu disse sobre espaços principalmente! Este arquivo descreve os servidores de nome de raiz no mundo. Ele é mudado com o passar do tempo e deve ser mantido. Veja a seção de ``manutenção'' para manter este arquivo atualizado. Este arquivo é descrito na página man named, mas é, IMHO, melhor compreendido por pessoas que já entendem de named.

A próxima linha em named.boot é a linha primária. Eu explicarei seu uso num capítulo mais recente, no momento coloque somete isto no arquivo 127.0.0.0 no subdiretório pz:

 __________________________________________________________________
 @       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                             1       ; Serial
                             28800   ; Refresh
                             7200    ; Retry
                             604800  ; Expire
                             86400)  ; Minimum TTL
                     NS      ns.linux.bogus.
 1                   PTR     localhost.
 __________________________________________________________________

Logo, você precisa de um /etc/resolv.conf que se parece com algo assim:

__________________________________________________________________
search sub_dominio.seu-domínio.edu seu-domínio.edu
nameserver 127.0.0.1
__________________________________________________________________

A linha `Search' especifica que os domínios deve ser procurados para qualquer nome de host que queremos conectar. A linha `Nameserver' especifica o endereço do seu nameserver, neste caso sua própria máquina desde que o seu named rode. Se você quer listar alguns servidores de nomes coloque uma linha de `Nameserver' para cada um. (Nota: Nunca o named lê este arquivo, o resolver é que usa o named.)

Para ilustrar o que este arquivo faz: Se um cliente tenta observar foo, foo.sub_dominio.seu-dominio.edu é primeiro experimentado, então foo.seu-domínio.edu, finalmente foo. Se um cliente tenta observar sunsite.unc.edu, sunsite.unc.edu.sub_dominio.seu-dominio.edu é experimentado primeiramente (sim, é tolo, mas isto é o modo e que seja), então sunsite.unc.edu.seu-domínio.edu, e finalmente sunsite.unc.edu. Você pode não querer pôr muitos domínios na linha de procura, pois leva muito tempo para procurar por eles.

O exemplo assume que você pertence ao domínio sub_domínio.seu-domínio.edu, sua máquina então, provavelmente é chamado sua-maquina.sub_domínio.seu-domínio.edu. A linha de procura não deveria conter o seu TLD (Nivel do Topo de Domínio, `Edu' neste caso). Se você freqüentemente precisa conectar aos hosts em outro domínio podemos somar aquele domínio para a linha de procura:

________________________________________________________________________
search subdominio.seu-domínio.edu seu-domínio.edu.edu outro-domínio.com
________________________________________________________________________

e assim por diante. Obviamente você precisa pôr o domínio real de nomes. Por favor note a falta de períodos ao término dos nomes de domínio.

Logo, ou dependendo de sua versão de libc você precisa configurar o /etc/nsswitch.conf ou /etc/host.conf. Se você já tem nsswitch.conf que é o qual configuraremos, se não, nós configuraremos o host.conf.

/etc/nsswitch.conf

Este é um arquivo longo que especifica onde adquirir tipos diferentes de dados, de arquivos ou banco de dados. Normalmente contém comentários úteis ao topo que você deve considerar, agora. Depois de achar a linha que começa com `Hosts:', deverá conter:

______________________________________________________________________
hosts: files dns
______________________________________________________________________

Se não há nenhuma linha que começa com `Hosts: ' então ponha uma acima. Este arquivo diz que os programas devem olhar primeiro no arquivo de /etc/hosts, e então, confir o DNS de acordo com o resolv.conf.

/etc/host.conf

Contém várias linhas provavelmente, e deve começar com ORDER e deve aparecer com:

______________________________________________________________________
order hosts,bind
______________________________________________________________________

Se não houver nenhum linha de `order' você deve colocar. Ela conta ao host de nomes quem soluciona as rotas para usar primeiro em /etc/hosts, então pergunta ao servidor de nomes (o qual você disse no resolv.conf que está em 127.0.0.1). Estes dois arquivos são documentados mais recentemente na páginas do man resolv(8) (faça `Man 8 resolv') na maioria das distribuições de Linux. Aquela página de man é IMHO legível, e todo mundo, especialmente admins de DNS, deveria ler. Faça agora, se você diz a si "eu farei isto depois" você nunca ira adquirir conhecimento sobre isto.

 

Inicializando o named

Afinal de contas esta na hora de começar o named. Se você está usando uma conexão dialup conecte primeiro. Digite 'ndc start', e pressione return, não há opções. Se for back-fires tente `/usr/sbin/ndc start' ao invés. Se isso parte do back-fire veja a seção ``FAQ''. Agora você pode testar a sua configuração.

Se você ver o seu arquivo de mensagem de syslog (normalmente chamado de /var/adm/messages, mas pode estar em outro diretório olhe em /var/log e o outro arquivo é o syslog) enquanto começa o named (tail -f /var/adm/messages) você deve ver algo como:

Jun 30 21:50:55 roke named[2258]: starting. named 4.9.4-REL Sun Jun 30 21:29:03 MET DST 1996
janl@roke.slip.ifi.uio.no:/var/tmp/bind/named
Jun 30 21:50:55 roke named[2258]: cache zone "" loaded (serial 0)
Jun 30 21:50:55 roke named[2258]: primary zone "0.0.127.in-addr.arpa" loaded (serial 1)

Se há qualquer mensagem sobre erros então há um engano. Nomei o arquivo de named é em (um de named.boot e root.cache eu espero :-) Mate o named e volte a conferir o arquivo.

Agora é a hora para começar o nslookup para examinar seu handywork.

   $ nslookup
       Default Server:  localhost
       Address:  127.0.0.1
       >

Se isto ocorrer entao o named esta rodando. É o que esperamos. Qualquer outra coisa, volte e confira tudo. Toda vez que mudar o named.boot o arquivo precisa ser reiniciado o named usando o comando ndc restart.

Agora podemos entrar numa questão. Provar que observa alguma máquina perto de você. pat.uio.no está perto de mim, na Universidade de Oslo,:

       > pat.uio.no
       Server:  localhost
       Address:  127.0.0.1

       Name:    pat.uio.no
       Address:  129.240.2.50

O nslookup perguntou agora ao seu named para procurar a máquina pat.uio.no. Ele então contacta um das máquinas do servidor de nomes do named no seu arquivo root.cache, e perguntou ao seu modo. Poderia levar minutos enquanto adquirimos o resultado como procurar todos os domínios que usamos no named em /etc/resolv.conf.

Se tentarmos novamente iremos receber:

       > pat.uio.no
       Server:  localhost
       Address:  127.0.0.1

       Non-authoritative answer:
       Name:    pat.uio.no
       Address:  129.240.2.50

Note a resposta na linha `Non-authoritative answer:' que adquirimos. Isto significa que o named não saiu da rede para perguntar, ao invés disto olhou no cache e achou lá. Mas o cache informou que poderia ser obsoleto (ultrapassado). Assim você está sendo informado de um perigo (muito leve) por isto é dito `Non-authoritative answer:'. Quando o nslookup respondeu levou segundos que você pediu ao host é um sinal seguro que o cache do named está trabalhando. Você pode sair do nslookup dando o comando `exit'.

Se você usa dialup (ppp, slip) como usuário por favor leia a seção de ``conexões de, há um pouco de conselho lá para você.

Agora que sabemos um caching de named. Beba uma cerveja, leite, ou qualque coisa ao qual você prefere celebrar.

4. Um domínio simples.

Como montar o seu próprio domínio.

4.1. Mas primeiro alguma teoria básica

Antes de começarmos esta seção vou apresentar alguma teoria de como o DNS trabalha. E você vai ler isto porque é importante. Se você for um `Wanna' você deve ler isto rapidamente. Pare quando encontrar o arquivo named.boot.

DNS é um sistema hierárquico. O topo é escrito `.' e pronunciado `Root'. Debaixo de . há vários Nivéis de Topo de Domínios(TLDs), os conhecidos são ORG, COM, EDU e NET, mas há muitos.

Quando procura-se uma máquina a questão procede recursivamente na hierarquia que começa no topo. Se você quer achar o endereço de prep.ai.mit.edu seu servidor de nome tem que achar um servidor de nomes que serve ao edu. Pergunta por um . servidor (já sabe que os servidores . estão no seu arquivo de root.cache), o servidor . dá uma lista de servidores edu:

       $ nslookup
       Default Server:  localhost
       Address:  127.0.0.1

Começa a perguntar há um servidor na raiz.

       > server c.root-servers.net.
       Default Server:  c.root-servers.net
       Address:  192.33.4.12

Define o tipo de questão para NS (servidor de registro nomes).
> set q=ns

Pergunta sobre edu.
> edu.

O . aqui é significante, conta ao servidor que estamos perguntando há aquele edu sobre o que esta abaixo dele (assim estreita a nossa procura um pouco).

edu nameserver = A.ROOT-SERVERS.NET
edu nameserver = H.ROOT-SERVERS.NET
edu nameserver = B.ROOT-SERVERS.NET
edu nameserver = C.ROOT-SERVERS.NET
edu nameserver = D.ROOT-SERVERS.NET
edu nameserver = E.ROOT-SERVERS.NET
edu nameserver = I.ROOT-SERVERS.NET
edu nameserver = F.ROOT-SERVERS.NET
edu nameserver = G.ROOT-SERVERS.NET
A.ROOT-SERVERS.NET internet address = 198.41.0.4
H.ROOT-SERVERS.NET internet address = 128.63.2.53
B.ROOT-SERVERS.NET internet address = 128.9.0.107
C.ROOT-SERVERS.NET internet address = 192.33.4.12
D.ROOT-SERVERS.NET internet address = 128.8.10.90
E.ROOT-SERVERS.NET internet address = 192.203.230.10
I.ROOT-SERVERS.NET internet address = 192.36.148.17
F.ROOT-SERVERS.NET internet address = 192.5.5.241
G.ROOT-SERVERS.NET internet address = 192.112.36.4

Isto nos diza que * .root-servers.net serve ao edu., assim nós podemos ir em c é perguntar. Agora nós queremos saber quem serve ao próximo nível do domínio nomes: mit.edu.:

> mit.edu.
Server: c.root-servers.net
Address: 192.33.4.12

Non-authoritative answer:
mit.edu nameserver = STRAWB.mit.edu
mit.edu nameserver = W20NS.mit.edu
mit.edu nameserver = BITSY.mit.edu

Authoritative answers can be found from:
STRAWB.mit.edu internet address = 18.71.0.151
W20NS.mit.edu internet address = 18.70.0.160
BITSY.mit.edu internet address = 18.72.0.3

steawb, w20ns e bitsy são servidores do mit, selecionaremos um e buscaremos sobre ai.mit.edu:

> server W20NS.mit.edu.

Nomes de anfitrião não são nenhum caso sensível, mas eu uso o meu mouse para cortar e colar assim é copiado como o da tela.

Server: W20NS.mit.edu Address: 18.70.0.160

> ai.mit.edu.
Server: W20NS.mit.edu
Address: 18.70.0.160

Non-authoritative answer:
ai.mit.edu nameserver = WHEATIES.AI.MIT.EDU
ai.mit.edu nameserver = ALPHA-BITS.AI.MIT.EDU
ai.mit.edu nameserver = GRAPE-NUTS.AI.MIT.EDU
ai.mit.edu nameserver = TRIX.AI.MIT.EDU
ai.mit.edu nameserver = MUESLI.AI.MIT.EDU

Authoritative answers can be found from:
AI.MIT.EDU nameserver = WHEATIES.AI.MIT.EDU
AI.MIT.EDU nameserver = ALPHA-BITS.AI.MIT.EDU
AI.MIT.EDU nameserver = GRAPE-NUTS.AI.MIT.EDU
AI.MIT.EDU nameserver = TRIX.AI.MIT.EDU
AI.MIT.EDU nameserver = MUESLI.AI.MIT.EDU
WHEATIES.AI.MIT.EDU internet address = 128.52.32.13
WHEATIES.AI.MIT.EDU internet address = 128.52.35.13
ALPHA-BITS.AI.MIT.EDU internet address = 128.52.32.5
ALPHA-BITS.AI.MIT.EDU internet address = 128.52.37.5
GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.32.4
GRAPE-NUTS.AI.MIT.EDU internet address = 128.52.36.4
TRIX.AI.MIT.EDU internet address = 128.52.32.6
TRIX.AI.MIT.EDU internet address = 128.52.38.6
MUESLI.AI.MIT.EDU internet address = 128.52.32.7
MUESLI.AI.MIT.EDU internet address = 128.52.39.7

Assim weaties.ai.mit.edu é um nameserver para ai.mit.edu:

> server WHEATIES.AI.MIT.EDU.
Default Server: WHEATIES.AI.MIT.EDU
Addresses: 128.52.32.13, 128.52.35.13

Agora irei mudar o tipo de questão, nós achamos o servidor de nome que nós somos indo perguntar por tudo wheaties sobre prep.ai.mit.edu.

> set q=any
> prep.ai.mit.edu.
Server: WHEATIES.AI.MIT.EDU
Addresses: 128.52.32.13, 128.52.35.13

  prep.ai.mit.edu CPU = dec/decstation-5000.25    OS = unix
  prep.ai.mit.edu
           inet address = 18.159.0.42, protocol = tcp
           #21 #23 #25 #79
  prep.ai.mit.edu preference = 1, mail exchanger = life.ai.mit.edu
  prep.ai.mit.edu internet address = 18.159.0.42
  ai.mit.edu      nameserver = alpha-bits.ai.mit.edu
  ai.mit.edu      nameserver = wheaties.ai.mit.edu
  ai.mit.edu      nameserver = grape-nuts.ai.mit.edu
  ai.mit.edu      nameserver = mini-wheats.ai.mit.edu
  ai.mit.edu      nameserver = trix.ai.mit.edu
  ai.mit.edu      nameserver = muesli.ai.mit.edu
  ai.mit.edu      nameserver = count-chocula.ai.mit.edu
  ai.mit.edu      nameserver = life.ai.mit.edu
  ai.mit.edu      nameserver = mintaka.lcs.mit.edu
  life.ai.mit.edu internet address = 128.52.32.80
  alpha-bits.ai.mit.edu   internet address = 128.52.32.5
  wheaties.ai.mit.edu     internet address = 128.52.35.13
  wheaties.ai.mit.edu     internet address = 128.52.32.13
  grape-nuts.ai.mit.edu   internet address = 128.52.36.4
  grape-nuts.ai.mit.edu   internet address = 128.52.32.4
  mini-wheats.ai.mit.edu  internet address = 128.52.32.11
  mini-wheats.ai.mit.edu  internet address = 128.52.54.11
  mintaka.lcs.mit.edu     internet address = 18.26.0.36

Começando assim em . nós achamos os servidores de nome sucessivos para o próximo nivel de domínio de nomes. Se você tivesse usado seu próprio servidor de DNS ao invés de usar tudos estes servidores, seu named iria no cache para todas as informações que perguntarmos novamente durante algum tempo.

Um muito menos falado, mas da mesma maneira que domínio importante é in-addr.arpa.

Também é aninhado como os domínios `normais'. in-addr.arpa nos permite adquirir os nomes dos hosts quando temos um endereço. Um coisa importante aqui é notar aquele ip#s é escrito em ordem inversa in-addr.arpa domínio. Se você tem o endereço de uma máquina: 192.128.52.43 o named processa igualmente para prep.ai.mit.edu

exemplo: ache os servidores arpa ''.''. find servidores in-addr.arpa., find servidores 192.in-addr.arpa. , find servidores 128.192.in-addr.arpa. , find servidores 52.128.192.in-addr.arpa. . O find precisou de registros para 43.52.128.192.in-addr.arpa. Huh inteligente? (Diga `Sim'.) A reversão dos números podem estar confundindo nos primeiros 2 anos.

Eu contei há pouco uma mentira. DNS não trabalha no modo literal pouco há pouco lhe falei. Mas é o bastante e fim.

4.2. Nosso próprio domínio

Agora iremos definir o nosso próprio domínio. Iremos criar o domínio linux.bogus e definir as máquinas. Eu uso um domínio falso no named para ter certeza que não iremos perturbar ninguem lá fora.

Nós já começamos esta parte com esta linha no named.boot:

______________________________________________________________________
primary 0.0.127.in-addr.arpa pz/127.0.0
______________________________________________________________________

Por favor note a falta de `.' ao término dos nomes de domínio neste arquivo. Os primeiros nomes de linha no arquivo pz/127.0.0 como definindo 0.0.127.in-addr.arpa. Nós já montamos este arquivo, veja:

 ______________________________________________________________________
  @           IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                                  1       ; Serial
                                  28800   ; Refresh
                                  7200    ; Retry
                                  604800  ; Expire
                                  86400)  ; Minimum TTL
                          NS      ns.linux.bogus.
  1                       PTR     localhost.
  ______________________________________________________________________

Por favor note o `.' ao término de todo o domínio de nomes neste arquivo, em contraste com o arquivo de named.boot. Algumas pessoas gostam começar cada arquivo de zona com um $ORIGIN diretiva, mas isto é supérfluo. O origin(onde na hierarquia de DNS pertence) de um arquivo de zona é especificado no `Domain ' coluna do arquivo de named.boot, neste caso é 0.0.127.in-addr.arpa.

Esta 'zona de arquivo' contém 3 `Registro de Resolução' (RRs): A SOA RR. A NS RR e A PTR RR. SOA é um pequeno começo de autoridade. O `@' é um anotação especial que significa a origem, e desde o `Domain ' coluna para este arquivo realmente diz 0.0.127.in-addr.arpa a primeira linha significa

0.0.127.IN-ADDR.ARPA. EM SOA...

NS é o Servidor de Nome RR, conta para o DNS que máquina é a servidora de nomes do domínio. E finalmente o registro de PTR diz que 1 (iguala 1.0.0.127.IN-ADDR.ARPA, i.e. 127.0.0.1) é named do localhost.

O registro de SOA é o preâmbulo a toda zona de arquivo, e deveria haver exatamente um em cada arquivo de zona, o primeiro registro. Descreve a zona de onde vem (uma máquina chamada linux.bogus), que é responsável para seus conteúdos (hostmaster@linux.bogus), que versão de o arquivo de zona isto é (consecutivo: 1), e outras coisas que têm que fazer com o cache e servidores de DNS secundários. Para o resto dos campos ,refresh, tente novamente, expiraçãoe e uso mínimo (refresh, retry, expire e minimum) que os números usaram neste HOWTO e você deve estar seguro.

O registro de NS nos fala quem faz o DNS que serve para 0.0.127.in-addr.arpa, é ns.linux.bogus. O registro de PTR nos fala que 1.0.0.127.in-addr.arpa (aquie 127.0.0.1) é conhecido como localhost.

Agora reinicie o seu named (o comando é ndc restart) e usa o nslookup para examinar o que você fez:

$ nslookup

Default Server: localhost
Address: 127.0.0.1

> 127.0.0.1
Server: localhost
Address: 127.0.0.1

Name: localhost
Address: 127.0.0.1

assim consegue obter localhost de 127.0.0.1, bom. Agora para nosso principal tarefa, o domínio de linux.bogus, insira uma linha primária nova no named.boot:

______________________________________________________________________
primary linux.bogus pz/linux.bogus
______________________________________________________________________

Note a falta continua do fim `.' no nome de domínio no arquivo named.boot.

No arquivo de zona linux.bogus poremos alguns dados falsos:

 ___________________________________________________________________
 ;
 ; Zone file for linux.bogus
 ; Arquivo de zona para linux.bogus
 ; Mandatory minimum for a working domain
 ; Mínimo obrigatório para um domínio de funcionamento
 @     IN    SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                     199511301       ; serial, todays date + todays serial #
                     28800           ; refresh, seconds
                     7200            ; retry, seconds
                     3600000         ; expire, seconds
                     86400 )         ; minimum, seconds
             NS      ns.linux.bogus.
             NS      ns.friend.bogus.
             MX      10 mail.linux.bogus   ; Primary Mail Exchanger (Correio Primário Exchanger)
             MX      20 mail.friend.bogus. ; Secondary Mail Exchanger (Correio Secundário)

 localhost   A       127.0.0.1
 ns          A       127.0.0.2
 mail        A       127.0.0.4
  ______________________________________________________________________

Devem ser notadas duas coisas sobre o registro de SOA. ns.linux.bogus deve ser uma máquina atual com um UM registro. Não é legal ter um registro CNAME porque ele é uma máquina mencionada no registro de SOA. Não é necessario que o nome seja `Ns', poderia ser qualquer nome de anfitrião legal. Logo, hostmaster.linux.bogus deveria ser lido como hostmaster@linux.bogus, este deveria ser pseudônimo de um correio, ou uma caixa postal onde o mantedor do DNS deveriam ler o correio freqüentemente. Qualquer correio relativo ao domínio será enviado ao endereço listado aqui. A necessidade de nome não ser `Hostmaster', pode ser qualquer um endereço de e-mail, mas o endereço de e-mail `Hostmaster ' é esperado.

Há um RR novo digitado neste arquivo, o MX, ou eXchanger de Correio RR. Conta para sistemas de correio onde enviar correio para quem é enviado someone@linux.bogus, isto é também mail.linux.bogus ou mail.friend.bogus.

O número antes de cada nome de máquina é a priorida do RRs do MX. O RR com o mais baixo número (10) é o um correio deve ser enviado principalmente. Se eleo falhar pode ser enviado a um com um número mais alto, um manipulador de correio secundário, i.e. mail.friend.bogus que tem prioridade 20 aqui.

Reinicie o named execute ndc restart. Examine os resultados com o nslookup:

        $ nslookup
       > set q=any
       > linux.bogus
       Server:  localhost
       Address:  127.0.0.1

       linux.bogus
               origin = linux.bogus
               mail addr = hostmaster.linux.bogus
               serial = 199511301
               refresh = 28800 (8 hours)
               retry   = 7200 (2 hours)
               expire  = 604800 (7 days)
               minimum ttl = 86400 (1 day)
       linux.bogus     nameserver = ns.linux.bogus
       linux.bogus     nameserver = ns.friend.bogus
       linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
       linux.bogus     preference = 20, mail exchanger = mail.friend.bogus
       linux.bogus     nameserver = ns.linux.bogus
       linux.bogus     nameserver = ns.friend.bogus
       ns.linux.bogus  internet address = 127.0.0.2
       mail.linux.bogus        internet address = 127.0.0.4

Num exame cuidadoso você descobrirá um bug. A linha

linux.bogus preference = 10, mail exchanger = mail.linux.bogus.linux.bogus

é todo o mal. Deveria ser:

linux.bogus preference = 10, mail exchanger = mail.linux.bogus

Eu cometi um engano deliberadamente para que você pudesse aprender :-) Olhando no arquivo de zona achamos que a linha

@ MX 10 mail.linux.bogus; Correio Primário Exchanger está perdendo um período. Ou tem muitos 'linux.bogus'. Se um nome de máquina não terminar em um período num arquivo de zona a origem é somada ao fim. Então:

______________________________________________________________________
@ MX 10 mail.linux.bogus. ; Correio primário Exchanger
______________________________________________________________________

ou

______________________________________________________________________
@ MX 10 mail ; Primary Mail Exchanger
______________________________________________________________________

está correto. Eu prefiro a forma posterior, é menos para digitar. Em uma zona ou arquivo de domínio deveria ser escrito e deveria ser terminado com um `.' ou não deveria ser incluído nada em qual caso deixa de comparecer o origem. Eu tenho que grifar isto no arquivo de named.boot não deveria haver `.'s depois dos nomes de domínio. Você não tem nenhuma idéia quantas vezes um `.' ou muitos estragaram coisas.

Assim o novo arquivo de zona no meu ponto de vista, com alguma informação extra tambem, como:

  ______________________________________________________________________
  ;
  ; Zone file for linux.bogus
  ; Arquivo de zona para o linux.bogus
  ;
  ; Mandatory minimum for a working domain
  ;
  @     IN    SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                      199511301       ; serial, todays date + todays serial #
                      28800           ; refresh, seconds
                      7200            ; retry, seconds
                      604800          ; expire, seconds
                      86400 )         ; minimum, seconds

              NS      ns              ; Inet Address of name server
              NS      ns.friend.bogus.
              MX      10 mail         ; Primary Mail Exchanger
              MX      20 mail.friend.bogus. ; Secondary Mail Exchanger

  localhost   A       127.0.0.1
  ns          A       127.0.0.2
  mail        A       127.0.0.4
  ;
  ; Extras
  ;
  @           TXT     "Linux.Bogus, Seu consultor de DNS"

  ns          MX      10 mail
              MX      20 mail.friend.bogus.
              HINFO   "Pentium" "Linux 1.2"
              TXT     "RMS"
  richard     CNAME   ns
  www         CNAME   ns

  donald      A       127.0.0.3
              MX      10 mail
              MX      20 mail.friend.bogus.
              HINFO   "i486"  "Linux 1.2"
              TXT     "DEK"

  mail        MX      10 mail
              MX      20 mail.friend.bogus.
              HINFO   "386sx" "Linux 1.0.9"

  ftp         A       127.0.0.5
              MX      10 mail
              MX      20 mail.friend.bogus.
              HINFO   "P6" "Linux 1.3.59"
  __________________________________________________________________

Você poderia querer mover o primeiro três registros A de forma que eles sejam colocados próximo aos outros registros respectivos deles/delas, ao invés do de cima. Há vários RRs novos aqui: HINFO (Informação sobre o HOST) tem duas partes, é hábito citar casa um. A Primeira parte é o hardware ou CPU da máquina, e a segunda parte do software ou OS da máquina. ns tem um Pentium CPU e roda o Linux 1.2. O registro TXT é um registro de texto de divulgação que você pode usar para qualquer coisa que você queira. CNAME (Nome Canônico) é um modo para dar há cada máquina vários nomes.

Assim richard e www é um pseudônimo para ns. É importante a nota que A MX, CNAME e registro de SOA nunca deveriam se referir a um registro de CNAME, eles, só devem se referir a algo com um registro A, assim prejudicaria.

______________________________________________________________________
foobar CNAME richard ; NÃO!
______________________________________________________________________

mas o correto era ter

______________________________________________________________________
foobar CNAME ns ; Sim!
______________________________________________________________________

Também é importante a nota que um CNAME não é um nome de host legal para um endereço de e-mail: webmaster@www.linux.bogus é um e-mail ilegal de endereçamento acima. Você pode esperar que vários admins de correio lá fora obrigar esta regra até mesmo trabalhar para você. O modo para evitar é usar registros A (e talvez alguns outros também, como um registro MX) ao invés:

______________________________________________________________________
www A 127.0.0.2
______________________________________________________________________

Paul Vixie, o mago do named primário, recomenda não usar CNAME. Assim considere não usar isto muito seriamente.

Carregue o banco de dados novo executando ondc reload, isto faz com que o named leia os seus arquivos novamente.

$ nslookup
Default Server: localhost
Address: 127.0.0.1

> ls -d linux.bogus

Significa que todos os registros devem ser listados.

[localhost]
linux.bogus. SOA ns.linux.bogus hostmaster.linux.bogus.
(199511301 28800 7200 604800 86400) linux.bogus. NS ns.linux.bogus
linux.bogus. NS ns.friend.bogus
linux.bogus. MX 10 mail.linux.bogus
linux.bogus. MX 20 mail.friend.bogus
linux.bogus. TXT "Linux.Bogus, seu consultro de DNS"
localhos A 127.0.0.1
mail A 127.0.0.4
mail MX 10 mail.linux.bogus
mail MX 20 mail.friend.bogus
mail HINFO 386sx Linux 1.0.9
donald A 127.0.0.3
donald MX 10 mail.linux.bogus
donald MX 20 mail.friend.bogus
donald HINFO i486 Linux 1.2
donald TXT "DEK"
www CNAME ns.linux.bogus
richard CNAME ns.linux.bogus
ftp A 127.0.0.5
ftp MX 10 mail.linux.bogus
ftp MX 20 mail.friend.bogus
ftp HINFO P6 Linux 1.3.59
ns A 127.0.0.2
ns MX 10 mail.linux.bogus
ns MX 20 mail.friend.bogus
ns HINFO Pentium Linux 1.2
ns TXT "RMS"
linux.bogus. SOA ns.linux.bogus hostmaster.linux.bogus.
(199511301 28800 7200 604800 86400)

Isto é bom. Confiramos o que diz só para www:

> set q=any
> www.linux.bogus.
Server: localhost
Address: 127.0.0.1

www.linux.bogus canonical name = ns.linux.bogus

ns.linux.bogus

linux.bogus nameserver = ns.linux.bogus
linux.bogus nameserver = ns.friend.bogus
ns.linux.bogus internet address = 127.0.0.2

e ns.linux.bogus tem o endereço 127.0.0.2. Isto é bom também.

4.3. Arejando abaixo

Claro que, este domínio é altamente falso, e assim é todos os endereços nisto, e infelizmente talvez confunda-o um pouco. Para um exemplo real de domínio veja na próxima seção.

5. Exemplo de um domínio real

Onde iremos listar alguns arquivos reais de zona

Os usuários sugeriram que eu inclu-sei um exemplo real de domínio em funcionamento como minha explicação das diferenças entre um domínio que esteja funcionando e o exemplo falso que era um pouco obscuro.

Uma coisa sobre este exemplo: Não entre em em seus servidores de nome! Só use para ler para referência. Se você quer experimentar faça isto com o falso exemplo. Eu uso este exemplo com a permissão de David Bullock de LAND-5. Estes arquivos eram atuais 24 de setembro de 1996, e podem diferenciar do que você achar se examinar os servidores de nomes do LAND-5's.

Também, lembre-se de: apaguar os espaços principais ;-)

5.1. /etc/named.boot (ou /var/named/named.boot)

Aqui nós temos as linhas primárias para as duas zonas do contrário que precisamos: a rede 127.0.0, como também LAND-5's 206.6.177 subnet. E uma linha primária para land-5's zona land-5.com. Também note isso em vez de encher os arquivos em um diretório chamados pz, como eu faço neste HOWTO, ele, os põe em um diretório chamado zone.

_______________________________________________________________
; Boot file for LAND-5 name server
; Arquivo de boot para o servidor de nomes LAND-5

directory /var/named
;
; type domain source file or host
cache . root.cache
primary 0.0.127.in-addr.arpa zone/127.0.0
primary 177.6.206.in-addr.arpa zone/206.6.177
primary land-5.com zone/land-5.com
______________________________________________________________________

5.2. /var/named/root.cache

Se lembre de que este arquivo é dinâmico, e o que esta listado aqui é velho. Você pode conseguir um melhor produzindo agora.

  ______________________________________________________________________
  ; <<>> DiG 2.1 <<>>
  ;; res options: init recurs defnam dnsrch
  ;; got answer:
  ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6
  ;; flags: qr rd ra; Ques: 1, Ans: 9, Auth: 0, Addit: 9
  ;; QUESTIONS:
  ;;      ., type = NS, class = IN

  ;; ANSWERS:
   .       518357  NS      H.ROOT-SERVERS.NET.
   .       518357  NS      B.ROOT-SERVERS.NET.
   .       518357  NS      C.ROOT-SERVERS.NET.
   .       518357  NS      D.ROOT-SERVERS.NET.
   .       518357  NS      E.ROOT-SERVERS.NET.
   .       518357  NS      I.ROOT-SERVERS.NET.
   .       518357  NS      F.ROOT-SERVERS.NET.
   .       518357  NS      G.ROOT-SERVERS.NET.
   .       518357  NS      A.ROOT-SERVERS.NET.

  ;; ADDITIONAL RECORDS:
  H.ROOT-SERVERS.NET.     165593  A       128.63.2.53
  B.ROOT-SERVERS.NET.     165593  A       128.9.0.107
  C.ROOT-SERVERS.NET.     222766  A       192.33.4.12
  D.ROOT-SERVERS.NET.     165593  A       128.8.10.90
  E.ROOT-SERVERS.NET.     165593  A       192.203.230.10
  I.ROOT-SERVERS.NET.     165593  A       192.36.148.17
  F.ROOT-SERVERS.NET.     299616  A       192.5.5.241
  G.ROOT-SERVERS.NET.     165593  A       192.112.36.4
  A.ROOT-SERVERS.NET.     165593  A       198.41.0.4

  ;; Total query time: 250 msec
  ;; FROM: land-5 to SERVER: default -- 127.0.0.1
  ;; WHEN: Fri Sep 20 10:11:22 1996
  ;; MSG SIZE  sent: 17  rcvd: 312
  ______________________________________________________________________
5.3. /var/named/zone/127.0.0

Há pouco nos fundamentos, o registro SOA é obrigatório, e um registro que define o 127.0.0.1 para localhost. São requeridos ambos. Nenhum mais deveria estar neste arquivo. Provavelmente nunca sera preciso atualizar, a menos que seu nameserver ou hostmaster enviem mudanças.

  ______________________________________________________________________
  @               IN      SOA     land-5.com. root.land-5.com. (
                                  199609203       ; Serial
                                  28800   ; Refresh
                                  7200    ; Retry
                                  604800  ; Expire
                                  86400)  ; Minimum TTL
                          NS      land-5.com.

  1                       PTR     localhost.
  ______________________________________________________________________

5.4. /var/named/zone/land-5.com

Aqui nós vemos que o registro SOA é obrigatório, e os registros de NS. Nós podemos ver que ele tem um servidor de nome secundário que é ns2.psi.net. Como deve ser, sempre tenha um servidor secundário fora do local. Nós podemos também vêr que ele como um host mestre chamou land-5 que leva o cuidado de todos os serviços diferentes, e que ele é usa isto no CNAMEs (uma alternativa está usando registros A).

Como você vê o registro de SOA, o arquivo de zona origin do land-5.com, e a pessoa de contato é root@land-5.com. hostmaster é outro e usaram endereço para a pessoa de contato. O número de série é no formato de yyyymmdd habitual com número de série de dias juntos; esta é provavelmente a sexta versão de arquivo de zona no 20º dia de setembro de 1996. Lembre-se que o número de série tem que aumentar automaticamente, aqui há só um digito para todays consecuitivo #, assim depois da 9 edição ele tem que esperar até amanhã antes que possa editar o arquivo novamente. Considere usar dois digitos.

  ______________________________________________________________________
  @    IN     SOA     land-5.com. root.land-5.com. (
                      199609206       ; serial, todays date + todays serial #
                      10800           ; refresh, seconds
                      7200            ; retry, seconds
                      10800           ; expire, seconds
                      86400 )         ; minimum, seconds
              NS      land-5.com.
              NS      ns2.psi.net.
              MX      10 land-5.com.  ; Primary Mail Exchanger

  localhost   A       127.0.0.1

  router      A       206.6.177.1

  land-5.com. A       206.6.177.2
  ns          CNAME   land-5.com.
  ftp         CNAME   land-5.com.
  www         CNAME   land-5.com.
  mail        CNAME   land-5.com.
  news        CNAME   land-5.com.

  funn        A       206.6.177.3
  illusions   CNAME   funn.land-5.com.
  @           TXT     "LAND-5 Corporation"

  ;
  ;       Workstations
  ;
  ws_177200   A       206.6.177.200
              MX      10 land-5.com.   ; Primary Mail Host
  ws_177201   A       206.6.177.201
              MX      10 land-5.com.   ; Primary Mail Host
  ws_177202   A       206.6.177.202
              MX      10 land-5.com.   ; Primary Mail Host
  ws_177203   A       206.6.177.203
              MX      10 land-5.com.   ; Primary Mail Host
  ws_177204   A       206.6.177.204
              MX      10 land-5.com.   ; Primary Mail Host
  ws_177205   A       206.6.177.205
              MX      10 land-5.com.   ; Primary Mail Host
  ; {Many repetitive definitions deleted - SNIP}
  ws_177250   A       206.6.177.250
              MX      10 land-5.com.   ; Primary Mail Host
  ws_177251   A       206.6.177.251
              MX      10 land-5.com.   ; Primary Mail Host
  ws_177252   A       206.6.177.252
              MX      10 land-5.com.   ; Primary Mail Host
  ws_177253   A       206.6.177.253
              MX      10 land-5.com.   ; Primary Mail Host
  ws_177254   A       206.6.177.254
              MX      10 land-5.com.   ; Primary Mail Host
  ______________________________________________________________________

Outra coisa é notar que as estações de trabalho não têm o nome dos indivíduo, mas basta um prefixo seguido pelas duas últimas partes do números de IP.

Usando uma convenção que pode simplificar a manutenção significativamente, mas podendo ser um pouco impessoal.

5.5. /var/named/zone/206.6.177

Eu farei um comentário sobre este arquivo depois.

  ______________________________________________________________________
  @               IN      SOA     land-5.com. root.land-5.com. (
                                  199609206       ; Serial
                                  28800   ; Refresh
                                  7200    ; Retry
                                  604800  ; Expire
                                  86400)  ; Minimum TTL
                          NS      land-5.com.
                          NS      ns2.psi.net.
  ;
  ;       Servers
  ;
  1       PTR     router.land-5.com.
  2       PTR     land-5.com.
  3       PTR     funn.land-5.com.
  ;
  ;       Workstations
  ;
  200     PTR     ws_177200.land-5.com.
  201     PTR     ws_177201.land-5.com.
  202     PTR     ws_177202.land-5.com.
  203     PTR     ws_177203.land-5.com.
  204     PTR     ws_177204.land-5.com.
  205     PTR     ws_177205.land-5.com.
  ; {Many repetitive definitions deleted - SNIP}
  250     PTR     ws_177250.land-5.com.
  251     PTR     ws_177251.land-5.com.
  252     PTR     ws_177252.land-5.com.
  253     PTR     ws_177253.land-5.com.
  254     PTR     ws_177254.land-5.com.
  ______________________________________________________________________

A zona inversa é o pedaço do setup que parece causar o maior peso. É usado para achar o nome do host se você tem que numerar um IP de máquina. Exemplo: você é um servidor de irc e aceita conexões de clientes de irc. Porém você é um servidor de irc norueguês e assim você só quer aceitar conexões de clientes na Noruega e de outros Países escandinavos. Quando você obtém uma conexão de um cliente a biblioteca C pode lhe falar o numero do IP da máquina conectando porque o IP nimerado do cliente é contido em todos os pacots e asim é passado na rede. Agora você pode chamar uma função chamada gethostbyaddr que observa o nome de um host dando o número de IP.

Gethostbyaddr perguntará um servidor de DNS que atravessará o DNS então irá procurar a máquina. Supondo a conexão de cliente é de ws_177200.land-5.com. O numero do IP que a biblioteca de C provê ao servidor de irc é 206.6.177.200. Para descobrir o nome daquela máquina nós precisamos achar 200.177.6.206.in-addr.arpa. O servidor de DNS achará primeiro o servidor de arpa., então achará o servidor de in-addr.arpa., seguindo o rastro inverso por 206, então 6 e achado o servidor afinal para 177.6.206.in-addr.arpa zona é land-5. De qual vai finalmente adquir a resposta que para 200.177.6.206.in-addr.arpa temos um registro A 'PTR ws_177200.land-5.com ', significando que o nome com 206.6.177.200 são ws_177200.land-5.com. Como com a explicação de como prep.ai.mit.edu observaram, isto é ligeiramente fictício.

Voltando ao exemplo de servidor de irc. O servidor de irc só aceita conexões dos países escandinavos, i.e., * .no, * .se, * .dk, o nome ws_177200.land-5.com não emparelha nenhum desses claramente, o servidor negará a conexão. Se não havia nenhuma cartografia inversa de 206.2.177.200 pelo em-addr.arpa zona que o servidor teria sido impossibilitado achar o nome nada e teria que povoar comparando 206.2.177.200 com * .no, * .se e * .dk nenhum de que vem a inicialização.

Algumas pessoas irão lhe falar que as cartografias de lookup contrário são só importante para servidores, ou não são importante para nada. Não é assim: Muitos ftp, news, irc e até mesmo algum http (WWW) servidores não aceitarão conexões de máquinas que eles não podem achar o nome deles. Tão contrário a cartografias para máquinas são de fato obrigatórias.

6. Manutenção

Mantendo isto trabalhando.

Há uma tarefa de manutenção você tem que fazer no nameds, diferente de os mantendo executando. Isto é mantero arquivo de root.cache atualizado. O modo mais fácil é usar o dig, primeiro execute o dig sem argumentos, você, irá adquirir um root.cache de acordo com seu próprio servidor. Então pergunte há um dos servidores de raiz listados com o dig @rootserver . ns. Você notará a produção olhando terrivelmente para o arquivo de root.cache com exceção de um par de números extras. Esses números são inocentes. Salve para um arquivo (dig @e.root-servers.net. ns >root.cache.new) e substitui o velho root.cache.

Lembre-se de reiniciar o named depois de substituir o arquivo de cache.

Al Longyearenviou enviou-me este script para pode ser executado automaticamente a atualização do root.cache, instale uma linha no seu contrab para executar uma vez por mês e esqueça. O script assume que você tem correio e que trabalha com o pseudôminio-correio 'Hostmaster' que é definido. Você tem que colocar isto no seu setup.

  ______________________________________________________________________
  #!/bin/sh
  #
  # Update the nameserver cache information file once per month.
  # This is run automatically by a cron entry.
  # Atualiza o cache do nameserver este arquivo é criado uma vez por mês.
  # É executado automaticamente por uma entrada no cron.
  #
  (
   echo "To: hostmaster "
   echo "From: system "
   echo "Subject: Atualização automatica do arquivo de named.boot"
   echo

   export PATH=/sbin:/usr/sbin:/bin:/usr/bin:
   cd /var/named

   dig @rs.internic.net . ns >root.cache.new

   echo "O arquivo de named.boot foi atualizado para conte a seguinte informação:"
   echo
   cat root.cache.new

   chown root.root root.cache.new
   chmod 444 root.cache.new
   rm -f root.cache.old
   mv root.cache root.cache.old
   mv root.cache.new root.cache
   ndc restart
   echo
   echo "O nameserver foi reiniciao para assegurar que a atualização está completa."
   echo "O arquivo de root.cache antigo é chamado agora de
  /var/named/root.cache.old."
  ) 2>&1 | /usr/lib/sendmail -t
  exit 0
  ______________________________________________________________________

Alguns de você podem apanhar o arquivo de root.cache também no ftp da Internic. Por favor não use ftp para atualizar o root.cache, o método acima é muito mais amigável à rede.

7. Configuração automática para conexões de dialup.

Esta seção explica como eu montei coisas automatizando tudo. Meu modo pode não servir para nada, mas você pode adquirir uma idéia de algo que eu fiz. Também, eu uso ppp para dialup, enquanto muitos usam o slip ou cslip, quase tuda a sua ligação pode ser diferente da minha. Mas o programa dip de slip deveria poder fazer muitas das coisas sim.

Normalmente, quando eu não sou conectado à rede eu tenho um arquivo de resolv.conf contendo uma linha simplesmente

domain uio.no

Isto assegura que eu não estou esperando pelo nome de hosts para solucionar a biblioteca que voute tentar conecta a um nameserver que não pode me ajudar. Mas quando eu conecto eu quero começar o named e tem um resolv.conf que olha como descrevi acima. Eu resolvi isto mantendo dois resolv.conf 'arquivos temporários' nomeados como resolv.conf.local e resolv.conf.connected. Olhe posteriormente como o resolv.conf descrito antes neste documento.

Conectar automaticamente à rede eu executo um script chamado 'ppp-in':

_____________________________________________________________
#!/bin/sh
echo chamando...
pppd
_____________________________________________________________

pppd tem um arquivo com opções que contam com os particulares como é conectado. Uma vez que minha conexão de ppp começa o pppd um script chamado ip-up (isto é descrito na página do man pppd). Esta é o script:

_____________________________________________________________
#!/bin/sh
interface="$1"
device="$2"
speed="$3"
myip="$4"
upip="$5"
...
cp -v /etc/resolv.conf.connected /etc/resolv.conf
...
/usr/sbin/named
_____________________________________________________________

I.e. Eu começo o meu named lá. Quando ppp é pppd está desconectado rodo um script chamado ip-down:

_____________________________________________________________
#!/bin/sh
cp /etc/resolv.conf.local /etc/resolv.conf
read namedpid kill $namedpid
_____________________________________________________________

Assim adquiro há configuração quando conectado (up) e desconfigurado quando desconectado (down).

Alguns programas, irc e talk vêm à mente, faça para alguns muitas suposições, e para irc caracteriza o dcc e talk para trabalhar direito você tem que fixar o seu arquivo de hosts. Eu insiro isto no meu script de ip-up:

_____________________________________________________________
cp /etc/hosts.ppp /etc/hosts
echo $myip roke >>/etc/hosts
______________________________________________________________

hosts.ppp contém simplesmente

______________________________________________________________
127.0.0.1 localhost
______________________________________________________________

e o echo insere o ip# i recebido pelo meu nome de host(roke). Você deve usar o nome do seu host se conhecer ao invés de por.

Isto pode ser achado com o comando de hostname.

Provavelmente não é inteligente executar o named quando você não está conectado a rede, isto é porque named tentará enviar questões à rede e tem um intervalo longo, e você tem que esperar por todo este intervalo de tempo para que algum programa tente solucinar um nome. Se você está usando dialup você deve começar o named quando conectando e mata-lo quando desconectando. Mas por favor veja a seção de ``FAQ'' para um tips.

Algumas pessoas gostam de usar uma diretiva forwarders em conexões lentas. Se seu provedor de internet tem servidores de DNS em 1.2.3.4 e 1.2.3.5 você possa inserir a linha

______________________________________________________________________
forwarders 1.2.3.4 1.2.3.5
______________________________________________________________________

no arquivo de named.boot. E também deixar o arquivo root.cache vazio. Isto diminui a quantidade de tráfico de IP que seu host origina, qualquer, possivelmente coisas de velocidade acima. Isto é importante especialmente se você está pagando por byte que envia. Isto tem o valor somado se deixar você fora de um dever de manutenção você tem como um cache de named maintainer; você não tem que atualizar o arquivo de root.cache vazio.

8. FAQ

Nesta seção eu listo algumas das perguntas mais freqüentementes relacionado a DNS e este HOWTO. E as respostas :-) Por favor leia esta seção antes de remeter-me.

1. Como usar DNS de dentro de um firewall? Várias sugestões: `Forwarders ', `Slave ', e tem um olhar no lista de literatura ao término deste HOWTO.

2. Como eu faço para DNS rotacionar pelos endereços disponíveis para um conserto, digo www.busy.site para obter uma efeito de leitura balanceada, ou semelhante? Faça vários registros A para www.busy.site e use o bind 4.9.3 ou superior. Então o bind vai usar o round-robin para as respostas. Não trabalhe com versões mais recente do bind.

3. Eu quero fixar DNS em um intranet (fechada). O que faço eu? Remova o arquivo de cache e divida o arquivo de zona. Que também tem meios de adquirir um arquivo novo cache todo o tempo.

4. Meu sistema não tem o programa de ndc. O que faço eu? Seu sistema tem então um velho, um pouco obsoleto, bind instalado. Se segurança é importante a você: melhore o bind imediatamente. Se não, se pode viver com este. E em vez de ndc start execute named.

O ndc reload torna-se named.reload e o ndc start torna-se named.restart Todos estes programas devem estar provável em /usr/sbin.

5. Como eu monto um servidor de nome secundário? Se o servidor primário tem endereço 127.0.0.1 que você pôs numa linha no arquivo de named.boot de seu secundario:

_____________________________________________________________________
secondary linux.bogus 127.0.0.1 sz/linux.bogus
_____________________________________________________________________

6. Eu quero executar o bind quando estou desconectado da rede. Eu recebi este correio de Ian Clark onde ele explica o modo dele de fazer isto:

Eu executo o named na minha maquina 'Masquerading' aqui. Eu tenho dois arquivos de root.cache, a pessoa chamado root.cache.real que contém o servidor real da raiz do named e o outro root.cache.fake chamado que contém...

--------------
; root.cache.fake
; this file contains no information
--------------

Quando eu estou fora da rede copio o root.cache.fake arquivo para o root.cache e reinicio o named.

Quando estou acessando online eu copio root.cache.real para root.cache e reinicio o named. Isto é feito em ip-down e ip-up respectivamente. A primeira vez em que eu faço uma pergunta fora da rede em um nome de domínio o named não faz porque põe uma entrada assim em mensagens...

Jan 28 20:10:11 hazchem named[10147]: No root nameserver for class IN

com o qual eu posso viver. Parece trabalhar certo Eu posso usar o nameserver para máquinas locais enquanto fora da rede sem a demora de intervalo para domínio externo do named e enquanto na questões para domínios externo trabalham normalmente.

7. Onde o servidor de caching do named armazena o cache? Como eu posso contral o tamanho? O cached é completamente armazenado em memória, não é escrito em disco em qualquer momento. Toda vez que mata o named o cache é perdido. O cache não tem qualquer forma de controle. O named administra e o controla com algumas regras simples. Voc6e não pode controlar o cache ou a classificação do cache segundo o tamanho e qualquer outra forma de razão. Se você pensa em ``fixar'' o cache estaria prejudicando o named. E isto não é recomendado.

8. O named salva o cache quando reiniciado? Eu posso salva-lo? Não, o named não salva o cache quando é morto. Isto define que o cache é construído toda vez que você o mata e reinicia o named. Não há nenhum modo para fazer um arquivo de cache do named. Se você quer ``fixar'' o cache estaria prejudicando o named. E isto não é recomendado.

9. Como se tornar um bom admin de DNS. Documentação e Ferramentas.

Existe a Documentação Real. Online e impresso. A leitura de alguns destes são exigidos para fazer uma pequeno DNS e em tempo e em tempo uma grande admin. Impresso Standard book is DNS and BIND por C. Liu and P. Albitz from O'Reilly & Associates, Sebastopol, CA, ISBN 0-937175-82-X. Eu li, é excelente. Também há um seção em DNS in TCP/IP Network Administration DNS, por Craig Hunt de O'Reilly..., ISBN 0-937175-82-X. Outro bom para administração de DNS (ou bem qualquer coisa no que diz respeito ao assunto) é Zen e a Arte de Manutenção de Motocicleta por Robert M. Prisig: -) Disponível como ISBN 0688052304 e outros.

Online você achará material em, ; A FAQ, uma referência do manual (BOG; Bind Operation Guide) com documentos e definições de protocols e DNS curto (estes, e a maioria, se não tudo, do rfcs mencionado abaixo, são também contido na distribuição do bind). Eu não li a maioria deles, entretanto eu não sou um grande admin de DNS. Arnt Gulbrandsen por outro lado leu GOD e ele é execelente sobre isto :-). O newsgroup que comp.protocols.tcp-ip.domains fala sobre DNS. Além de vários RFCs sobre DNS, os mais importantes provavelmente são estes:

     RFC 2052
        A. Gulbrandsen, P. Vixie, A DNS RR for specifying the location
        of services (DNS SRV), October 1996

     RFC 1918
        Y. Rekhter, R. Moskowitz, D. Karrenberg, G. de Groot, E. Lear,
        Address Allocation for Private Internets, 02/29/1996.

     RFC 1912
        D. Barr, Common DNS Operational and Configuration Errors,
        02/28/1996.

     RFC 1713
        A. Romao, Tools for DNS debugging, 11/03/1994.

     RFC 1712
        C. Farrell, M. Schulze, S. Pleitner, D. Baldoni, DNS Encoding of
        Geographical Location, 11/01/1994.

     RFC 1183
        R. Ullmann, P. Mockapetris, L. Mamakos, C. Everhart, New DNS RR
        Definitions, 10/08/1990.

     RFC 1035
        P. Mockapetris, Domain names - implementation and specification,
        11/01/1987.

     RFC 1034
        P. Mockapetris, Domain names - concepts and facilities,
        11/01/1987.

     RFC 1033
        M. Lottor, Domain administrators operations guide, 11/01/1987.

     RFC 1032
        M. Stahl, Domain administrators guide, 11/01/1987.

     RFC 974
        C. Partridge, Mail routing and the domain system, 01/01/1986.