original in fr Eric SEIGNE
fr to enJohn Perr
en to esHugo Lastras Membrive
Eric trabaja para el mundo del software libre. Su pan de cada día es programar aplicaciones dedicadas al acceso a bases de datos en la web con herramientas como PostGreSQL, MySQL y PHP3.
Este artículo explica como configurar de forma sencilla DHCP en una red.
El objetivo del artículo es presentar:
Nuestro primer paso es crear un fichero de configuración en blanco que
sea capaz de aceptar a todos los clientes en la red.
Usaré aquí la configuración de red de la Slash Party #2
para la que probé a configurar un servidor Linux.
<fichero dhcpd.conf> default-lease-time 86400; max-lease-time 604800; get-lease-hostnames true; option subnet-mask 255.255.255.0; option domain-name "slach2-100.party"; option domain-name-servers 192.168.12.1; option interface-mtu 1500; subnet 192.168.12.0 netmask 255.255.255.0 # gateway por defecto option routers 192.168.12.1; option broadcast-address 192.168.12.255; range 192.168.12.50 192.168.12.200; </fichero> |
Una vez el servidor DHCP está funcionando (después de usar dhcp
start o un comando similar, según la distribución de Linux), se pueden
iniciar estaciones cliente en la red. Deben estar configuradas para obtener
automáticamente una dirección IP.
Tan pronto como los clientes pidan una dirección al servidor DHCP, se
añadirá un bloque como este al fichero dhcpd.leases:
<bloque de atributos de un cliente dhcp> lease 192.168.12.58 starts 2 1999/08/24 06:28:48; ends 3 1999/08/25 06:28:48; hardware ethernet 00:10:5a:2e:56:a7; uid 01:00:10:5a:2e:56:a7; client-hostname "KLUSTER"; </bloque> |
Así pues, una vez que todos los clientes han obtenido una dirección IP del servidor, el fichero dhcpd.leases tendrá el siguiente aspecto:
<fichero dhcpd.leases> lease 192.168.12.58 starts 2 1999/08/24 06:28:48; ends 3 1999/08/25 06:28:48; hardware ethernet 00:10:5a:2e:56:a7; uid 01:00:10:5a:2e:56:a7; client-hostname "KLUSTER"; lease 192.168.12.53 starts 2 1999/08/24 05:42:22; ends 3 1999/08/25 05:42:22; hardware ethernet 00:80:ad:97:e1:76; uid 01:00:80:ad:97:e1:76; client-hostname "ceddz"; lease 192.168.12.54 starts 2 1999/08/24 03:07:26; ends 3 1999/08/25 03:07:26; hardware ethernet 00:80:ad:97:e1:7d; uid 01:00:80:ad:97:e1:7d; client-hostname "SDS"; lease 192.168.12.67 starts 2 1999/08/24 02:52:19; ends 3 1999/08/25 02:52:19; hardware ethernet 00:50:04:45:e1:65; uid 01:00:50:04:45:e1:65; client-hostname "HOMER"; lease 192.168.12.64 starts 2 1999/08/24 01:26:05; ends 3 1999/08/25 01:26:05; hardware ethernet 00:80:ad:97:e2:1c; uid 01:00:80:ad:97:e2:1c; client-hostname "chAwArmA"; lease 192.168.12.59 starts 2 1999/08/24 01:14:06; ends 3 1999/08/25 01:14:06; hardware ethernet 00:00:21:2c:30:e7; uid 01:00:00:21:2c:30:e7; client-hostname "WOOKIE"; </fichero> |
A continuación, es necesario convertir nuestro DHCP "abierto" en uno estático y más seguro. Esto lo haremos usando el fichero dhcp.lease que acabamos de crear y convirtiéndolo en lo que he llamado un dhcp estático.
¿Cuál es la diferencia entre un DHCP estático y uno abierto? En lo que nos concierne, un DHCP abierto permite a cualquier ordenador conectado a la red obtener una dirección IP y el resto de parámetros de la red. Esto es un gran agujero en la seguridad, ya que cualquier pirata no autorizado puede conectarse físicamente a la red y obtener parámetros de red correctos :( Para contrarrestar tales ataques, usaremos el DHCP estático. Cada dirección IP sólo se da a clientes que tengan el Mac correspondiente al adaptador ethernet asociado. De esta manera es fácil detectar una intrusión.
<fichero dhcpd.conf> default-lease-time 86400; max-lease-time 604800; get-lease-hostnames true; option subnet-mask 255.255.255.0; option domain-name "slach2-100.party"; option domain-name-servers 192.168.12.1; option lpr-servers 192.168.12.1; option interface-mtu 1500; subnet 192.168.12.0 netmask 255.255.255.0 # gateway por defecto option routers 192.168.12.1; option broadcast-address 192.168.12.255; # Those not in the dhcp # will get ip between .10 et .50 range 192.168.12.10 192.168.12.50; host hardware ethernet 00:10:5a:2e:56:a7; fixed-address "kluster.slach2-100.party"; host hardware ethernet 00:80:ad:97:e1:76; fixed-address "ceddz.slach2-100.party"; host hardware ethernet 00:80:ad:97:e1:7d; fixed-address "sds.slach2-100.party"; host hardware ethernet 00:40:95:49:0b:a5; fixed-address "saigneur.slach2-100.party"; host hardware ethernet 00:50:04:45:e1:65; fixed-address "homer.slach2-100.party"; </file> |
ATENCIÓN: Si no tienes un servidor DNS, el fichero dhcp.conf debe usar direcciones IP y no nombres de máquinas.
<extracto de dhcpd.conf sin dns> host hardware ethernet 00:40:95:49:0b:a5; fixed-address "192.168.12.57"; host hardware ethernet 00:50:04:45:e1:65; fixed-address "192.168.12.67"; </extracto> |
He escrito un pequeño script de perl que convierte el fichero dhcpd.leases en un fichero de configuración de dhcp estático.
¿Por qué parar a medio camino cuando podemos configurar el servidor DNS al mismo tiempo?
El mismo script de perl, con la opción -dns, creará los ficheros named.$domaine.ajouter y named.$domaine.rev.ajouter que deberías comprobar antes de añadirlos a tus propios ficheros de configuración del dns.
Además, es necesario rellenar el fichero named.conf con parámetros de tu propio dominio. Por ejemplo:
<añadir al fichero named.conf> zone "slach2-100.party" type master; file "named.slach2-100"; ; zone "12.168.192.in-addr.arpa" type master; file "named.slach2-100.rev"; ; </añadir> |
Ya tienes un dhcp funcionando, y la configuración del dns. '!'!'! Felicítate !!!
Disponible por el mismo precio (mejor incluso cuando es gratis :), la configuración del "Entorno de red" de las máquinas con windows. Esta es la historia, con un pequeño dibujo y sus explicaciones:
En Slach 2 (una demo party), instalé dos redes, una era de 10 Mbits y la otra de 100 Mbits (en aquel tiempo, para usuarios privilegiados...). El principal problema fue que ambas redes no podían "ver" a la otra a través del "Entorno de Red" de windows.
La solución es WINS. WINS permite declarar, en la red, un servidor que mantiene una lista de enlaces entre IPs y nombre de varios dominios. Es una especie de master para las redes R1 y R2.
Es pues necesario configurar un servidor WINS y a los clientes para que lo usen y crear un gateway IP entre ambas redes.
Samba soporta perfectamente WINS :)
Esquema:
------------------- I I I Red R1 I I I I 192.168.0.0 I I 255.255.255.0 I -------+----------- | -----|----- eth0: 192.168.0.1 Servidor Linux eth1: 192.168.100.1 -----|----- | -------+----------- I I I Red R2 I I I I 192.168.100.0 I I 255.255.255.0 I ------------------- |
Se modifica dhcpd.conf para que autoconfigure a los clientes para usar nuestro servidor wins :). ¡Sin dhcp, hubiera sido necesario configurar cada cliente individualmente para activar su acceso al servidor wins!
AVISO: NO OLVIDES AÑADIR LAS SIGUIENTES LÍNEAS A TU FICHERO DHCPD.CONF PARA QUE TU SERVIDOR WINS SEA USADO POR LOS CLIENTES
<fichero dhcpd.conf> [...] option routers 192.168.0.1; option netbios-name-servers 192.168.0.1; option netbios-dd-server 192.168.0.1; option netbios-node-type 8; [...] </fichero> |
Para tener el servidor wins funcionando, tengo funcionando Samba, configurado como sigue:
<fichero smb.conf> ; validated with samba 2.0.5 [global] workgroup = rycks.com server string = Linux Box comment = Linux Box netbios name = pantoufle volume = pantoufle guest only = yes guest account = nobody log file = /var/log/samba-log.%m max log size = 50 share modes = yes security = share socket options = TCP_NODELAY os level = 33 ; Configured as network master domain master = yes local master = yes preferred master = yes ; Activate wins support wins support = yes wins proxy = yes ; FTP sharing [ftp] path = /home/ftp/pub public = yes printable = no guest ok = yes </fichero> |
Es necesario reiniciar los servidores, dhcp, samba y dns si se hacen
modificaciones. Reinicia también los clientes dhcp para que se den cuenta de
la nueva configuración. Busca los grupos en la "otra" red en el "Entorno de
Red".
Dado el usual retraso que windows necesita para añadir las nuevas
máquinas en el "entorno de red", sugiero que busques un ordenador usando su
nombre. Prueba a encontrar un ordenador de la red en la que estás, y luego
otro de la "otra" red.
Si puedes "ver" máquinas de fuera, pero no puedes acceder a ellas,
necesitas configurar el gateway para que actúe como un gateway real entre
ambas redes.
Para más información sobre ello, mírate el ipchains.
Normalmente es necesario usar algo similar a:
#Reiniciar cadenas ipchains -F #Activar masquerading ipchains -A forward -i eth0 -j MASQ |
Ves con cuidado, si el servidor dhcp se usa en dos áreas a la vez, solo habrá un fichero dns a la salida del programa... Será necesario ordenarlo a mano.
Espero que este documento sea útil. No dudes en contactar conmigo para cualquier comentario o pregunta.
Para un análisis más profundo de las diferentes partes, consulta:
Las actualizaciones son frecuentes, mira en la siguiente dirección para la última versión en francés: http://www.rycks.com/erics/linux/