Bind trabalhando como servidor de Cache DNS + Debian Squeeze

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: 10.13.0.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; 10.13.0.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 
Jul  5 21:15:39 debian named[8212]: listening on IPv4 interface eth0, 10.13.0.254#53
Jul  5 21:15:39 debian named[8212]: generating session key for dynamic DNS
Jul  5 21:15:39 debian named[8212]: set up managed keys zone for view _default, file 'managed-keys.bind'
Jul  5 21:15:39 debian named[8212]: command channel listening on 127.0.0.1#953
Jul  5 21:15:39 debian named[8212]: zone 0.in-addr.arpa/IN: loaded serial 1
Jul  5 21:15:39 debian named[8212]: zone 127.in-addr.arpa/IN: loaded serial 1
Jul  5 21:15:39 debian named[8212]: zone 255.in-addr.arpa/IN: loaded serial 1
Jul  5 21:15:39 debian named[8212]: zone localhost/IN: loaded serial 2
Jul  5 21:15:39 debian named[8212]: managed-keys-zone ./IN: loaded serial 0
Jul  5 21:15:39 debian named[8212]: 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: 200.154.56.80

Vamos efetuar uma consulta agora com o dig

dig -t any terra.com.br
 
; <<>> DiG 9.7.3 <<>> -t any terra.com.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64643
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 4
 
;; QUESTION SECTION:
;terra.com.br.      IN  ANY
 
;; ANSWER SECTION:
terra.com.br.   9874  IN  NS  c.dns.terra.com.
terra.com.br.   9874  IN  NS  d.dns.terra.com.br.
terra.com.br.   9874  IN  NS  a.dns.terra.com.
terra.com.br.   9874  IN  NS  b.dns.terra.com.br.
 
;; AUTHORITY SECTION:
terra.com.br.   9874  IN  NS  a.dns.terra.com.
terra.com.br.   9874  IN  NS  b.dns.terra.com.br.
terra.com.br.   9874  IN  NS  c.dns.terra.com.
terra.com.br.   9874  IN  NS  d.dns.terra.com.br.
 
;; ADDITIONAL SECTION:
a.dns.terra.com.  9777  IN  A 200.215.193.1
b.dns.terra.com.br. 73372 IN  A 200.215.193.1
c.dns.terra.com.  9777  IN  A 200.215.194.1
d.dns.terra.com.br. 73372 IN  A 200.215.194.1
 
;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(172.31.0.120)
;; WHEN: Thu Jul  5 21:15:39 2012
;; MSG SIZE  rcvd: 231

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

Referências