anúncios

sábado, 10 de março de 2018

Configurando um servidor DNS no Debian

O que é DNS e pra que serve?

O Domain Name System (DNS) é um sistema de gerenciamento de nomes hierárquico e distribuído para computadores, serviços ou qualquer recurso conectado à Internet ou numa rede privada.

O DNS apresenta uma arquitetura cliente/servidor, podendo envolver vários servidores DNS na resposta a uma consulta. A função do servidor DNS é resolver nomes para os endereços IP e de endereços IP para nomes respectivos, e permitindo a localização de hosts no determinado domínio.

O software mais utilizado para configurar servidor DNS no GNU/Linux e FreeBSD é o BIND. Este software geralmente se encontra localizado no servidor DNS primário. O servidor DNS secundário é uma espécie de cópia de segurança do servidor DNS primário.

Depois de conhecer o DNS e para que serve, pode-se seguir o howto seguinte para configurar o servidor DNS na sua rede, apenas adapte o endereço IP e o nome de domínio.

Observação 1: Para uso de servidor DNS na rede interna é comum usar o sufixo .int para representar interno e não confundir com um domínio externo. Já se for configurar o servidor DNS na rede externa disponível na Internet, usa normal, só antes deve registrar o domínio no https://registro.br

Observação 2: O presente howto foi configurado e testado na distribuição Linux Debian 9, mas pode ser configurado na distro Ubuntu também.

Ok. Vamos nessa então? Abre o terminal, logue como root e segue os procedimentos seguintes.

# apt-get update
# apt-get install bind9 dnsutils whois
Observação: Este howto será utilizado o editor de texto Vim, mas o leitor pode usar outro editor que achar melhor.
Para novatos no editor Vim, para salvar e sair é ESC + :x

Configurando endereço IP fixo
# vim /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet static
address 192.168.1.6
netmask 255.255.255.0
gateway 192.168.1.1
# This is an autoconfigured IPv6 interface
iface enp0s3 inet6 auto
Alterar os arquivos hosts e hostname respectivamente
# vim /etc/hosts
Adicione a linha
127.0.0.1       localhost
127.0.1.1       perolanegra
192.168.1.6     perolanegra.saitam.int perolanegra
192.168.1.6     saitam.int
192.168.1.6     app.saitam.int
192.168.1.6     adm.saitam.int
192.168.1.6     carreiras.saitam.int

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

# vim /etc/hostname
perolanegra.saitam.int
Acessar até o diretório onde estão os arquivos do Bind
# cd /etc/bind
Criar as zona direta e reversa no arquivo named.conf.local
# vim named.conf.local
//Zona direta
zone "saitam.int" { //nome de domínio
  type master;
  file "/etc/bind/db.saitam"; //nome do arquivo que contém os endereços DNS
};

//Zona reversa
zone "1.168.192.in-addr.arpa" { //último quarteto do IP
  type master;
  file "/etc/bind/db.192";
};
Verificar se o arquivo de configuração contém erros
# named-checkconf
Criar os arquivos da zona direta e reversa
Zona direta
# vim db.saitam
;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     perolanegra.saitam.int root.saitam.int (
                         2018031000     ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@               IN      NS      perolanegra.
@               IN      A       192.168.1.6
@               IN      AAAA    ::1
router          IN      A       192.168.1.1
gateway         CNAME   router
app             IN      A       192.168.1.6
adm             IN      A       192.168.1.6
carreiras       IN      A       192.168.1.6
www             CNAME   saitam.int

Zona reversa
# vim db.192
;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     perolanegra.saitam.int root.saitam.int. (
                         2018031000     ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      perolanegra.saitam.int.
6       IN      PTR     perolanegra.saitam.int.
6       IN      PTR     saitam.int.
1       IN      PTR     router.saitam.int.
6       IN      PTR     app.saitam.int.
6       IN      PTR     adm.saitam.int.
6       IN      PTR     carreiras.saitam.int.

Verificar se o arquivo de zona direta e reversa contém erros
# named-checkzone saitam.int /etc/bind/db.saitam.int
zone saitam.int/IN: loaded serial 2018031000
OK
# named-checkzone 1.168.192.in-addr /etc/bind/db.192
zone 1.168.192.in-addr/IN: loaded serial 2018031000
OK

Caso tenha ocorrido algum erro nos testes acima no seu servidor DNS, revise os arquivos de configuração com atenção, pois um ";" pode fazer a diferença na configuração do Bind.

Reiniciar o serviço Bind9
# /etc/init.d/bind9 restart
[ ok ] Restarting bind9 (via systemctl): bind9.service.

Para podermos usar o domínio configurado deve adicionar no arquivo /etc/resolv.conf Nas máquinas clientes deve trocar o IP do servidor DNS que utiliza pelo o IP da máquina que configurou o servidor DNS para poder resolver nomes usando o servidor DNS configurado.

# vim /etc/resolv.conf
domain saitam.int
search saitam.int
nameserver 192.168.1.6
Agora vamos verificar a resolução de nomes
# nslookup saitam.int
Server: 192.168.1.6
Address: 192.168.1.6#53

Name: saitam.int
Address: 192.168.1.6
# nslookup router
Server:         192.168.1.6
Address:        192.168.1.6#53

Name:   router.saitam.int
Address: 192.168.1.1
# nslookup 192.168.1.6
Server:         192.168.1.6
Address:        192.168.1.6#53

6.1.168.192.in-addr.arpa        name = carreiras.saitam.int.
6.1.168.192.in-addr.arpa        name = saitam.int.
6.1.168.192.in-addr.arpa        name = app.saitam.int.
6.1.168.192.in-addr.arpa        name = adm.saitam.int.
6.1.168.192.in-addr.arpa        name = perolanegra.saitam.int.
Referências
[1] https://pt.wikipedia.org/wiki/Domain_Name_System
[2] http://tldp.org/HOWTO/DNS-HOWTO-5.html
[3] https://www.isc.org/downloads/bind/

Feito!