Skip to content

📁 DNS Server

Criando um Servidor de DNS

A INSTALAÇÃO A SEGUIR SE DARÁ NA MÁQUINA DO PRÓPRIO FIREWALL!

Instalar os pacotes necessários:

apt-get install bind9 openssh-server dnsutils

Editar o arquivo /etc/default/named e deixa-lo como no exemplo:

# run resolvconf?
RESOLVCONF=no

# startup options for the server
OPTIONS="-u bind -4"

O arquivo /etc/bind/named.conf fica sem alteração:

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

O arquivo /etc/bind/named.conf.local tbém fica sem alteração:

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

Entrar em /etc/bind:

cd /etc/bind

Fazer um backup do arquivo original:

cp named.conf.default-zones{,.orig}

Editar named.conf.default-zones e deixa-lo como no exemplo:

vim named.conf.default-zones
// prime the server with knowledge of the root servers
zone "." {
    type hint;
    file "/usr/share/dns/root.hints";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
    type master;
    file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
    type master;
    file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
    type master;
    file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
    type master;
    file "/etc/bind/db.255";
};

zone "officinas.edu" {
      type master;
      file "/etc/bind/zones/db.officinas.edu";
};

zone "70.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.70.168.192";
};

Criar/ editar o Arquivo named.conf.options:

vim named.conf.options
// CRIANDO REGRAS DE LIBERAÇÃO:
acl interna {
127.0.0.0/8;
192.168.70.0/24;
};

options {
    directory "/var/cache/bind";

    // CRIANDO RECURSIVIDADE DA MINHA ACL NA ÁRVORE HIERÁRQUICA:
    recursion yes;
    allow-query { interna; };
    allow-recursion { interna; };
    listen-on port 53 { interna; };
    allow-transfer { none; };
    listen-on-v6 { none; };
    version none;

    // CRIANDO OS FORWARDERS:
    forwarders {
    // Cloudflare Public DNS IPV4
    1.1.1.1;
    1.0.0.1;
    // Google Public DNS IPV4
    8.8.8.8;
    8.8.4.4;
    };  

    dnssec-validation auto;

};

Criar a pasta zones em /etc/bind:

mkdir -p /etc/bind/zones

Entrar na pasta zones:

cd /etc/bind/zones

Criar/ editar o Arquivo de zona "db.officinas.edu":

vim db.officinas.edu
;
; BIND zone file for officinas.edu
;
$TTL 86400
@ IN SOA                          firewall.officinas.edu.  root.officinas.edu. (
29032023                                                 ; Serial
10800                                                    ; Refresh ( 3 hr )
1800                                                     ; Retry ( 30 min )
3600000                                                  ; Expire ( 41 dias )
86400 )                                                  ; Negative Cache TTL (1 dia)
;
@                                 IN              NS      firewall.officinas.edu.
firewall.officinas.edu.           IN              A       192.168.70.254
dcmaster.officinas.edu.           IN              A       192.168.70.200
webserver.officinas.edu.          IN              A       192.168.70.100
arquivos                          IN              CNAME   dcmaster.officinas.edu.
www                               IN              CNAME   webserver.officinas.edu.

ATENÇÃO - Explicação dos Campos zona e zona reversa:

  • IN = Internet
  • SOA = Start of Autority
  • @ = Origem do Dominio e/ou Inicio da Configuracao
  • TTL = Tempo de vida
  • NS = Name Server
  • MX = Mail Exchanger (10/20 numero de prioridade quanto maior o numero menor e a prioridade)
  • hostmaster = email do administrador note que e separado por "." e NAO "@"
  • A = Apontamento para IPv4 (Address Mapping)
  • AAAA = Apontamento para IPv6 (Address Mapping)
  • CNAME = Apontamento para Nome Canonico/alias
  • PTR = PoinTeR (aponta dominio reverso a partir de um endereço IP)
  • TXT = TeXT, permite incluir um texto curto em um hostname. Tecnica usada para implementar o SPF.
  • SPF = SenderPolicyFramework.Permite ao administrador de um dominio definir os enderecos das maquinas autorizadas a enviar mensagens neste dominio.
  • SRV = SeRVice, permite definir localizacao de servicos disponiveis em um dominio, inclusive seus protocolos e portas.

Fazer uma copia do arquivo db.127 em /etc/bind para /etc/bind/zones/db.70.168.192:

cp /etc/bind/db.127 /etc/bind/zones/db.70.168.192

Criar/ editar o Arquivo de zona reversa:

vim /etc/bind/zones/db.200.168.192
;
; BIND reverse data file for 70.168.192
;
$TTL    86400
@       IN      SOA     firewall.officinas.edu. root.officinas.edu. (
29032023                ; Serial
10800                   ; Refresh ( 3 hr )
1800                    ; Retry ( 30 min )
3600000                 ; Expire ( 41 dias )
86400 )                 ; Negative Cache TTL (1 dia)
;
@            IN      NS      firewall.officinas.edu.
firewall     IN      A       192.168.70.254
254          IN      PTR     firewall.officinas.edu.
200          IN      PTR     dcmaster.officinas.edu.
100          IN      PTR     webserver.officinas.edu.

Restart/ reload no bind9 analisando os logs:

/etc/init.d/bind9 restart ; tail -f /var/log/syslog

Agora, vamos entregar a resolução ao DNS Server local editando o /etc/resolv.conf:

vim /etc/resolv.conf
127.0.0.1

Checar se as confs foram aplicadas:

named-checkzone  officinas.edu /etc/bind/zones/db.officinas.edu
named-checkzone  70.168.192 /etc/bind/zones/db.70.168.192

Testar o DNS utilizando o comando nslookup:

nslookup www.terra.com.br
nslookup www.proot.com.br

Testar o DNS utilizando o dig:

dig -t any www.terra.com.br
dig -t any www.proot.com.br

Bloqueia a edição do arquivo /etc/resolv.conf:

chattr +i /etc/resolv.conf

that's all folks!