Introduccion:
Instalar ISC BIND.
Requerimientos:
*
FreeBSD instalado
* Conexion a Internet
* Leer este tutorial
El proceso:
Actualizar el arbol de ports
# portsnap update
Instalar el port de bind
# cd /usr/ports/dns/bind99
# make install clean
bind99-9.9.5
(dejo las opciones por defecto)
...
Installing bind99-9.9.5... done
Hacer que inicie con el equipo
# echo '# ISC BIND' >> /etc/rc.conf
# echo 'named_enable="YES"' >> /etc/rc.conf
Activar la tarjeta de red que va a nuestra LAN con la IP 192.168.1.1/24
# edit /etc/rc.conf
Agregamos la linea con los datos de nuestra segunda tarjeta de red
#Segunda tarjeta de red que va hacia la LAN
ifconfig_em1="inet 192.168.1.1 netmask 255.255.255.0"
Levantamos manualmente la segunda tarjeta sin reiniciar
# ifconfig em1 inet 192.168.1.1 netmask 255.255.255.0 up
Editar el archivo de configuracion de bind para crear nuestras zonas
# edit /usr/local/etc/namedb/named.conf
Ajustamos las lineas originales
...
listen-on { 127.0.0.1; };
...
forwarders {
127.0.0.1;
};
...
zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
...
por
...
listen-on { 127.0.0.1; 192.168.1.1; };
...
forwarders {
8.8.8.8;
8.8.4.4;
};
...
//zone "example.com" { type master; file "/etc/namedb/master/empty.db"; };
...
Note que:
1) En listen-on se agrega la IP interna para que bind responda consultas que le hagan.
2) En forwarders quitamos la IP local y agregamos las de los DNS de Google.
3) Con doble slash (//) comentamos la linea zone "example.com"...
Al final del archivo agregamos nuestras zonas "zona" y "zona inversa"
...
zone "example.com" {
type master;
allow-update { none; };
allow-transfer { localhost; 192.168.1.2; };
file "/usr/local/etc/namedb/master/example.com";
};
zone "1.168.192.in-addr.arpa" {
type master;
allow-update { none; };
allow-transfer { localhost; 192.168.1.2; };
file "/usr/local/etc/namedb/master/1.168.192.in-addr.arpa";
};
Creamos el archivo de nuestra "zona"
# edit /usr/local/etc/namedb/master/example.com
$TTL 3600 ; 1 hour default TTL
example.com. IN SOA freebsd.example.com. admin.example.com. (
2013021701 ; Serial
10800 ; Refresh (3 hours)
3600 ; Retry (1 hour)
604800 ; Expire (1 week)
300 ; Negative Response TTL (5 minutes)
)
; DNS Servers
IN NS freebsd.example.com.
; MX Records
;IN MX 10 mx.example.com.
;IN MX 20 mail.example.com.
IN A 192.168.1.1
; Machine Names
localhost IN A 127.0.0.1
freebsd IN A 192.168.1.1
; Aliases
Creamos el archivo de nuestra "zona inversa"
# edit /usr/local/etc/namedb/master/1.168.192.in-addr.arpa
$TTL 3600 ; 1 hour default TTL
1.168.192.in-addr.arpa. IN SOA freebsd.example.com. admin.example.com. (
2013021701 ; Serial
10800 ; Refresh (3 hours)
3600 ; Retry (1 hour)
604800 ; Expire (1 week)
300 ; Negative Response TTL (5 minutes)
)
; DNS Servers
IN NS freebsd.example.com.
; Machine IPs
1 IN PTR freebsd.example.com.
Iniciamos bind
# /usr/local/etc/rc.d/named start
Hacer que nuestro FreeBSD use el bind
# edit /etc/resolv.conf
Comentamos las lineas "nameserver" y agregamos a bind, queda asi
search example.com
nameserver 2001:4860:4860::8888
nameserver 2001:4860:4860::8844
#nameserver 8.8.8.8
#nameserver 8.8.4.4
nameserver 127.0.0.1
Verificamos que bind esta funcionando
Prueba a un host local
# dig @192.168.1.1 freebsd.example.com
; <<>> DiG 9.9.5 <<>> @192.168.1.1 freebsd.example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36043
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;freebsd.example.com. IN A
;; ANSWER SECTION:
freebsd.example.com. 3600 IN A 192.168.16.1
;; AUTHORITY SECTION:
freebsd.example.com. 3600 IN NS ns1.freebsd.example.com.
freebsd.example.com. 3600 IN NS ns2.freebsd.example.com.
;; ADDITIONAL SECTION:
;; Query time: 0 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Feb 06 13:40:35 COT 2014
;; MSG SIZE rcvd: 118
Prueba a un host remoto
# dig @192.168.1.1 google.com
; <<>> DiG 9.9.5 <<>> @192.168.1.1 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48596
;; flags: qr rd ra; QUERY: 1, ANSWER: 16, AUTHORITY: 4, ADDITIONAL: 5
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 300 IN A 190.248.35.30
google.com. 300 IN A 190.248.35.45
google.com. 300 IN A 190.248.35.35
google.com. 300 IN A 190.248.35.34
google.com. 300 IN A 190.248.35.24
google.com. 300 IN A 190.248.35.49
google.com. 300 IN A 190.248.35.54
google.com. 300 IN A 190.248.35.40
google.com. 300 IN A 190.248.35.25
google.com. 300 IN A 190.248.35.50
google.com. 300 IN A 190.248.35.59
google.com. 300 IN A 190.248.35.20
google.com. 300 IN A 190.248.35.55
google.com. 300 IN A 190.248.35.44
google.com. 300 IN A 190.248.35.39
google.com. 300 IN A 190.248.35.29
;; AUTHORITY SECTION:
google.com. 172742 IN NS ns4.google.com.
google.com. 172742 IN NS ns1.google.com.
google.com. 172742 IN NS ns3.google.com.
google.com. 172742 IN NS ns2.google.com.
;; ADDITIONAL SECTION:
ns1.google.com. 172742 IN A 216.239.32.10
ns2.google.com. 172742 IN A 216.239.34.10
ns3.google.com. 172742 IN A 216.239.36.10
ns4.google.com. 172742 IN A 216.239.38.10
;; Query time: 59 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Feb 06 13:34:11 COT 2014
;; MSG SIZE rcvd: 431
---------------------------------------------------------------------------------------------------------
Para un bind (slave) que funcione como respaldo del primer bind (master)...
Todo se hace de forma muy similar, pero hay algunos cambios
En named.conf (slave), las zonas al final del archivo quedan asi (vea que en lugar de la carpeta master, quedan en slave) y con la linea masters se especifica la IP del primer bind (master)
...
zone "example.com" {
type slave;
file "/usr/local/etc/namedb/slave/example.com";
masters { 192.168.1.1; };
};
zone "1.168.192.in-addr.arpa" {
type slave;
file "/usr/local/etc/namedb/slave/1.168.192.in-addr.arpa";
masters { 192.168.1.1; };
};
Los archivos "zona" y "zona inversa" no hay que crearlos ya que se importan automaticamente del primer bind (master).
Luego de iniciar bind (slave), los archivos seran transferidos desde el primer bind (master) como por arte de magia
# ls /usr/local/etc/namedb/slave
1.168.192.in-addr.arpa
example.com
---------------------------------------------------------------------------------------------------------