Servidor DHCP en Slackware

Sa´l Garc´ Hern´ndez Mauro Mois´s Mendoza Aguilar u ıa a e 15 de Enero del 2007

1.

Introducci´n o

El Servicio de DHCP es de la Capa de Aplicaci´n del Modelo OSI, este o permite configurar la pila TCP/IP de los hosts de manera dinamica, de tal manera que varios host en una red pueden ser configurados simultaneamente. DHCP (sigla en ingls de Dynamic Host Configuration Protocol) es un protocolo de red que permite a los nodos de una red IP obtener sus parmetros de configuracin automticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP din´micas a y las va asignando a los clientes conforme estas van estando libres, sabiendo en todo momento quien ha estado en posesi´n de esa IP, cuanto tiempo la ha o tenido, a quien se la ha asignado despu´s. e

2.
2.1.

Configuraci´n de las Tarjetas de Red. o
Verificaci´n IP del Servidor o

En nuestro Servidor DHCP debemos verificar la configuraci´n de nuestras o tarjetas de red (aunque no son necesarias dos, con una puede bastar), podemos realizar esta operaci´n de la siguiente forma: o
root@darkstar:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:04:23:0D:27:40 inet addr:192.168.1.153 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6567 errors:0 dropped:0 overruns:0 frame:0 TX packets:1490 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:815591 (796.4 Kb) TX bytes:130346 (127.2 Kb) Interrupt:11 Base address:0xe000 eth0:1 Link encap:Ethernet HWaddr 00:04:23:0D:27:40 inet addr:192.168.128.151 Bcast:192.168.128.255 Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:11 Base address:0xe000 Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:724 errors:0 dropped:0 overruns:0 frame:0 TX packets:724 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:103287 (100.8 Kb) TX bytes:103287 (100.8 Kb)

lo

Si usted ya sabe que tarjeta de red va a destinar para escuchar las solicitudes de DHCP, entonces solo tendr´ que asegurarse de su configuraci´n de la siguiente a o forma: 1

root@darkstar:~# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:04:23:0D:27:40 inet addr:192.168.1.153 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6679 errors:0 dropped:0 overruns:0 frame:0 TX packets:1552 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:830626 (811.1 Kb) TX bytes:135750 (132.5 Kb) Interrupt:11 Base address:0xe000

En dado caso de que la tarjeta de red no este configurada, se tiene que configurar con alguna utiler´ de GNU o de Slackware como netconfig, pero a continuaci´n ıa o le mostramos la manera de hacerlo mediante el comando ifconfig: ifconfig eth0 192.168.1.153 netmask 255.255.255.0 up Con esto configuramos y levantamos la interfaz ethernet con los parametros correspondientes, pero dicha configuraci´n estar´ solo en memoria, por lo que o a al reiniciar la computadora se perder´ dicha configuraci´n. a o

2.2.

Configuraci´n de la tarjeta de red que escucha petio ciones DHCP

Vamos a desarrollar el ejemplo de un servidor DHCP que tiene dos tarjetas de red, una de ellas esta conectada a un segmento LAN en donde se configura las computadoras por medio de DHCP; en otro segmento comunica con servidores o con ruteadores para salida al exterior; observese el siguiente diagrama:

2

La tarjeta de red que va a comunicar con el segmento privado va a ser la eth1, la tarjeta de red que va a comunicar con el segmento publico va a ser la eth0; vamos a configurar sus parametros del protocolo IP para que queden de manera permanente, para ello vamos a editar el archivo /etc/rc.d/rc.inet1.conf root@darkstar:~#joe /etc/rc.d/rc.inet1.conf En el contenido de dicho archivo esta una seccion en donde se van a configurar las tarjetas de red, si no existe ninguna configuracion dicha parte se ve de la siguiente manera, localize secciones de codigo que tengan la siguiente forma # Config information for eth0: IPADDR[0]="" NETMASK[0]="" USE_DHCP[0]="yes" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="" NETMASK[1]="" USE_DHCP[1]="" DHCP_HOSTNAME[1]="" Las secciones anteriores son para configurar las tarjetas de red eth0 y eth1 respectivamente, bien, ahora nosotros vamos a configurar una IP privada para el segmento privado y una IP real para el segmento real; supongamos que vamos a hacer lo siguiente; vamos a configurar la IP 192.168.0.1 con mascara de red 255.255.255.0 para el servidor DHCP cuya tarjeta va a estar mirando el segmento privado; y vamos a configurar la direccion publica 148.208.221.189 con mascara de red 255.255.255.0; los cambios en el archivo rc.inet1.conf deberan verse asi: # Config information for eth0: IPADDR[0]="148.208.221.189" NETMASK[0]="255.255.255.0" USE_DHCP[0]="" DHCP_HOSTNAME[0]="" # Config information for eth1: IPADDR[1]="192.168.0.1" NETMASK[1]="255.255.255.0" USE_DHCP[1]="" DHCP_HOSTNAME[1]="" Una vez hecho esto debemos a˜adir nuestro gateway, esto unicamente para el n servidor DHCP y con fines de que nosotros en el futuro talvez queramos que nuestro servidor DHCP tambien haga NAT, de todas maneras la maquina que 3

sera el servidor DHCP debe de quedar completamente configurada en su pila TCP/IP. # Default gateway IP address: GATEWAY="148.208.221.254" En nuestro caso nosotros a˜adimos la direccion IP 148.208.221.254 porque es el n gateway de nuestra LAN, obvio que esta en el segmento real. Una vez modificado el archivo rc.inet.conf procedemos a guardarlo y aplicar los cambios de la siguiente manera: root@darkstar:~#/etc/rc.d/rc.inet1.conf restart Ahora verificaremos que esta configuracion sea ya aplicada, usaremos el comando ifconfig para dicho proposito
root@angel:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:04:23:0D:27:40 inet addr:148.208.221.189 Bcast:148.208.221.255 Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 RX packets:374139 errors:0 dropped:0 overruns:0 frame:0 TX packets:13723 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:35050110 (33.4 Mb) TX bytes:2482183 (2.3 Mb) Interrupt:11 Base address:0x5000 Link encap:Ethernet HWaddr 00:04:23:0D:27:40 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:11 Base address:0x5000 Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:5442 errors:0 dropped:0 overruns:0 frame:0 TX packets:5442 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:778494 (760.2 Kb) TX bytes:778494 (760.2 Kb)

eth1

lo

Cada tarjeta de red estara conectada a un segmento diferente; el segmento real es la red 148.208.221.0/24, ahora debemos de verificar que salimos al exterior para eso vamos a mandar un ping al gateway del segmento real root@angel:~# ping 148.208.221.254 Esto solo nos probara que estamos en el segmento real y que tenemos comunicacion con nuestro gateway del segmento real. Pero si queremos asegurarnos de que ya tenemos salida al exterior mandemos un ping como se vea a continuacion: root@angel:~# ping 200.23.1.1 A continuacion debemos de verificar que el demonio DHCPD ya este corriendo en nuestra maquina, utilicemos el comando ps como se muestra a continuacion: root@angel:~# ps axf Si no nos sale ninguna linea que indique que el DHCPD este corriendo, no se preocupe, no todas las distribuciones lo traen corriendo por defecto, nosotros vamos a tener que configurarlo y hacerlo correr manualmente 4

2.3.

Configuracion del demonio DHCPD

El archivo de configuracion del demonio DHCPD es /etc/dhcpd.conf Su contenido es este: #/etc/dhcpd.conf ddns-update-style ad-hoc; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.50;} option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.1; option domain-name-servers 148.208.221.1; option domain-name "ittehuacan.edu.mx"; host jebus{ hardware ethernet 00:60:97:A1:DF:66; fixed-address 192.168.0.3; } host wicheta{ hardware ethernet 00:02:8A:D7:9C:F9; fixed-address 192.168.0.2; } host efren{ hardware ethernet 00:02:8A:B6:F0:8E; fixed-address 192.168.0.4; } Bien, vamos a explicar cada una de las partes del archivo de configuracion, el primer renglon trata de como se actualiza el DNS, el segundo renglon que es el que mas nos importa indica la red cuyas direcciones IP se van a estar repartiendo junto con su mascara. subnet 192.168.0.0 netmask 255.255.255.0 Notese que a continuacion viene una llave que se abre lo cual significa que se van a definir parametros para las IP’s que se entreguen y que forman parte de la red. El siguiente parametro establece el rango de direcciones que se van a asignar de manera dinamica range 192.168.0.2 192.168.0.50; Con la siguiente linea se establece la mascara de subred: option subnet-mask 255.255.255.0; Se establece tambien la direccion de broadcast:

5

option broadcast-address 192.168.0.255; Se coloca la direccion del gateway: option routers 192.168.0.1; Ademas se agrega la direccion del DNS y el nombre de dominio: option domain-name-servers 148.208.221.1; option domain-name ”ittehuacan.edu.mx”; Todas estas opciones son para la red 192.168.0.0, le volvemos a repetir que las IP’s que se van a entregar de manera dinamica son de la 192.168.0.2 a la 192.168.0.50 como buen administrador debe uno definir rangos para aprovechar mejor las IP’s, tambien le hacemos notar que usted puede subnetear la red cambiando los valores de la mascara de red; por ultimo se configura la direccion del gateway, esta debe ser de la maquina que va a hacer NAT (Network Address Translation) que puede ser inclusive una maquina diferente del servidor DHCP; el tutorial trata de una maquina que va a ser servidor de DHCP y va a hacer NAT. A continuacion vienen unos parametros que son fijos: host jebus{ hardware ethernet 00:60:97:A1:DF:66; fixed-address 192.168.0.3; } host wicheta{ hardware ethernet 00:02:8A:D7:9C:F9; fixed-address 192.168.0.2; } host efren{ hardware ethernet 00:02:8A:B6:F0:8E; fixed-address 192.168.0.4; } El primer parametro especifica que se le de el nombre de host jebus a una computadora en especifico junto con la direccion IP 192.168.0.3, esto se hace por medio de la coincidencia de la direccion MAC 00:60:97:A1:DF:66; en la red se va a buscar una computadora que tenga dicha direccion MAC y se le va a asignar dicha direccion IP y nombre de host. Para el caso de los hosts wicheta y efren, es lo mismo.

2.4.

Resoluci´n de nombres y acceso al internet o

Se requiere que el servicio de resoluci´n de nombres este ya configurado, o puede uno verificar la configuraci´n examinando el archivo /etc/resolv.conf. o 6

root@darkstar:~# more /etc/resolv.conf nameserver 148.208.221.1 search server_dhcp La direccion IP 148.208.221.1 se asume que es el DNS de nuestra red, puede ser cualquier otro DNS no necesariamente el DNS de nuestra red, una forma mas completa de verificar el servicio de resolucion de nombres es por medio del comando dig; aqui mostramos un ejemplo de su uso para verificar el servicio de resolucion de nombres:
root@angel:~# dig www.yahoo.com ; <<>> DiG 9.2.3 <<>> www.yahoo.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28554 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.yahoo.com. ;; ANSWER SECTION: www.yahoo.com. 299 www.yahoo-ht2.akadns.net. 59 ;; ;; ;; ;;

IN

A

IN IN

CNAME A

www.yahoo-ht2.akadns.net. 209.131.36.158

Query time: 937 msec SERVER: 148.208.221.1#53(148.208.221.1) WHEN: Thu Mar 15 17:51:44 2007 MSG SIZE rcvd: 85

y por ultimo para poder enviar paquetes a una red remota, debemos de tener una ruta por defecto, utilicemos el comando netstat como se ilustra a continuaci´n: o
root@darkstar:~# netstat -r Kernel IP routing table Destination Gateway 192.168.0.0 * localnet * loopback * default 148.208.221.254

Genmask 255.255.255.0 255.255.255.0 255.0.0.0 0.0.0.0

Flags U U U UG

MSS 0 0 0 0

Window 0 0 0 0

irtt 0 0 0 0

Iface eth1 eth0 lo eth0

3.

Habilitando el servicio de DHCP
Para correr el demonio de DHCPD usemos la sintaxis siguiente: Forma correcta de correr el proceso:

/usr/sbin/dhcpd

eth1 &

Se debe de indicar la tarjeta de red que va a estar escuchando las solicitudes de DHCP. Sin embargo esto es temporal, la proxima vez que se reinicie la maquina no se cargara el servicio de DHCP para hacerlo de forma permanente vamos a configurar uno de los scripts de inicio Archivo que arranca el servicio DHCP desde que prende la maquina cd /etc/rc.d/joe rc.inet2

7

Se agrega al final del archivo las siguientes lineas para iniciar el servidor DHCP: if [ -x /usr/sbin/dhcpd ]; then echo "Starting Server DHCP: /usr/sbin/dhcpd" /usr/sbin/dhcpd eth1 fi Reiniciamos la maquina y para entonces debe de arrancar ya de manera permanente el servicio DHCP.

4.

Configuraci´n para realizar NAT y enmascao ramiento

Aunque no es proposito de este manual explicar cosas de iptables, solo aclararemos que para poder hacer NAT necesitamos a˜adir las cadenas de iptables n necesarias, para que el servicio de NAT siempre este corriendo necesitamos crear o editar el archivo correspondiente, este se encuentra en la ruta /etc/rc.d/ el cual se debe llamar rc.firewall, y se le agrega la siguiente linea:
/usr/sbin/iptables -t nat -A POSTROUTING -S 192.168.0.0/24 -J MASQUERADE

Se guarda el archivo rc.firewall, se cambian sus permisos y se ejecuta el script root@darkstar:~#chmod 755 rc.firewall root@darkstar:~#/etc/rc.d/rc.firewall Con esto haremos que las maquinas del segmento real tengan salida hacia el exterior(internet) ademas de que se estan configurando sus parametros IP por DHCP

8

Sign up to vote on this title
UsefulNot useful