Bind trabalhando como servidor de Cache DNS + Debian Wheezy

E ai galera, aqui vou abordar a instalação de um servidor DNS somente para cache, em alguns casos precisamos de um servidor de dns somente para agilizar um serviço de proxy ou trabalhar como encaminhador de um servidor DNS Windows, com isso podemos configurar o Bind para trabalhar somente fazendo cache.

  • Rede que vou levar em consideração que vai poder consultar o servidor: 192.168.1.0/24

Prepare o seu sistema com o seguinte script Easy-Debian para que não falte nenhum pacote ou configuração.

Agora vamos instalar o DNS Bind

Vamos instalar os pacotes necessários

aptitude install bind9 dnsutils -y

Agora vamos para o bind para podemos efetuar as modificações necessárias.

/etc/init.d/bind9 stop

Agora vamos criar os diretórios necessários para a jaula

mkdir -p /var/lib/named/etc
mkdir -p /var/lib/named/dev
mkdir -p /var/lib/named/var/log
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/cache/bind/dynamic
mkdir -p /var/lib/named/var/run/bind/run
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
mknod /var/lib/named/dev/zero c 1 5

Agora vamos acertar as permissões da jaula

chmod 666 /var/lib/named/dev/{null,random,zero}
chown -R bind:bind /var/lib/named/var/*

Agora vamos ajudar a localização dos diretórios

mv /etc/bind /var/lib/named/etc
ln -sf /var/lib/named/etc/bind /etc/bind
cp /etc/localtime /var/lib/named/etc
chown -R bind:bind /var/lib/named/etc/bind
chown -R root:bind /var/lib/named/var/cache/bind/dynamic
chmod -R 775 /var/lib/named/var/cache/bind/dynamic

Agora vamos acertar o arquivo default do bind para que o bind reconheça a jaula

vim /etc/default/bind9
RESOLVCONF=yes
OPTIONS="-u bind -t /var/lib/named"

Vamos agora ajustar o /etc/resolv.conf

vim /etc/resolv.conf
nameserver 127.0.0.1

Agora vamos acertar o arquivo de controle da versão e acesso ao dns

vim /etc/bind/named.conf.options
#/etc/bind/named.conf.options
options {
 directory "/var/cache/bind";
 managed-keys-directory "/var/cache/bind/dynamic";
 auth-nxdomain no;
 listen-on-v6 { any; };
 listen-on { 127.0.0.1/32; 192.168.1.0/24; };
 allow-query { any; };
 recursion yes;
 version "Nao Disponivel";
 ### DNSSEC ###
 dnssec-enable no;
 dnssec-validation no;
 dnssec-lookaside auto;
};
 
#Controles 
include "/etc/bind/rndc.key";
controls {
        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { rndc-key; };
};
 
#LOGS
logging {
 channel xfer-log {
 file "/var/log/named.log";
 print-category yes;
 print-severity yes;
 print-time yes;
 severity info;
 };
 category xfer-in { xfer-log; };
 category xfer-out { xfer-log; };
 category notify { xfer-log; };
 
 channel update-debug {
 file "/var/log/named-update-debug.log";
 severity  debug 3;
 print-category yes;
 print-severity yes;
 print-time      yes;
 };
 channel security-info    {
 file "/var/log/named-auth-info.log";
 severity  info;
 print-category yes;
 print-severity yes;
 print-time      yes;
 };
 category update { update-debug; };
 category security { security-info; };
 
 };

Agora já podemos iniciar o nosso bind

/etc/init.d/bind9 start

Vamos analisar os logs para ver se não temos nada de errado

tail -f /var/log/syslog 
May 31 17:58:51 deb-srv001 named[3125]: using default UDP/IPv4 port range: [1024, 65535]
May 31 17:58:51 deb-srv001 named[3125]: using default UDP/IPv6 port range: [1024, 65535]
May 31 17:58:51 deb-srv001 named[3125]: listening on IPv6 interfaces, port 53
May 31 17:58:51 deb-srv001 named[3125]: listening on IPv4 interface lo, 127.0.0.1#53
May 31 17:58:51 deb-srv001 named[3125]: listening on IPv4 interface eth0, 192.168.1.40#53
May 31 17:58:51 deb-srv001 named[3125]: generating session key for dynamic DNS
May 31 17:58:51 deb-srv001 named[3125]: sizing zone task pool based on 5 zones
May 31 17:58:51 deb-srv001 named[3125]: using built-in DLV key for view _default
May 31 17:58:51 deb-srv001 named[3125]: set up managed keys zone for view _default, file '/var/cache/bind/dynamic/managed-keys.bind'
May 31 17:58:51 deb-srv001 named[3125]: Warning: 'empty-zones-enable/disable-empty-zone' not set: disabling RFC 1918 empty zones
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: 254.169.IN-ADDR.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: 2.0.192.IN-ADDR.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: 100.51.198.IN-ADDR.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: 113.0.203.IN-ADDR.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty 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.0.IP6.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: 1.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
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: D.F.IP6.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: 8.E.F.IP6.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: 9.E.F.IP6.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: A.E.F.IP6.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: B.E.F.IP6.ARPA
May 31 17:58:51 deb-srv001 named[3125]: automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA
May 31 17:58:51 deb-srv001 named[3125]: command channel listening on 127.0.0.1#953
May 31 17:58:51 deb-srv001 named[3125]: zone 0.in-addr.arpa/IN: loaded serial 1
May 31 17:58:51 deb-srv001 named[3125]: zone 127.in-addr.arpa/IN: loaded serial 1
May 31 17:58:51 deb-srv001 named[3125]: zone 255.in-addr.arpa/IN: loaded serial 1
May 31 17:58:51 deb-srv001 named[3125]: zone localhost/IN: loaded serial 2
May 31 17:58:51 deb-srv001 named[3125]: managed-keys-zone ./IN: loaded serial 0
May 31 17:58:51 deb-srv001 named[3125]: running

Vamos efetuar uma consultar para teste

nslookup www.terra.com.br
Server:   127.0.0.1
Address:  127.0.0.1#53

Non-authoritative answer:
Name: www.terra.com.br
Address: 208.84.244.116

Vamos efetuar uma consulta agora com o dig

dig -t any terra.com.br

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> -t any terra.com.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45213
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 6

;; QUESTION SECTION:
;terra.com.br.      IN  ANY

;; ANSWER SECTION:
terra.com.br.   86372 IN  NS  a.dns.terra.com.
terra.com.br.   86372 IN  NS  b.dns.terra.com.br.
terra.com.br.   86372 IN  NS  d.dns.terra.com.br.
terra.com.br.   86372 IN  NS  c.dns.terra.com.

;; AUTHORITY SECTION:
terra.com.br.   86372 IN  NS  c.dns.terra.com.
terra.com.br.   86372 IN  NS  b.dns.terra.com.br.
terra.com.br.   86372 IN  NS  d.dns.terra.com.br.
terra.com.br.   86372 IN  NS  a.dns.terra.com.

;; ADDITIONAL SECTION:
a.dns.terra.com.  172772  IN  A 200.215.193.1
b.dns.terra.com.br. 86372 IN  A 200.215.193.1
b.dns.terra.com.br. 86372 IN  AAAA  2001:12c0:0:2151:200:154:46:20
c.dns.terra.com.  172772  IN  A 200.215.194.1
d.dns.terra.com.br. 86372 IN  A 200.215.194.1
d.dns.terra.com.br. 86372 IN  AAAA  2001:12c0:0:2151:200:154:46:21

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat May 31 18:00:13 2014
;; MSG SIZE  rcvd: 287

Agora configurar os clientes para utilizar este servidor como servidor de DNS, ou podemos configurar ele como sendo um encaminhador do Windows ;)

Referências