start => servidor
Tabla de Contenidos

Servidor DHCP

¿Cómo instalar un Servidor DHCP para asignar direcciones IP automáticamente?

^ Se asume la siguiente situación ^

Rango de Direcciones IP: de 192.168.1.100 a 192.168.1.200
Mascara de Subred: 255.255.255.0
Servidores DNS: 202.188.0.133, 202.188.1.5
Dominios: tm.net.my
Dirección de la Puerta de Enlace: 192.168.1.1

$ sudo aptitude install dhcp3-server
$ sudo gedit /etc/default/dhcp3-server
INTERFACES=""
INTERFACES="eth0"
$ sudo gedit /etc/dhcp3/dhcpd.conf
...
# option definitions common to all supported networks...

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;
...
# option definitions common to all supported networks...
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

#default-lease-time 600;
#max-lease-time 7200;
...
# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}
...
# A slightly different configuration for an internal subnet.
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option domain-name-servers 202.188.0.133, 202.188.1.5;
  option domain-name "tm.net.my";
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
}
$ sudo /etc/init.d/dhcp3-server restart

¿Cómo instalar un servidor DNS de sólo cacheo?

Comenzamos instalando el servidor:

$ sudo aptitude install bind9

Esto nos cambiará la configuración de nuestro fichero /etc/resolv.conf a:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

Esto hace que cada consulta de DNS que hagamos se solicite a nuestro ordenador (127.0.0.1) y nuestro servidor DNS -si no lo tiene en caché- se la haga a los servidores root y a los subsecuentes servidores hasta encontrar el host adecuado.

Ahora podemos configurar el resto de equipos de nuestra red local con este servidor DNS:

o hacer que sea nuestro servidor DHCP el que les asigne esta información:

ColdBeer 2005/02/23 13:59

¿Cómo acelerar las consultas de nuestro servidor DNS?

Podremos acelerar las consultas aún más de nuestro servidor DNS, haciendo que en vez de consultar a toda la rama de servidores DNS, lo haga a través de los servidores DNS de nuestro proveedor de Internet (que son más rápidos y además, también disponen de su propia caché).

Para ello sólo hemos de editar el archivo /etc/bind9/named.conf.options para que el servidor DNS sepa dónde debe ir a solicitar informaciones DNS (en los servidores DNS de nuestro proveedor de Internet o, también muy usualmente, en nuestro router, que suele conocer -mediante dhcp- los servidores DNS de nuestro proveedor de Internet y los tendrá siempre actualizados).

Para ello, editamos el archivo /etc/bind/named.conf.options:

$sudo gedit /etc/bind/named.conf

y allí descomentamos y cambiamos donde pone:

        // forwarders {
        //      0.0.0.0;
        // };

por:

        forwarders {
             192.168.1.1; // Para mi router, que hace consultas recursivas a los DNS de mi proveedor.
        };

o, si sabéis las DNS de vuestro proveedor de Internet:

        forwarders {
             202.188.0.133;  // Sustituir por las correctas de vuestro proveedor
             202.188.1.5; // Sustituir por las correctas de vuestro proveedor
        };

Reiniciamos el servidor dns para que asuma los cambios y listo:

$ sudo /etc/init.d/bind9 restart

ColdBeer 2005/02/23 13:55

¿Cómo configurar nuestro propio dominio DNS local?

¡¡¡OJO!!! Esto es un trabajo avanzado y requiere de conocimientos previos en el protocolo TCP/IP, así como en el sistema de resolución de nombres DNS.

Para saber más sobre el funcionamiento de DNS:

Editamos el archivo /etc/bind/named.conf.local:

$ sudo gedit /etc/bind9/named.conf.local

y añadimos al final lo siguiente (cambiando las opciones oportunas dependiendo de los nombres y direcciones correspondientes):

zone "tm.net.my" {
        notify no;
        type master;
        file "/etc/bind/db.tm.net.my";
};

Luego creamos el archivo de información de nuestro nuevo dominio:

$ sudo gedit /etc/bind9/db.tm.net.my

Y escribimos algo (igualmente, modificando y añadiendo lo que corresponda) similar a lo siguiente:

;
; Fichero de zona para tm.net.my
;
; El fichero de zona completo
;
$TTL 3D
@       IN      SOA     ns.tm.net.my. hostmaster.tm.net.my. (
                        2005022301      ; serie, fecha de hoy + serie de hoy #
                        8H              ; refresco, segundos
                        2H              ; reintento, segundos
                        4W              ; expira, segundos
                        1D )            ; mínimo, segundos
;
                NS      ns              ; Dirección Inet del servidor de nombres
                MX      10 mail.tm.net.my     ; Relay de correo primario
;
localhost       A       127.0.0.1
ns              A       192.168.1.1
server          A       192.168.1.1
mail            A       192.168.1.2
hermanita       A       192.168.1.5

Recordatorio: Esto es sólo un ejemplo, este fichero dependerá totalmente de la configuración y servidores de que dispongamos en nuestra red, y en él podremos añadir todo tipo de registros DNS, como MX, CNAME, AAA...

Debemos reiniciar el servidor para que los cambios surtan efecto:

$ sudo /etc/init.d/bind9 restart

Y podremos ya probar la configuración:

$ nslookup server.tm.net.my
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   server.tm.net.my
Address: 192.168.1.1

Hasta aquí hemos solventado la configuración del servidor dns para resolver los nombres de nuestro dominio y nos devuelva su dirección IP. Ahora vamos a conseguir que nos funcione también la resolución inversa. Es decir, que preguntándole por una IP nos devuelva el (o los) nombres de dominio que la poseen.

Editamos de nuevo el fichero de configuración local:

$ sudo gedit /etc/bind/named.conf.local

Y añadimos al final del fichero (nuevamente, -insisto- adaptándolo a nuestra configuración específica de red) la “zona inversa”:

zone
 "1.168.192.in-addr.arpa" {
        notify no;
        type master;
        file "/etc/bind/db.192.168.1";
};

Tendremos que crear el fichero correspondiente para la zona inversa:

$ sudo gedit /etc/bind/db.192.168.1

Y en él, escribir algo similar a:

$TTL 3D
@       IN      SOA     ns.tm.net.my. hostmaster.tm.net.my. (
                        2005022301 ; Serial, todays date + todays serial
                        8H      ; Refresco
                        2H      ; Reintento
                        4W      ; Expira
                        1D)     ; Minimo TTL
                NS      ns.tm.net.my.

1               PTR     ns.tm.net.my.
1               PTR     server.tm.net.my.
2               PTR     mail.tm.net.my.
5               PTR     hermanita.tm.net.my.

Son muy importantes en este fichero los puntos al final de cada nombre de dominio, y volveré a insistir -hasta la saciedad- en que este fichero hay que adaptarlo a nuestras características particulares de red.

Vuelta a reiniciar y a comprobar su buen funcionamiento:

$ sudo /etc/init.d/bind9 restart
Stopping domain name service: named.
Starting domain name service: named.
$ nslookup 192.168.1.5
Server:         127.0.0.1
Address:        127.0.0.1#53

5.1.168.192.in-addr.arpa       name = hermanita.tm.net.my.

¡¡¡Perfecto!!! Nuestro servidor DNS ahora resuelve en directa e inversamente las direcciones de nuestra web.

ColdBeer 2005/02/23 17:10

Actualizar automáticamente el DNS con el DHCP

¡¡¡OJO!!! Esto es un trabajo avanzado y requiere de conocimientos previos en el protocolo TCP/IP, así como en el sistema de resolución de nombres DNS.

Para saber más sobre el funcionamiento de DNS:

En esta sección pretendemos que, además de los hosts que tenemos definidos en nuestra configuración DNS, los equipos que se autoconfiguren mediante DHCP se autoañadan automáticamente al DNS, de modo que podamos localizarlos por resolución (directa e inversa) de DNS.

Para empezar, editaremos el fichero named.conf.local:

$ sudo gedit /etc/bind/named.conf.local

Y cambiaremos las secciones:

zone "tm.net.my" {
        notify no;
        type master;
        file "/etc/bind/db.tm.net.my";
};

zone
 "1.168.192.in-addr.arpa" {
        notify no;
        type master;
        file "/etc/bind/db.192.168.1";
};

dejándolas de este modo:

zone "tm.net.my" {
        notify no;
        type master;
        allow-update{
                127.0.0.1;
                192.168.1.0/24;
        };
        file "/etc/bind/db.tm.net.my";
};

zone
 "1.168.192.in-addr.arpa" {
        notify no;
        type master;
        allow-update{
                127.0.0.1;
                192.168.1.0/24;
        };
        file "/etc/bind/db.192.168.1";
};

Y reiniciamos el servidor DNS para que coja los cambios:

$ sudo /etc/init.d/bind9 restart

Ahora haremos que el servidor DHCP pueda hacer este trabajo automáticamente. Editamos el archivo /etc/dhcp3/dhcpd.conf:

$ sudo gedit /etc/dhcp3/dhcpd.conf

Y debajo de este texto:

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)

Añadimos lo siguiente:

ddns-domainname "tm.net.my";
ddns-update-style interim;
ddns-updates on;

zone tm.net.my. {
        primary 127.0.0.1;
}
zone 1.168.192.in-addr.arpa. {
        primary 127.0.0.1;
}

Y asunto terminado. Para probarlo, arrancamos algún PC de nuestra Intranet que esté configurado mediante DHCP (imaginemos que se llama “belbedere”), y en el servidor, probamos:

$ nslookup belbedere.tm.net.my
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   belbedere.tm.net.my
Address: 192.168.1.100

$ nslookup 192.168.1.100
Server:         127.0.0.1
Address:        127.0.0.1#53

100.1.168.192.in-addr.arpa       name = belbedere.tm.net.my.

OK. Todo correcto. ;-)

ColdBeer 2005/02/23 17:26