El DNS es una base de datos distribuida y jerárquica que almacena información asociada a nombres de dominio en redes como Internet. Aunque como base de datos el DNS es capaz de asociar diferentes tipos de información a cada nombre, los usos más comunes son la asignación de nombres de dominio a direcciones IP y la localización de los servidores de correo electrónico de cada dominio.
Estos son un resumen de los pasos para instalar un servidor DNS en un servidor Ubuntu:
1.-Instalar software
Tenemos que instalar el paquete bind9. Si utilizamos apt-get ejecutamos la siguiente instrucción:
sudo apt-get install bind9
En el caso de que no tengamos disponible la utilidad apt-get tendremos que instalar el paquete y TODAS sus dependencias por el método tradicional:
sudo dpkg -i bind9_9.3.2-2ubuntu1.12_i386.deb
2.- Creación del fichero named.conf.local
Tenemos que editar el siguiente fichero para definir las zonas (nombres de dominio) que queramos configurar:
sudo vi /etc/bind/named.conf.local
E introducimos lo siguiente, reemplazando 2 variables:
- Reemplazamos server.com por el dominio que nosotros deseemos:
- Reemplazamos 0.168.192 por la dirección de la red al revés, por ejemplo, si estuvieramos en una red 10.228.20.x, introduciríamos 0.20.228.10
# This is the zone definition. replace example.com with your domain name
zone "server.com" {
type master;
file "/etc/bind/zones/server.com.db";
};
# This is the zone definition for reverse DNS. replace 0.168.192 with your network address in reverse notation - e.g my network address is 192.168.0
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/rev.0.168.192.in-addr.arpa";
};
3.- Editar el fichero de opciones named.conf.options
sudo vi /etc/bind/named.conf.options
En este fichero sólo tenemos que establecer la dirección IP de nuestros DNS de la red. En el caso de que el servidor DNS que estamos montando no sepa resolver el dominio, reenviará la petición a estos DNS
forwarders {
# Replace the address below with the address of your provider's DNS server
123.123.123.123;
123.123.123.124;
};
4.- Crear los ficheros de configuración de nuestra zona:
sudo mkdir /etc/bind/zones
Miramos el nombre del fichero que habíamos definido en el fichero /etc/bind/named.conf.local, en nuestro caso es /etc/bind/zones/server.com.db
y cremos el fichero:
sudo vi /etc/bind/zones/server.com.db
En este fichero ya es donde tenemos que definir la equivalencia entre ips y dominios:
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA server.com. root.server. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS server.com.
server.com IN A 1.1.1.1
server1 IN A 1.1.1.2
IMPORTANTE: Eliminar todos los comentarios de la forma //, A mí me dio problemas. Y ojo también con los “.” después del nombre del dominio, no se pueden eliminar.
El siguiente punto de configuración es crear el fichero de reverse DNS zone, que a partir de una ip nos dirá el dominio.
Nos fijamos en el fichero que habíamos definido en el fichero /etc/bind/named.conf.local, en nuestro caso teníamos: file “/etc/bind/zones/rev.0.168.192.in-addr.arpa”;
Por lo que el fichero sería:
sudo vi /etc/bind/zones/rev.0.168.192.in-addr.arpa
//replace server.com with yoour domain name, ns1 with your DNS server name.
// The number before IN PTR server.com is the machine address of the DNS server. in my case, it's 1, as my IP address is 192.168.0.1.
@ IN SOA ns1.example.com. admin.example.com. (
2006081401;
28800;
604800;
604800;
86400
)
IN NS ns1.server.com.
1 IN PTR server.com
120 IN PTR server2
IMPORTANTE: El número “1″ que tenemos en la última fila es la dirección de la máquina de la red, por ejemplo, si tenemos un servidor con ip 192.168.0.120, el número que tenemos que poner es 120.
5.- Configurar este DNS en nuestra máquina (/etc/resolv.conf)
Introducimos el nuevo servidor DNS y dejamos también por si acaso el servidor DNS original de nuestra red.
search server.com nameserver 192.168.0.1 nameserver 1.1.1.1
6.- Reiniciar el servicio bind y probar el servidor DNS
Por último reiniciamos el servicio bind y probamos que funciona.
sudo /etc/init.d/bind9 restart
Hay varias utilizades para saber si funciona: dig, nslookup y ping:
dig server.com dig server1.server.com nslookup 192.168.0.1 ping server1.server.com
Referencia:
https://help.ubuntu.com/6.06/ubuntu/serverguide/C/dns.html
https://help.ubuntu.com/community/BIND9ServerHowto
http://es.wikipedia.org/wiki/Domain_Name_System