[Howto] Servidor DHCP

Imagen de carlosV2.0
0 puntos

Antes que nada, como siempre, hay que aclarar un par de temas:

1.- Todo lo que escribiré a continuación es una síntesis de mis estudios en la universidad de manera que, en todo caso, el "autor" original sería la URV (Universidad Rovira Virgili)

2.- En principio, yo utilizo un ordenador nuevecito con Ubuntu 7.04 pero según me consta, sirve hasta para otras distros puesto que en la uni lo utilizabamos sobre Debian, amigos mios sobre Red Hat, etc... Con esto quiero decir que lo que escribiré es "universal" y si no, muy flexible. También es necesario un PC con dos targetas de red y/o conexiones (por ejemplo, wireless y RJ-45)

 

Empieza el tuto:

 

 


Servidor DHCP

 

El primer paso, es esquematizar las conexiones que se van a realizar. El esquema en el que me basaré es el siguiente:

Algo <-> PC con dos targetas de red y/o conexiones <-> PC que se quiere conectar

Donde Algo es cualquier aparato y/o conexión del tipo TCP/IP que de conexión a internet al PC con las dos targetas directa o indirectamente. Para aclararnos en el futuro, llamaré a todos los aparatos:

A <-> PC1 <-> PC2

 

El link PC1 <-> PC2 lo configuraremos con DHCP para no tener que tocar configuraciones en el PC2 y/o para conectar otros apartos sin tener que configurarlos. Además, tendremos que especificar un rango de direcciones válido distinto al rango que hay en el link A <-> PC1. En mi caso, en el link A <-> PC1 tengo el rango 192.168.1.0/24 así que configuraré el link PC1 <-> PC2 con el rango 192.168.2.0/24. Os parece bien?

 

Vamos a la cuestión (Todo lo que sean comentarios, los subrayaré):

1 - Ejecuta:

$ sudo apt-get install dhcp3-server

Este es el programa que utilizarás para configurar el DHCP entre el PC1 y el PC2

 

2 - Tienes que saber que interfície es en la que quieres que el PC2 se conecte.

Si no lo sabes, ejecuta:

$ ifconfig

ifconfig te muestra todas las interfícies activas. Para ver TODAS las interfícies, tienes que añadir -a (all)

A partir de aquí, llamaré ethX a la interfície donde conectarás el PC2 (recuerda que tendrás que utilizar un cable Ethernet (RJ-45) cruzado. Estos cables se pueden comprar o te los puedes hacer tu mismo siguiendo la leyenda de la wikipedia (http://es.wikipedia.org/wiki/RJ-45)) y iface a la interfície que conecta con A.

 

3 - Ejecuta:

$ sudo ifconfig ethX down

$ sudo ifconfig ethX 192.168.1.1 up

Primeramente damos de baja la interfície ethX por si ya estaba configurada

Después, la damos de nuevo de alta configurandola con una IP fija. La máscara de sub-red, como que no la introducimos, la calcula automáticamente a partir de la IP. En este caso, es una IP de clase C por lo que utiliza una máscara de clase C: 255.255.255.0 (/24)

 

4 - Abre el archivo:

$ sudo gedit /etc/dhcp3/dhcpd.conf

Es el archivo donde estan las configuraciones del DHCP

 

5 - Tiene que quedar así:

default-lease-time 86400;
max-lease-time 604800;
get-lease-hostnames false;

subnet 192.168.1.0 netmask 255.255.255.0 {
option broadcast-address 192.168.1.255;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option domain-name <IP servidor de nombres>;
range 192.168.1.2 192.168.1.254;
}

Explicaciones:

default-lease-time 86400;

Es el tiempo hasta el primer aviso que le presta la IP al PC2

max-lease-time 604800;

Es el tiempo máximo de prestamo de IP al PC2

get-lease-hostnames false;

No tengo ni idea pero alguna chorrada más por el estilo xD

subnet 192.168.1.0 netmask 255.255.255.0 {

Definición de la red. Dirección de red y máscara de sub-red

option broadcast-address 192.168.1.255;

Parámetro del DHCP indicando la dirección de broadcast

option subnet-mask 255.255.255.0;

Parámetro del DHCP indicando la máscara de sub-red

option routers 192.168.1.1;

Parámetro del DHCP indicando la puerta de enlace

option domain-name <IP servidor de nombres>;

Parámetro del DHCP indicando el DNS (tienes que poner la IP de M como DNS o la IP del PC1 si quieres instalar un DNS en el PC1)

range 192.168.1.2 192.168.1.254;

Desde que IP hasta que IP presta el PC1. En este caso, te he puesto todas las posibles menos la .0 porque es la dirección de red, la .1 porque es la del PC1 (puerta de enlace) y la .255 porque es la dirección de broadcast

Para más información o más opciones, ejecuta man dhcpd.conf

 

6 - Ejecuta:

$ sudo dhcpd3 -f ethX

Esto ejecuta el servidor DHCP en la interfície ethX. La otra la ignora. MUY IMPORTANTE: No actives el servidor en la otra interfície porque te puede causar una denegación de servicio

A partir de este momento, ya puedes conectar el PC2 y, automáticamente te conectará por DHCP con el PC1 aunque todavía no podrás navegar por internet, sólo podras conectar PC1 con PC2.

Para que no tengas que tener la consola abierta todo el rato, ejecuta dhcp3 -f ethX & para ejecutar el servidor en segundo plano.

 

7 - Ejecuta:

$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward

Esto sirve para decir al PC1 que todos los paquetes que reciba de o para PC2 los envie por donde corresponda y no los descarte por no tener su IP

 

p>8 - Ejecuta:

$ iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source <IP de iface>

Ahora le decimos al PC1 que todo lo que reciba de la red 192.168.1.0/24 y que no sea para él, le aplique NAT y lo reenvie por la IP de iface

A partir de este punto, ya deberías de podrias navegar por internet o hacer lo que quieras en internet.

 

NOTA - Si quieres abrir algun puerto en el router del PC2, es decir, en el PC1, tiene que ejecutar esto:

$ iptables -t nat -A PREROUTING -p tcp -d <IP de iface> --dport <Puerto que quieres abrir> -j DNAT --to-destination <IP del PC de destino>

Con esto, le decimos al PC1 que lo que reciba por su puerto <Puerto que quieres abrir>, lo envie directamente y sin mirarselo a <IP del PC de destino>. Esto significa que al PC1 se le deshabilitaría el puerto <Puerto que quieres abrir>.

 

 


Con todo esto, convertireis al PC1 en un router para el PC2 ;)

 

 

Saludos a tod@s!!! :)

 

Carlos

 

....:::::::::::....

Esta comunidad demuestra que en si, un granito de arena es poca cosa, pero todos juntos, hacemos una inmensa playa.

Hoy por ti, mañana por mi. Aprender para enseñar

Imagen de carlosV2.0
+1
0
-1

Como podreis ver, hice esta afirmación y luego no la cumplí (soy un despiste :p ): 

En mi caso, en el link A <-> PC1 tengo el rango 192.168.1.0/24 así que configuraré el link PC1 <-> PC2 con el rango 192.168.2.0/24. Os parece bien?

Tened esto en cuenta, por favor!

 

Saludos! 

 

Carlos

 

....:::::::::::....

La solución más sencilla es probablemente la correcta (Navaja de Occam)

Hoy por ti, mañana por mi. Aprender para enseñar

+1
0
-1

Carlos
La solución más sencilla es probablemente la correcta (Navaja de Occam)
Hoy por ti, mañana por mi. Aprender para enseñar

Imagen de cesarro
+1
0
-1

Ubuntu 7.10 Desktop

eth0 10.0.0.1 a swich

wland0 192.168.1.186

router adsl 192.168.1.1

Rango de IP de la 10.0.0.10 a la 10.0.0.25

PC2 obtiene 10.0.0.25

PC3 obtiene 10

 

Me funciona lo que perfectamente el DCHP. pero no el NAT.

ejecuto

sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 10.0.0.1

y no me da erro. pero desde mi pc2 ni desde pc3 no me hace ping al router. netstat -rn me devuelven valores normales, todo parece bien enrutado, y ni con el enrutado ni con NAT puedo hacer ping al router ADSL ni por supuesto navegar.

Puede que sea una tonteria, pero por mas que leo, y pienso no lo encuentro.

Creo que no me funfiona el enrutado por que mi router ADSL un Livebox, no admite bridge ¿creeis que sera por eso?. ¿Pero por que no me funciona por NAT? 

Se que  Ubuntu 7.10 Desktop no es la opción mas indicada para hacer esto, pero seguro que se puede hacer con menos esfuerzo del que me esta costando.

Gracias de antemano.

+1
0
-1
Imagen de gugaragu
+1
0
-1

Es buena explicación pero investigando un poco mas , encontre este blog http://vinzlahaine.blogspot.com.es/2012/10/servidor-dhcp-ubuntu.html donde esta mejor detallado , espero que les sirva!
Un saludo!

+1
0
-1