Esta demonstração destina-se a fornecer os conhecimentos básicos para instalar e configurar um servidor DNS num sistema Linux Fedora. Para além de algum conteúdo teórico, inclui alguns exercícios práticos onde se podem exercitar os conhecimentos.
Esta demonstração usa o conteúdo da página http://www.linuxhomenetworking.com/ e do Configuração de servidor DNS BIND como páginas de referência para o conteúdo teórico. No entanto, acrescenta mais alguma informação retirada do livro "DNS and Bind 5th Edition", de Paul Albitz e Cricket Liu, publicado pela O'Reilly.
O comando host aceita como argumentos o nome do domínio ou o endereço IP e retorna os resultados mostrados abaixo Exemplo de pesquisa directa
|
O comando dig permite fazer resoluções directas de nomes ou indirectas de endereços. No entanto, por omissão retorna muito mais informação do que o comando host. Exemplo de pesquisa directa
|
O comando nslookup pode ser usado em Windows (ou em Linux) para realizar traduções directas ou inversas. Exemplo de tradução directa Exemplo tradução inversa O nslookup também pode ser usado no modo de consola, introduzindo
simplesmente "nslookup". NAME - imprimir informações sobre o NAME do anfitrião/domínio
utilizando o servidor predefinido |
Use um dos comandos apresentados acima para descobrir o conteúdo dos registos de recursos (RR) dos seguintes nomes:
tele1.dee.fct.unl.pt
fct.unl.pt
Relembra-se alguns dos tipos disponíveis no DNS:
Tipo |
Significado |
Conteúdo |
A |
IPv4 Host Address |
32-bit IP address |
AAAA |
IPv6 Host Address |
128-bit IP address |
CNAME |
Canonical Name |
Canonical Domain Name for an alias |
MX |
Mail Exchanger |
16-bit preference and name of host that acts as mail exchanger for the domain |
NS |
Name Server |
Name of authoritative server for domain |
HINFO |
CPU & OS |
Name of CPU and Operating System |
MINFO |
Mailbox info |
Information about a mailbox or mail list |
PTR |
Pointer |
Domain name (like a symbolic link) |
SOA |
Start of Authority |
Multiple fields that specify which parts of the naming hierarchy a server implements |
TXT |
Arbitrary text |
Uninterpreted string of ASCII text |
Os nomes de domínios podem ser resolvidos utilizando o ficheiro /etc/hosts ou o serviço DNS. A ordem porque os serviços são consultados é definida no ficheiro /etc/host.conf:
order hosts,bind |
A configuração do cliente DNS é feita no ficheiro /etc/resolv.conf:
search alunos.dee.fct.unl.pt fct.unl.pt |
A configuração inclui a lista de servidores DNS que devem ser usados, e a lista de domínios que devem ser testados quando se resolve um nome (ou localdomain quando não existe um domínio definido na zona).
Campos:
Keyword |
Value |
Nameserver |
IP address of your DNS nameserver. There should be only one entry per "nameserver" keyword. If there is more than one nameserver, you'll need to have multiple "nameserver" lines. |
Domain |
The local domain name to be used by default. If the server is bigboy.my-site.com, then the entry would just be my-site.com |
Search |
If you refer to another server just by its name without the domain added on, DNS on your client will append the server name to each domain in this list and do an DNS lookup on each to get the remote servers' IP address. This is a handy time saving feature to have so that you can refer to servers in the same domain by only their servername without having to specify the domain. The domains in this list must separated by spaces. |
O servidor DNS mais usado designa-se de BIND e foi desenvolvido pela ISC.
A distribuição Fedora Core inclui uma versão modificada do BIND, que corre como um utilizador diferente de "root" (administrador de sistema), designado de BIND chroot. Esta distribuição tem os ficheiros de configuração num local diferente o BIND regular.
File |
Purpose |
BIND chroot Location |
Regular BIND Location |
named.conf |
Tells the names of the zone files to be used for each of your website domains. |
/var/named/chroot/etc |
/etc |
rndc.key rndc.conf |
Files used in named authentication |
/var/named/chroot/etc |
/etc |
zone files |
Links all the IP addresses in your domain to their corresponding server |
/var/named/chroot/var/named |
/var/named |
A configuração principal de um servidor DNS é realizada no ficheiro named.conf.
A parte inicial deste ficheiro tem a definição de opções genéricas do servidor:
options { |
Para controlar os pedidos que são realmente efectuados ao servidor DNS local,
pode-se acrescentar uma secção opcional de logging a ligar o log de
pedidos. Os pedidos são acescentados ao ficheiro geral /etc/log/messages, juntamente
com todos os outros logs do sistema operativo.
logging { category queries { default_syslog; }; }; |
A parte seguinte tem um registo para cada zona (domínio) guardada no servidor
DNS local. O suporte da resolução directa é feito através de um ficheiro do
tipo:
zone "rit2.pt" { |
Um exemplo de um conteúdo possível para a zona "rit2.zone" poderia ser:
; |
Na parte final é comum aparecer um registo para domínio local, para suportar resoluções inversas. Em IPv4, para a rede 172.16.33.0/24, tem o seguinte formato (note que o endereço aparece invertido no nome da zona):
zone "33.16.172.in-addr.arpa" { |
A ordem inversa do endereço IP numa secção de zona é importante pois é por esse motivo que apenas os três primeiros octetos são representados. O último é definido no ficheiro de definição de zona. Um exemplo de conteúdo possível para o ficheiro "172-16-33.zone" seria:
; |
Para IPv6, o procedimento é semelhante excepto que o endereço de rede é escrito numa cadeia de digitos hexadecimais, do menos significativo para o mais significativo, com o sufixo .ipv6.arpa.. seguido do sufixo. Por exemplo, o endereço IPv6 4321:0:1:2:3:4:567:89ab é escrito na forma: b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.ipv6.arpa. Um exemplo de campo de resolução inversa para IPv6 seria:
zone "3.3.0.0.0.1.0.0.5.0.0.2.0.9.6.0.1.0.0.2.ipv6.arpa" IN { |
Um exemplo de conteúdo possível para o ficheiro "2001-690-2005-10-33.zone" seria:
; |
Para obter mais informações sobre a configuração das zonas em Linux recomenda-se a consulta da página http://www.linuxhomenetworking.com/.
Podem-se arrancar mais do que um servidor DNS (/usr/sbin/named) no mesmo computador, desde que cada servidor use um número de porto diferente.
Podem-se obter os parâmetros do comando named invocando o comando “man named”
O serviço DNS Fedora Core já vem origem configurado para funcionar no modo caching:
// // // controls { zone "." IN { zone "localdomain" IN { zone "localhost" IN { zone "0.0.127.in-addr.arpa" IN { zone
"0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"
IN { zone "255.in-addr.arpa" IN { zone "0.in-addr.arpa" IN { include "/etc/rndc.key"; |
Para funcionar correctamente basta arrancar o servidor DNS e modificar a configuração do cliente DNS.
Configure o seu computador para usar o servidor DNS local no modo caching. Teste a resolução de nomes no sistema.
NOTA: foi colocado na área rit2 o ficheiro "init_named" que corre o comando "/etc/init.d/named" seguido dos parâmetros que a invocação tiver, ou com o parâmetro “restart” se forem omitidos os parâmetros, permitindo arrancar com o servidor DNS.
NOTA2: Para conseguir aceder ao ficheiro protegido /etc/var/messages foi colocado na área rit2 o ficheiro “get_log” que obtém todas as linhas relacionadas com o serviço de nomes.
Para optimizar a utilização de caching no serviço DNS, pode-se configurar um servidor DNS para reenviar um pedido para outro servidor sempre que a resposta não exista em cache, ou pertença a um domínio local. Isso é feito com a opção forwarders:
options { |
Configure o servidor DNS do seu computador para usar com DNS de nível superior os três servidores DNS do domínio fct.unl.pt. Teste a resolução de nomes no sistema.
Configure o domínio gn.rit2.pt no servidor DNS local, de maneira a conter entradas do tipo A e AAAA para todas as máquinas do laboratório, PTR para a resolução inversa, e CNAME com o nome router para a máquina 172.16.33.3. Configure o servidor para suportar a resolução directa e inversa tanto em IPv4 como em IPv6. Acrescente registos do tipo TXT com a identificação do número de grupo e dos membros do grupo, e do tipo HINFO com os dados da máquina local. Teste o seu servidor local.
A definição de subdomínios é realizada através de mais um registo de zona e de um recurso do tipo NS dentro do domínio raiz do novo subdomínio.
Crie um subdomínio (sgn.gm.rit2.pt) na sua máquina local (n), de um domínio de um outro grupo num computador ao seu lado (m). Configure o subdomínio com as mesmas entradas do tipo A e AAAA do domínio principal. Peça aos seus colegas para configurarem o RR NS que torna o seu subdomínio válido. Configure na sua máquina o domínio dual (sgm.gn.rit2.pt), de maneira a que os seus colegas possam aceder ao subdomínio local deles.
Para além do tipo master é possível configurar uma zona
com o tipo slave, de maneira a configurar servidores DNS secundários.
Para
criar um servidor secundário, com uma cópia de um servidor primário, é
necessário começar por copiar o ficheiro de configuração named.conf e o conteúdo
dos ficheiros da directoria
/var/named/chroot/var/named para a
directoria correspondentes na máquina remota. Pode usar o comando scp:
scp /var/named/chroot/etc/named.conf
guest@pc-0:/var/named/chroot/etc/named.conf |
No servidor secundário deve-se modificar a configuração da zona:
zone "rit2.pt" { |
Deve-se ainda ligar a notificação de modificações, de maneira a que o servidor secundário seja actualizado automaticamente.
Juntamente com os mesmos colegas com que realizou o ponto
anterior, desligue o subdomínio, e sorteie quem vai correr o servidor
secundário.
Não se esqueçam de modificar a configuração da zona, de maneira a incluir dois
servidores responsáveis pelo domínio. Teste a resolução de nomes no sistema,
incluindo o teste do desligar do servidor primário.
Há muito mais a dizer sobre o serviço DNS do que o que aparece
neste documento: DNS seguro; DNS dinâmico; zonas específicas para redes
internas, estatísticas, etc.
Convida-se os alunos a lerem mais sobre o assunto...