Sistemas Operacionais Livres DNS - Domain Name System
Agenda Visão Geral Implementação Em Linux Tipos de Servidores Arquivos de Config Arquivos de Zona Mensagens de Log Atividades
Visão Geral
DNS - É um banco de dados hierárquico e distribuído, com milhares de servidores através da internet, controlando as consultas de nomes e endereços - Servidor responsável por traduzir nomes em endereços IP (e vice versa) de um determinado domínio. - Evolução da tabela de hosts (/etc/hosts), resolve suas limitações - Arquitetura cliente-servidor, onde o cliente solicita a informação ao servidor - Robustez e performance são obtidas através de replicação e caching - Servidores são chamados de Name-Servers (Servidores de Nome)
DNS - Sua organização é semelhante a do sistema de arquivos do unix (árvore invertida). No caso do unix inicia-se com / e no DNS inicia-se com. - Cada nó, passa a ser a raiz da nova sub-árvore. Através de consultas, acha-se qualquer host no sistema de domínios, começando pela raiz, seguindo os ponteiros até o domínio de destino. - Domínios podem ser divididos em sub-domínios - Cada domínio possuí um nome único (da mesma forma que os diretórios) - FQDN Full Qualify Domain Name = Nome que começa com um host e vai até a raiz Ex: winnie.corp.hp.com - Domínios TLDs (Top Levels Domains): org, edu, jp, com são servidos pelos servidores raiz. Coutry Code Top Levels Domains:.br,.us,.ca Organizados pela IANA Internet Assigned Numbers Authority Lista dos TDLs: http://www.iana.org/domains/root/db/
DNS Organização semelhante ao filesystem unix
DNS Resolução de nomes de domínios
DNS Consulta a base de dados da IANA TLD.BR
DNS Root Servers (Servidores raiz) - No núcleo da arquitetura do DNS, existem 13 computadores especiais, chamados de root servers - Coordenados pela ICANN (Internet Corporation for Assigned Names and Numbers) e são distribuídos pelo mundo. - Todos possuem as mesmas informações vitais garantindo balanceamaneto de carga e backup deles mesmos - Possuem os registros de todos os TLD gerais e dos países - Cada root server é replicado várias vezes - Não possuem informações de hosts
DNS Root Servers (Servidores raiz) Lista dos Servidores Raiz A.ROOT-SERVERS.NET. A 198.41.0.4 B.ROOT-SERVERS.NET. A 192.228.79.201 C.ROOT-SERVERS.NET. A 192.33.4.12 D.ROOT-SERVERS.NET. A 128.8.10.90 E.ROOT-SERVERS.NET. A 192.203.230.10 F.ROOT-SERVERS.NET. A 192.5.5.241 G.ROOT-SERVERS.NET. A 192.112.36.4 H.ROOT-SERVERS.NET. A 128.63.2.53 I.ROOT-SERVERS.NET. A 192.36.148.17 J.ROOT-SERVERS.NET. A 192.58.128.30 K.ROOT-SERVERS.NET. A 193.0.14.129 L.ROOT-SERVERS.NET. A 198.32.64.12 M.ROOT-SERVERS.NET. A 202.12.27.33
DNS Root Servers (Servidores raiz)
Visão Geral Implementação Em Linux
DNS Bind - Implementado em linux pelo software Bind (bind-9.5.1-1.p1.fc10 /bind-chroot- 9.5.1-1.P1.fc10) o nome do daemon é named. No CentOS instalar os arquivos de config: caching-nameserver-9.3.6-4.p1.el5_4.2 - BIND (Berkeley Internet Name Domain) - Iniciando o serviço: service named start /etc/init.d/named start - Logs do servidor de nomes podem ser vistos em /var/log/messages - Roda em ambiente chrooted em /var/named/chroot - Realiza balanceamento de carga via round robin
Visão Geral Implementação Em Linux Tipos de Servidores
DNS Tipos de Servidor Existem três configurações básicas: Somente Cache (Não autorizado) - Não são fontes oficiais de informações a respeito de domínios. - Obtêm a resposta a partir de servidores remotos. - Iniciam apenas com os endereços dos Root-Servers - Armazenam as consultas feitas pelos usuários Servidor Mestre (Autorizado para o domínio) - Fonte oficial de todas as informações a respeito de um domínio específico - Carrega informações dos domínios a partir de arquivos locais - Mantido pelo administrador do domínio - Também chamado de servidor primário - Armazenam as consultas feitas pelos usuários
DNS Tipos de Servidor Servidor Escravo (Autorizado para o domínio) - É considerado um servidor autorizado, pois possui os dados completos do domínio. - Informações transferidas do servidor master (transferência de zona) - Também chamado de servidor secundário - Armazenam as consultas feitas pelos usuários
Visão Geral Implementação Em Linux Tipos de Servidores Arquivos de Config
DNS Arquivos de Zona / Hosts Arquivos de Configuração /etc/named.conf (Fedora) /etc/named.rfc1912.zones (dominios) (centos) /etc/named.caching-nameserver.conf (Serviço)(centos) - Parâmetros básicos e aponta para as fontes de informação do banco de dados do domínio /var/named/named.ca - Fornece os nomes e endereços dos servidores-raiz Arquivos de Banco de Dados (hosts locais) - Arquivos de zona, mapeia nomes de computador para ip - Arquivos de zona reversa, mapeia os endereços IP em nomes - localizados em: /var/named/chroot/var/named (servidor master) /var/named/chroot/var/named/slave (servidor slaves) Configurados em : /etc/sysconfig/named * Zona é um pedaço do espaço do nome de domínio sobre o qual um servidor mestre tem autoridade.
DNS /etc/named.conf Declaração Options - Apenas uma pode ser usada - Localizada no inicio do arquivo - Define parâmetros globais que definem como o Bind opera options { listen-on port 53 { any; }; directory "/var/named"; allow-query { any; }; allow-transfer { 192.168.15.10; 200.100.122.12; }; version "Nao lhe interessa!"; };
DNS /etc/named.conf Declaração Options listen-on port 53 { any; } - O daemon esperará solicitações em todas as interfaces directory "/var/named" - Diretório de trabalho, onde o servidor armazena os arquivos de configuração - Serve de PATH para o arquivos definidos nesse arquivo de configuração allow-query { any; }; - Permite consultas de qualquer host allow-transfer { 192.168.15.1; }; - Permite a transferência de zona para o servidor especificado version "Nao lhe interessa!"; - Não informa a versão do servidor de nomes - Previne contra ataques do topo banner grabbing
DNS /etc/named.conf Declaração Zone - Mais importantes no arquivo de configuração - Define uma zona que é servida por esse servidor - Define o tipo de servidor que está sendo executado (master/slave) - Define a fonte do arquivo de dados (local ou transferido do servidor mestre) - Define opções de processo especiais // Master zone "turmalinux.com.br" { type master; file "turmalinux.com.br"; allow-transfer { ip_slave; }; }; //Slave zone "turmalinux.com.br" { type slave; file "slaves/turmalinux.com.br"; masters { 172.16.10.1; }; };
DNS /etc/named.conf Declaração Zone zone "turmalinux.com.br": Determina o domínio que está sendo configurado type master/slave: Determina o tipo do servidor que está sendo configurado para esse domínio. file "turmalinux.com.br": Determina o arquivo onde estarão o mapeamento dos hosts desse domínio. Fonte de informações sobre a zone (master), depósito das informaçoes sobre a zona (slave) allow-update { localhost; }: Especifica quais clientes estão autorizados a atualizar o arquivo de zona dinamicamente. Normalmente, apenas o servidor DHCP possui essa permissão, e a forma segura de se fazer isso é rodando ambos na mesma máquina.
DNS /etc/named.conf Declaração Zone Masters { 172.16.10.1; }: Indica o servidor mestre, pode haver mais de um IP do servidor mestre (multi-homed). O servidor slave faz a transferência de zona (baixa das informações de domínio do master para o slave) notify yes: Normalmente os servidores escravos verificam atualização nos arquivos de zona dos servidores mestres. Com essa opção, o servidor master irá notificar o slave que houve uma atualização em um arquivo de zona através de uma mensagem DNS NOTIFY. Also-notify { 172.16.19.20;}: Também notifica os servidores listados
Visão Geral Implementação Em Linux Tipos de Servidores Arquivos de Config Arquivos de Zona
DNS Registro de banco de dados de hosts - Chamados de Registro de Recursos Padrão ou apenas RRs. - Todos os RRs possuem o mesmo formato básico: [name] [ttl] IN type data onde: Name Identifica o objeto de domínio afetado pelo registro - Se tiver em branco, refere-se ao último objeto nomeado - Se @, refere-se a origem atual ($ORIGIN ou nome do domínio na declaração da zone ttl Tempo de vida, define o tempo em que esse recurso deve ser deixado em cache, define quanto tempo os servidores remotos devem deixar em cache as informações do seu domínio, se não especificado, será usado o valor da diretiva $TTL. IN Campo class. Sempre possui esse valor type Tipo do registro do recurso (vide tabela) data Dados específicos do tipo do recurso. Diferente de acordo com cada tipo de registro.
DNS Registro de banco de dados de hosts Tipos de RR Nome do Registro Start of Authority Name Server Address Pointer Mail Exchanger Canonical Nam e Tipo do Registro SOA NS A PTR MX CNAME Função Marca o começo dos dados de uma zona e define parâmetros que afetam a zona inteira Identifica o servidor de nomes de um domínio Mapeia um hostname para um endereço Mapeia um endereço para um hostnam e Identifica um servidor de correio para um domínio Define um alias para um hostnam e
DNS Diretivas de arquivo de zona - Arquivos de zona oferecem 4 diretivas - Facilitam a construção do arquivo de zona - Define valores padrão usados pelos registros Rrs. Diretiva $TTL - Define o tempo em que os servidores armazenarão em cache as informação sobre o domínio. - Seta esse valor globalmente. - Sobrescrita se declarada direto do RR. - Definido em segundos ou com um valor e uma letra 1w Uma semana 2d Dois Dias 3h Três horas 4m Quatro minutos 50s Cinco segundos
DNS Diretivas de arquivo de zona Diretiva $ORGIN - Ajusta a origem atual - Usado para completar quaisquer nome de domínio (definido na zona) - Valor padrão é o definido na declaração da zona no named.conf
DNS Arquivo de banco de dados de domínio (Zona) $TTL 43200 @ IN SOA ns1.turmalinux.com.br. hostmaster.ns1.turmalinux.com.br. ( 2008010802 ; serial 1H ; refresh 15M ; retry 14D ; expire 5m ; negative cache TTL ) ; Define os servidores de nome IN NS ns1.turmalinux.com.br. IN NS ns2.turmalinux.com.br. ; Define os servidores de mail IN MX 5 mx1.turmalinux.com.br. IN MX 10 mx2.turmalinux.com.br. ; Define os hosts desse domino ns1 IN A 172.192.10.1 ns2 IN A 172.192.10.2 mx1 IN A 172.192.10.3 mx2 IN A 172.192.10.4 www IN A 172.192.10.4
DNS Arquivo de banco de dados de domínio (Zona) Registro SOA -Todos os arquivos de zona começam com um registro SOA. - O @ recorre a origem atual, no caso a que está declara no arquivo de zona, que no nosso caso é turmalinux.com.br - O campo de dados desse registro contém: - ns1.turmalinux.com.br Nome do servidor mestre para essa zona - hostmaster.ns1.turmalinux.com.br Endereço de email da pessoa responsável por esse domínio (sem o sinal de @) - 2008010802 ; Número de série do arquivo, informa que o arquivo foi atualizado (o adm deve alterá-lo a cada mudança no arquivo de zona). Esse valor é consultado pelo slave, se for diferente, ele transfere a zona para ele. - 1H : Informa de quanto em quanto tempo o servidor slave deve checar o master por alterações na zona. (Valor mediano) - 15M : Caso o servidor slave não consiga verificar o master, esse registro informa de quanto em quanto tempo ele deve tentar novalmente. (valor baixo)
DNS Arquivo de banco de dados de domínio (Zona) - 14D: Caso o servidor slave não consiga verificar o master, depois de quanto tempo ele deve para de responder por aquele domínio (valor alto) - 5M : Quando o servidor armazena uma resposta negativa (domínio não existe), quanto tempo o servidor deve guardar em cache essa resposta negativa (Valor deve ser pequeno) Registro de Servidores de Nome - Definem os servidores de nomes oficiais desse domínio. Registro de Servidores de E-mail - Definem os servidores de email oficiais desse domínio. - O valor numérico após o tipo de registro, indica a prioridade Registro de Informação de hosts - Definem o mapeamento de host para ip Registro CNAME - Cria um apelido entre hosts. - O apelido definido, não deve ser utilizada em nenhum outro registro
Visão Geral Implementação Em Linux Tipos de Servidores Arquivos de Config Arquivos de Zona Mensagens de Log
DNS Mensagens do servidor de nomes Mensagens do arquivo de log /var/log/messages Indica que a zona madeira.com.br foi carregada com sucesso no servidor de nomes. [root@localhost named]# tail -f /var/log/messages Apr 3 15:11:01 localhost named[32637]: zone madeira.com.br/in: loaded serial 2008030301 Recarga do servidor, mas não houve alteração no serial da zona Apr 3 15:15:08 localhost named[32637]: zone madeira.com.br/in: zone serial unchanged. zone may fail to transfer to slaves. Apr 3 15:15:08 localhost named[32637]: zone madeira.com.br/in: loaded serial 2008030301 Recarga do servidor, houve alteração no serial da zona Apr 3 15:16:04 localhost named[32637]: zone madeira.com.br/in: loaded serial 2008030302
DNS Mensagens do servidor de nomes Mensagens do arquivo de log /var/log/messages Realiza a transferência de zona do master para o slave Apr 3 15:45:47 localhost named[9614]: zone madeira.com.br/in: Transfer started. Apr 3 15:45:47 localhost named[9614]: transfer of 'madeira.com.br/in' from 192.168.15.140#53: connected using 192.168.15.224#42614 Apr 3 15:45:47 localhost named[9614]: zone madeira.com.br/in: transferred serial 2008030302 Apr 3 15:45:47 localhost named[9614]: transfer of 'madeira.com.br/in' from 192.168.15.140#53: end of transfer
Visão Geral Implementação Em Linux Tipos de Servidores Arquivos de Config Arquivos de Zona Mensagens de Log Atividades
DNS Atividade 1 1. Configure sua máquina para usar o seu servidor DNS configurado apenas no modo de cache. 2. Tente navegar na internet
DNS Atividade 2 1. Configure em sua máquina o domínio: seusobrenome.com.br Aponte os registros NS, MX e A para o seu IP. 2. Crie um registro do tipo A com o nome WWW apontando para o IP da máquina de seu vizinho. 3. Acompanhe a carga do servidor no arquivo de log 4. Tente pingar os hosts
DNS Atividade 3 1. Configure sua máquina com servidor slave do domínio da pessoa ao seu lado. 2. Configure o seu linux para usar o servidor DNS do seu vizinho (ele configurou como slave o nosso sobrenome.com.br), veja se você consegue pingar no nosso domínio. 3. Acompanhe a transferência de zona