Proposta de Projeto
—-
—-
Seminário Final
—-
Este artigo descreve o Domain Name System-DNS , onde seu propósito principal é associar nomes de hosts a endereços IP . Essa necessidade surge do principio que usuários normalmente usam nomes para identificar máquinas e softwares de computador endentem números. O DNS é um banco de dados distribuído, ou seja, cada site é responsável por guardar as informações dos seus computadores, sendo que há possibilidade de compartilhamento de informação, quando um site precisa procurar dados do outro.
Você já parou para pensar o que acontece quando digitamos uma URL em nosso navegador favorito? Ponderamos, quanto digitamos uma url no navegador o primeiro passo antes do conteúdo ser exibido é converter o nome (url) em IP, este processo é realizado pelo Servidor DNS, Sistema de Nomes e Domínios (Domain Name System), o endereço do servidor DNS é previamente configurado na máquina, seja por DHCP ou fixado manualmente, o servidor DNS é responsável por devolver ao navegador o IP do site solicitado, somente depois que a consulta é realizada que o navegador realizará a solicitação ao servidor web que responde pela url solicitada, após o conteúdo do site é exibido em sua seu navegador.
O DNS foi criado com o objetivo de tornar as coisas mais fáceis para o usuário, permitindo assim, a identificação de computadores na Internet ou redes locais através de nomes (é como se tivéssemos apenas que decorar o nome da pessoa ao invés de um número de telefone). A parte responsável por traduzir os nomes como www.nome.com.br em um endereço IP é chamada de resolvedor de nomes.
No inicio da Internet, quando era chamada de Arpanet, a conversão entre o nome da máquina e o seu IP era realizada usando-se um arquivo denominado de hosts.txt. Os administradores enviavam via e-mail as alterações dos seus domínios e buscavam via FTP tal arquivo para atualizar-se.
Com o crescimento da Internet tal mecanismo tornou-se completamente inviável, surgindo o DNS, um sistema descentralizado, fornecendo as características necessárias em relação aos problemas de carga gerada no tráfego na rede, de colisão de nomes e de consistência dos dados. [http://www.pop-rs.rnp.br/ovni/dns/hist.html]
Devido ao intenso tráfego da internet e devido à segurança da rede, a estrutura do banco de dados DNS é distribuída e hierárquica. Ou seja, ao invés de um banco de dados central e único com informações de todos os domínios, a resolução ocorre consultando-se diversos servidores DNS e sua resolução é hierárquica (um servidor DNS pode apontar para outro servidor DNS e assim sucessivamente).
A estrutura hierárquica equivale a uma árvore invertida, ou seja, existe um servidor principal que aponta para um secundário que aponta para um terceiro e assim sucessivamente. O servidor DNS que está no topo da internet é o servidor raiz.
Assista o vídeo criado pela centr.org que demonstra a resolução de nomes.
A figura 3 demostra a resolução de nomes para o endereço www.senacrs.com:
O servidor de nomes do cliente verifica que www.senacrs.com não faz parte do seu domínio e interroga o servidor de nomes da raiz (2). Este desconhece o endereço IP de www.senacrs.com, mas tem uma referência para o servidor de nomes do subdomínio com, que devolve ao servidor de nomes (3). Este pode então, interrogar o servidor de nomes de “com” sobre o endereço IP de www.senacrs.com (4) e obter assim, uma referência para o servidor de nomes de senars.com que devolve ao servidor de nomes local (5). Este interroga, finalmente o servidor de senacrs.com (6) que pode resolver o endereço pretendido (7). Termina assim o processo de resolução e o servidor de nomes local devolve ao cliente o endereço IP correspondente ao nome solicitado.
É responsável por receber as consultas DNS dos clientes locais e consultar os servidores externos, de modo a obter respostas às consultas efetuadas.
É responsável por manter os mapas referentes a uma zona local e responder a requisições vindas de máquinas de todo o mundo, que precisarem resolver nomes de domínio da zona sobre a qual este servidor tem autoridade
BIND (Berkeley Internet Name Domain) é o servidor para o protocolo DNS mais utilizado na Internet, especialmente em sistemas do tipo Like-Unix, onde ele pode ser considerado um padrão de facto. Foi criado por quatro estudantes de graduação, membros de um grupo de pesquisas em ciência da computação da Universidade de Berkeley, e foi distribuído pela primeira vez com o sistema operacional 4.3BSD. O programador Paul Vixie, enquanto trabalhava para a empresa DEC, foi o primeiro mantenedor do BIND. Atualmente o BIND é suportado e mantido pelo Internet Systems Consortium.
Para a versão 9, o BIND foi praticamente reescrito. Ele passou a suportar, dentre outras funcionalidades, a extensão DNSSEC e os protocolos TSIG e IPv6.
Assim como os programas Sendmail e WU-FTPD, e outros sistemas que remontam aos primeiros dias da Internet, as versões 4 e 8 do BIND tinham uma série de vulnerabilidades de segurança e, por isso, o seu uso é hoje fortemente desencorajado. Uma das motivações para reescrever o BIND, e lançar o BIND 9, foi disponibilizar um sistema mais seguro e competitivo com as ofertas de servidores DNS da Microsoft.
Estou Utilizando o Bind 9.7.2 no sistema Operacional Windows 2008, para minha surpresa o Bind para windows não possui os arquivos de configurações básicas, que sempre acompanha a instalação em sistemas linux, para configurar o Bind para rodar no windows precisamos criar o arquivo named.conf com as seguintes configurações básicas:
// Opções globais do servidor options { // Especifica a pasta base dos arquivos directory "C:\bind\etc"; // Especifica o arquivo de processo pid-file "C:\bind\var\named.pid"; // Escutar no seguinte endereço listen-on { any; }; // Clientes autorizados a consultar este servidor allow-query { 127.0.0.1; 192.168.200.0/24; }; // Realiza pesquisas recursivas recursion yes; // Indica quais hosts podes realizar recursividade //allow-recursion { localhost; localnets; }; // Servidores de forwarders forwarders { 8.8.4.4; 8.8.8.8; 201.40.162.7; }; }; // Zona raíz Informa o arquivo onde ficam descritos os servidores DNS espalhados pelo planeta. zone "." IN { type hint; file "named.root"; };
Com as configurações listadas anteriormente, o bind já pode ser inicializado acessando o Painel de Controle / Ferramentas Administrativas / Serviços, dentro de serviços procuramos a opção ISC Bind, após iniciado podemos utilizar o bind com servidor DNS recursivo ou como é popularmente conhecido servidor DNS Cache.
// Opções globais do servidor options { // Especifica a pasta base dos arquivos directory "C:\bind\etc"; // Especifica o arquivo de processo pid-file "C:\bind\var\named.pid"; // Não escutar em nenhuma interface ipv6 //listen-on-v6 { none; }; // Escutar no seguinte endereço listen-on { any; }; // Clientes autorizados a consultar este servidor allow-query { 127.0.0.1; 192.168.200.0/24; }; // Realiza pesquisas recursivas recursion yes; // Indica quais hosts podes realizar recursividade //allow-recursion { localhost; localnets; }; // Servidores de forward forwarders { 8.8.4.4; 8.8.8.8; 201.40.162.7; }; }; key "rndc-key" { algorithm hmac-md5; secret "Hve9TJIiPW2m/keWbmJcng=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; // Zona raíz zone "." IN { type hint; file "named.root"; }; // Zona Pinguim.com zone "pinguim.com" IN { type master; file "db.pinguim.zone"; allow-transfer { 10.1.1.7; }; }; // Zona reversa zone "200.168.192.in-addr.arpa" { type master; file "db.192.168.200.rev"; };
$TTL 6h @ IN SOA ns1.pinguim.com. hostmaster.pinguim.com. ( 2005022201 10800 3600 604800 86400 ) @ NS ns1.pinguim.com. ; ns1 IN A 192.168.200.253 www IN A 192.168.200.253 ;
; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.cache ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; ; last update: Jun 17, 2010 ; related version of root zone: 2010061700 ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30 ; ; FORMERLY NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ; ; FORMERLY C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; FORMERLY TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; FORMERLY NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; FORMERLY NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2F::F ; ; FORMERLY NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; FORMERLY AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803F:235 ; ; FORMERLY NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FE::53 ; ; OPERATED BY VERISIGN, INC. ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30 ; ; OPERATED BY RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FD::1 ; ; OPERATED BY ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42 ; ; OPERATED BY WIDE ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 M.ROOT-SERVERS.NET. 3600000 AAAA 2001:DC3::35 ; End of File
$TTL 38400 ; @ IN SOA ns1.pinguim.com. admin.pinguim.com. ( 2009080401 ;serial 28800 ;refresh 7200 ;retry 3600000 ;expire 86400 ) ;minimum @ IN NS ns1.pinguim.com. @ IN NS ns1.pinguim.com. ; ; Registros 1 IN PTR 192-168-200-1.pinguim.com. 2 IN PTR 192-168-200-2.pinguim.com. 3 IN PTR 192-168-200-3.pinguim.com. 4 IN PTR 192-168-200-4.pinguim.com. 5 IN PTR 192-168-200-5.pinguim.com. 6 IN PTR 192-168-200-6.pinguim.com. 7 IN PTR 192-168-200-7.pinguim.com. 8 IN PTR 192-168-200-8.pinguim.com. 9 IN PTR 192-168-200-9.pinguim.com. 10 IN PTR 192-168-200-10.pinguim.com. 253 IN PTR ns1.pinguim.com.
May 28 23:22:43 dns named[2764]: zone pinguim.com/IN: Transfer started. May 28 23:22:43 dns named[2764]: transfer of 'pinguim.com/IN' from 10.1.1.6#53: connected using 10.1.1.7#42062 May 28 23:22:44 dns named[2764]: zone pinguim.com/IN: transferred serial 2 May 28 23:22:44 dns named[2764]: transfer of 'pinguim.com/IN' from 10.1.1.6#53: Transfer completed: 1 messages, 5 records, 166 bytes, 0.216 secs (768 bytes/sec)
Arquivo gerado automaticamente pelo bind qunado é realizada a transferencia de zona, exemplificada no arquivo syslog
$ORIGIN . $TTL 21600 ; 6 hours pinguim.com IN SOA ns1.pinguim.com. hostmaster.pinguim.com. ( 2 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 604800 ; expire (1 week) 86400 ; minimum (1 day) ) NS ns1.pinguim.com. $ORIGIN pinguim.com. ns1 A 192.168.200.253 www A 192.168.200.253
// Zona Pinguim.com zone "pinguim.com" IN { type slave; file "/etc/bind/slave/db.pinguim.zone"; masters { 10.1.1.6; }; }; // Zona reversa zone "200.168.192.in-addr.arpa" { type slave; file "db.192.168.200.rev"; masters { 10.1.1.6; }; };
A instalação inicia com o download do bind9 para windows da página oficial do projeto: http://www.isc.org/software/bind. Para fins deste artigo foi utilizado a versão BIND-9.7.3-P1. Após realizar o download descompacte os arquivos, entre na pasta criada e execute o arquivo BINDInstall, a seguinte tela aparecerá:
Na tela que surge devemos configurar algunas opções:
Targer Director: c:\bind Define o local de instalação do bind Service Accont name: named Define o nome do usuario utilizado pelo bind
Service Account Password: Senha para usuário criado
Na guia option deixe marcada a opção Automatic Startup, para o serviço do bind ser inicializado junto com o boot do sistema.
Para facilitar a documentação assumiremos que o bind foi istalado no diretório c:\bind.
Após a instalação devemos configurar o bind para responder com servidor DNS recursivo ou cache como é conhecido no meio, para tal acesse o diretório que foi instalado o c:\bind\bin e exetute os comando conforme firura abaixo:
Com isso criamos a chave key para o bind e iniciamos a configuração do arquivo named.conf, o arquivo named.conf é responsavel por todas as configurações dos do bind.
Acesse o diretório c:\bind\etc e edite o arquivo rndc.conf, salve-o no mesmo diretório com o nome de named.conf, após deixe como o exemplo abaixo:
# named.conf options { // Especifica a pasta base dos arquivos directory "C:\bind\"; // Especifica o arquivo de processo pid-file "C:\bind\var\named.pid"; // Não escutar em nenhuma interface ipv6 listen-on-v6 { none; }; // Escutar no seguinte endereço listen-on { any; }; // Clientes autorizados a consultar este servidor allow-query { 127.0.0.1; 192.168.200.0/24; 10.0.0.0/8 }; // Realiza pesquisas recursivas recursion yes; // Indica quais hosts podes realizar recursividade //allow-recursion { localhost; localnets; }; // Servidores de forward forwarders { 8.8.4.4; 8.8.8.8;}; key "rndc-key" { algorithm hmac-md5; secret "LZ9UGB/j0xTDnjkiNKXo3Q=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; // Zona raíz zone "." IN { type hint; file "named.root"; };
Feito isso, salve e feche o arquivo, para terminar a configuração do bind como um servidor DNS cache ou recursivo, acesse o link http://www.internic.net/zones/root.zone e baixe o arquivo que contém as zonas raízes. O arquivo deve ser salvo dentro do diretório c:\bind\etc com o nome named.root.
Pronto com esta configurações temos um servidor de DNS cache instalado e configurado em nossa máquina. Vamos configurar a máquina local para utilizar o servidor, para isso edite as configurações da rede local para acessar o IP 127.0.0.1, ou seja, a propria máquina, como mostra a figura abaixo.
Agora temos que iniciar o bind, acesse o painel de contro / ferramentas administrativas / Serviços, na lista procure ISC BIND e logo após em iniciar serviço, se tudo foi configurado corretamente o bind esta pronto para responde as solititações de DNS.
Para testar o bind podemos utilizar a ferramenta nslookup disponivel no windows, abra um terminal de digite os comando como mostrado na figura abaixo:
Observer o retângulo em vermelho que o servidor esta definido para sua prórpia máquina pelo IP de localhost, abaixo temos consultas de dns para os endereços do cade.com.br e google.com.br com as devidas respostas de endereços IP.
Seguindo as orientações do site Registro.br (http://registro.br/suporte/faq/index.html#3) para registrar um dominio no Brasil o primeiro passo é configurar os servidores DNS autoritativos master e slave, servidores que responde quando um consulta DNS é solicitade por um cliente(Geralmente um Browser), para exemplificar vamos configurar o dominio pinguin.com, utilizando a máquina windows como master do dominio e o Linux como slave.
Edite o arquivo named.conf e deixe como o exemplo abaixo:
// Opções globais do servidor options { // Especifica a pasta base dos arquivos directory "C:\bind\etc"; // Especifica o arquivo de processo pid-file "C:\bind\var\named.pid"; // Não escutar em nenhuma interface ipv6 //listen-on-v6 { none; }; // Escutar no seguinte endereço listen-on { any; }; // Clientes autorizados a consultar este servidor allow-query { any; }; // Realiza pesquisas recursivas recursion no; // Indica quais hosts podes realizar recursividade //allow-recursion { localhost; localnets; }; // Servidores de forward // forwarders { 8.8.4.4; 8.8.8.8;}; }; key "rndc-key" { algorithm hmac-md5; secret "Hve9TJIiPW2m/keWbmJcng=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; // Zona raíz zone "." IN { type hint; file "named.root"; }; // Zona Pinguim.com zone "pinguim.com" IN { type master; file "db.pinguim.zone"; allow-transfer { 10.1.1.7; }; // IP do servidor DNS autoritativo Slave };
Note que foi adicionado a zona pinguim.com e o arquivo que conterá as informações sobre esta zona é o arquivo db.pinguin.zone.
Vamos criar o arquivo que contém as informações do nosso dominio, veja o exemplo comentado abaixo:
$TTL 6h @ IN SOA ns1.pinguim.com. hostmaster.pinguim.com. ( 2 ; Serial 10800 ; Refresh (3 horas) 3600 ; retry (1 hora) 604800 ; expire (1 semana) 86400 ) ; minimun (1 dia) @ NS ns1.pinguim.com. NS ns2.pinguim.com. IN MX 10 mail.meuemail.com.br. ; pinguim.com IN A 10.0.0.6 ns2 IN A 10.0.0.7 ;
Comentado:
@ IN SOA ns1.pinguim.com. hostmaster.pinguim.com. (
@ Indica a origem do domínio, e ao mesmo tempo, o ínicio da configuração.
IN é a abreviação de “Internet”
SOA 'Start of autority'
Em sistemas linux exites diverças formas de instalar um pacote, para fins deste tutorial utilizaremos os repositorios da disbrituição.
Em um terminal digite como root:
# apt-get install bind9
Após a instalação, o bind já está em execução em sua máquina e configurado para responder como servidor DNS recursivo para rede local.
Para vefificar se o bind esta em execução digite o seguinte comando como root:
# ps auxwww | grep bind
bind 2918 0.0 3.4 42156 8780 ? Ssl May28 0:00 /usr/sbin/named -u bind
Para testar, edite o arquivo /etc/resolv.conf e altera a linha nameserver para nameserver 127.0.0.1
Voce pode utkilizar ferramentas como dig ou nslookup para realizar consultas DNS. A figura abaixo mosta a utilização do dig para realizar consultas recursivas.
Exemplo de consulta DNS ao site cade.com.br utilizando a ferramenta dig do linux.
Teste realizado na rede local da empresa com aproximadamente 20 máquinas com acesso a internet.
Configurações de Hardware:
Pentium Dual Core 2.4 GHz
RAM 2 GB / HD 80 GB
Sistema Operacional: Windows 2008
Tempo em produção: 15 Dias (2 Semanas)
Conclusões: Ao final do teste foi constatado que o Bind rodando sobre a plataforma windows mostrou-se estavel e foi imperceptivel para o usuário final.
Teste realizado em rede com 4000 usuários com acesso a internet executando os mais variados serviços de rede.
Configurações de Hardware:
HP Server TC 2120
Pentium III Xeon
RAM 512 MB/40GB-SCSI
Sistema Operacional: Windows 2003
Tempo em produção: 7 Dias (1 Semana)
Conclusões: O teste decorreu sem problemas, o uso do servidor foi transparente para os usuários, não houve problemas ou travamentos no servidor. Foi notado um uso eledado da CPU/Memória nos horários de maior utilização da internet, o que não ocorre em servidores executando Linux.