SafeChildren Banner

Havoc Oracle Solaris Experts

viernes, 4 de junio de 2010

Instalar ISC DHCP en Solaris 10

Introducción
En esta ocasión vamos a ver Cómo Instalar un Servidor DHCP Paso a Paso en Solaris 10. Tener en cuenta que Solaris cuenta con un servidor DHCP, sin embargo, vamos a utilizar el que nos proporciona ISC ya que es muy ligero y sencillo de configurar, además, es el servidor DHCP "de facto" en FreeBSD.

Compilación de ISC DHCP
Lo primero que debemos hacer es decargarnos el código fuente desde la web de ISC, en nuestro caso vamos a utilizar la versión 4.1.1-P1 que no tiene dependencias con BIND. Lo configuraremos con las opciones <paranoia> y con un <prefix> personalizado para que se instale en el directorio </opt/dhcpd>
$ wget http://ftp.isc.org/isc/dhcp/dhcp-4.1.1-P1.tar.gz
$ gtar zxpf dhcp-4.1.1-P1.tar.gz
$ cd dhcp-4.1.1-P1
$ ./configure --prefix=/opt/dhcpd --enable-paranoia
$ make
# make install
Instalación
Vamos a crear un usuario llamado <dhcp>, grupo <dhcpd> y project para el grupo <group.dhcpd>
# groupadd dhcpd
# useradd -g dhcpd -s /bin/false -d /dev/null -g dhcpd dhcpd
# projadd -c 'DHCP Project' group.dhcpd
Creación de la base de datos de concesiones y PID
Debemos crear el archivo que contendrá las concesiones creadas, ya que ISC DHCP no lo creará, en nuestro caso vamos a utilizar el directorio </var/dhcpd> para almacenar el pid y la base de datos. Estos parámetros son configurables como veremos más adelante
# mkdir /var/dhcpd
# chown dhcpd:dhcpd /var/dhcpd
# chomod 700 /var/dhcpd
# touch /var/dhcpd/dhcpd.leases
Configuración del Servidor ISC DHCP
El archivo de configuración se encuentra en <$DHCP_HOME/etc/dhcpd.conf> y su estructura es muy sencilla. Todas las líneas de configuración deben acabar con <;>, sino el servidor no se iniciará y nos indicará que hay un error en el archivo de configuración.
Dentro de él tendremos la sección "global" -que será todo el archivo- y diferentes "subsecciones" identificadas como:
_nombre_ {
 option ...  ;
 option ...  ;
}
Tenemos el archivo de configuración con varios ejemplos que podemos utilizar para comenzar con nuestro propio diseño, por ello, vamos a realizar una copia -por si acaso- y siempre podremos verificar la sintaxis del archivo de configuración
# cat dhcpd.conf > dhcp.conf.ORIGINAL
Simplemente modificaremos los siguientes parámetros del archivo
option domain-name "test.com";
option domain-name-servers ns1.test.com, ns2.test.com;
authoritative;
log-facility local5;
A continuación declararemos el rango DHCP que queremos ofrecer, para ello, debemos crear una subsección por cada uno de los rangos, en nuestro ejemplo, para el rango 192.168.25.0
subnet 192.168.25.0 netmask 255.255.255.0 {
  range 192.168.25.5 192.168.25.200;
  option domain-name-servers ns1.internal.test.com;
  option domain-name "internal.test.com";
  option routers 192.168.25.254;
  option broadcast-address 192.168.25.255;
  default-lease-time 600;
  max-lease-time 7200;
}
Si queremos añadir soporte para que nuestro DHCP exporte el archivo de configuración del proxy, deberemos incluir en la sección global -después de <authoritative>- las siguientes entradas
# PAC Support
option local-pac-server code 252 = text;
option local-pac-server "http://URL_del_proxy/proxy.pac";
Configuración SysLog
Hemos definido como parámetro <log-facility local5> para ello, vamos a declararlo en nuestro syslog
# vi /etc/syslog.conf
  # DHCP Log
  local5.debug                                    /var/log/dhcpd.log
 :wq
# touch /var/log/dhcpd.log
# chmod 600 /var/log/dhcpd.log
# chown root:sys /var/log/dhcpd.log
# svcadm restart system-log
Configurar el servicio mediante Solaris SMF
He creado los archivo de <manifest y method> para estos servicios o podéis crear los vuestos  si queréis, podéis descargar Manifest para ISC DHCP Solaris 10 SMF y el Method ISC DHCP Solaris 10 SMF
# cd /lib/svc/method
# /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/isc-dhcp-solaris/svc/isc-dhcp_4
# chown root:sys isc-dhcp_4
# chmod 555 isc-dhcp_4
# /var/svc/manifest/network
# /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/isc-dhcp-solaris/svc/isc-dhcp_4.xml
# chown root:sys  isc-dhcp_4.xm
# chmod 444 isc-dhcp_4.xml
# svccfg
svc:> validate isc-dhcp_4.xml
svc:> import isc-dhcp_4.xml
svc:> quit
# svcs isc-dhcp_4
STATE          STIME    FMRI
disabled       12:38:48 svc:/network/isc-dhcp_4:default_32bits
# svcadm enable isc-dhcp_4
# svcs isc-dhcp_4
STATE          STIME    FMRI
online         12:40:08 svc:/network/isc-dhcp_4:default_32bits
Conclusión
El servidor DHCP de ISC nos permite una puesta en marcha muy rápida, y es muy sencillo de administrar. Además al incluirlo dentro del framework de SMF podemos gestionarlo de forma sencilla igual que otro servicio más.

Referencias

3 comentarios:

  1. Buenas
    he instalado el servicio del isc dhcp cuyo paquete era el CSWdhcp;
    aunque no estoy seguro de si es ese. mas que nada por evitar usar el paquete source y configurarlo.
    pero no encuentro el archivo dhcpd.conf que en ubuntu si que esta; no se si es que hay que crearlo y en que ubicacion hay que hacerlo (en ubuntu era si no recuerdo mal /etc/dhcp...).
    estoy usando solaris 10 SPARC, aunque tambien lo tengo instalado como x86 en una maquina virtual.
    y aparte de ese archivo si a lo mejor hay que crear algun otro fichero.

    ResponderEliminar
  2. hola muy buenas!!!
    tengo un problema con el servidor DHCP el cual me da el siguiente error, que buscando por internet solo encontre esto acerca del problema:

    If there is only one subnet declaration, and no network interfaces are in the range of that subnet, the DHCP daemon fails to start, and an error such as the following is logged to /var/log/messages

    Si sólo hay una declaración de subred y las interfaces de red no están en el rango de la subred, el demonio DHCP no se inicia, y un error como el siguiente se registra en / var / log / messages:

    el error es este:
    dhcpd: No subnet declaration for e1000g0 (0.0.0.0).
    dhcpd: ** Ignoring requests on e1000g0. If this is not what
    dhcpd: you want, please write a subnet declaration
    dhcpd: in your dhcpd.conf file for the network segment
    dhcpd: to which interface e1000g0 is attached. **
    dhcpd:
    dhcpd:
    dhcpd: Not configured to listen on any interfaces!

    tengo dos interfaces de red, una con DHCP; y otra; es decir, justamente esta que tiene ip statica es la que me saca este error; que no se por que ya que al ser estatica el DHCP no deberia de hacer nada con esa interfaz y menos aun mostrarme ese error

    no se como solventar este problema.
    y ademas la interfaz que funciona por DHCP no se le asigna una ip.

    ResponderEliminar
  3. hola!!
    tengo un problema con solaris 10 y es que el servidor de isc dhcp que tengo montado en mi equipo no solo me asigna ips a la interfaz que quiero sino que tambien me las asigna a otra interfaz de red que tiene mi equipo; ¿¿como se puede determinar que solo utilice una de las dos interfaces de red??
    o incluso al cliente dhcp se podria configurar para que cogiera ips del servidor dhcp que se quisiera???
    en que archivos o parametros se deberia de poner?

    ResponderEliminar