jueves, 27 de septiembre de 2012

Debian - Configurando servidor DHCP

En palabras sencillas, al tener un servidor DHCP lo que hacemos es entregar direcciones IP a distintos dispositivos que contengan una conexión a Internet, ya sea por alámbrica o inalámbricamente. Del mismo modo, puedo hacer que este dispositivo que tenga asignada una dirección IP por defecto por lo que podemos segmentar más nuestra red e ir organizándose. Otra ventaja que posee montar un servidor DHCP es justamente el hecho de que tenemos una infinidad de posibles variables, una de ellas, es que por ejemplo podemos definir cuántas direcciones asignaremos dinámicamente, es decir, definir un pool de direcciones.

Esto lo quiero tomar como un laboratorio, para llevarlo a cabo pueden montar 2 máquinas virtuales, yo usaré Virtualbox, una máquina virtual la ocuparemos como Servidor (obviamente Debian) y la otra puede ser cualquier distribución, en mi caso lo haré con un CentOS 6 minimal.

En el caso del servidor, creamos la máquina virtual, luego vamos a la configuración de la máquina virtual, vamos a red y creamos una interfaz en modo bridge (puente) y otra interfaz en modo intnet (red interna). En el caso del cliente sólo creamos una interfaz en modo intnet (red interna). Ahora instalamos el sistema operativo normalmente.

La configuración la haremos todo en el servidor, lo primero que debemos hacer es configurar nuestras interfaces de red, para esto editamos el fichero de configuración con nuestro editor de texto, en este caso con nano:

# nano /etc/network/interfaces

Aquí debemos configurar nuestras 2 interfaces de red, lo que haremos es que nuestra interfaz, la configuración eth0 la dejaremos como DHCP ya que este recibirá directamente la dirección IP, en cambio nuestra eth1 la dejaremos como interfaz estática, para esto dentro del fichero debemos configurarlo de forma parecida a esto:
#loopback
auto lo
iface lo inet loopback

#eth0
auto eth0
iface eth0 inet dhcp

#eth1
auto eth1
iface eth1 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0

  • Al agregar auto <interfaz> lo que hacemos es indicar que esa interfaz se levante automáticamente.
  • La palabra iface es para indicar la configuración de la interfaz asociada.
  • Para configurar una interfaz en DHCP, simplemente escribimos iface <interfaz> inet dhcp
  • Para configurar una interfaz en modo estático, simplemente escribimos iface <interfaz> inet static, seguido de esto escribimos address que es la dirección IP que tendrá la interfaz, netmask que es la máscara de red y network, que es el segmento al cual pertenece. Tenemos más configuraciones, pero está configuración mínima sirve para para el ejemplo.
  • Tenemos que tener en cuenta el segmento de nuestra eth0 y eth1, ya que no deben ser el mismo, por ejemplo, si nuestra eth0 recibe el segment0 192.168.1.0, nuestra eth1 puede ser cualquier segmento menos el de la eth0.
Una vez configuradas nuestras interfaces de red, hacemos lo siguiente:

# service networking restart && ifup eth0 && dhclient eth0 && ifup eth1

Con hacer un ifconfig podemos ver la configuración de nuestras interfaces, seguido de esto, instalamos los servicios necesarios:

# aptitude install dhcp3-server isc-dhcp-server

Ahora comienza la configuración, primero:

# nano /etc/default/isc-dhcp-server

Aquí encontraremos una línea que dice INTERFACES="", lo que debemos hacer es indicar la interfaz que repartirá las direcciones DHCP, en nuestro caso es la interfaz eth1, por lo que nos quedaría INTERFACES="eth1"

Ahora debemos configurar el último fichero de configuración, pero antes como medida de precaución, hacemos una copia de seguridad de nuestro fichero:

# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.original

Ya con nuestra copia de seguridad hecha, lo primero que haremos será vaciar el fichero para que sólo tenga nuestra configuración

# cat /dev/null > /etc/dhcp/dhcpd.conf

Ahora si, finalmente, configuramos:

# nano /etc/dhcp/dhcpd.conf

Aquí agregaremos una configuración mínima

authoritative;
ddns-update-style interim;
ignore client-updates;

subnet <segmento-red> netmask <máscara-red> {
  option routers                  <ip-gateway, este caso eth1>;
  option subnet-mask              <máscara-red-de-subred>;
  option domain-name              "<nombre-dominio-dns>";
  option domain-name-servers   <ip-dns>;
  option time-offset   -18000; 

  range dynamic-bootp 192.168.0.100 192.168.0.200;
  default-lease-time 600;
  max-lease-time 7200;
}

Un ejemplo según nuestra configuración sería:

authoritative;
ddns-update-style interim;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers                   192.168.0.1;
  option subnet-mask               255.255.255.0;
  option domain-name               "mired.cl";
  option domain-name-servers 192.168.0.1;
  option time-offset         -18000; 

  range dynamic-bootp 192.168.0.100 192.168.0.200;
  default-lease-time 600;
  max-lease-time 7200;
}

Como comentamos anteriormente, también podemos asignar ip estáticas, simplemente agregando lo otro segmento de configuración

host nombrecliente { 
hardware ethernet MAC; 
      fixed-address IP; 

Inclusive podemos hacer que los equipos que no estén en la lista, no puedan obtener una dirección IP gracias a:

deny unknown-clients;

Un ejemplo completo podría ser:

authoritative;
ddns-update-style interim;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {
  option routers                   192.168.0.1;
  option subnet-mask               255.255.255.0;
  option domain-name               "mired.cl";
  option domain-name-servers 192.168.0.1;
  option time-offset         -18000; 

  range dynamic-bootp 192.168.0.100 192.168.0.200;
  default-lease-time 600;
  max-lease-time 7200;
}

deny unknown-clients;

host cliente {
        hardware ethernet 08:00:27:5B:C6:44;
        fixed-address 192.168.0.199;
}

Luego simplemente:

service dhcpd restart
chkconfig dhcpd on

Con lo que reiniciamos el servicio y hacemos que este inicie con el sistema.

0 comentarios:

Publicar un comentario