Pages

sábado, 26 de febrero de 2011

DHCP en OpenBSD

Bien vamos por un poquito de servicios de red que sobre OpenBSD 4.8 :D, en nuestro caso vamos a tomar un esquema de red donde nuestro OpenBSD servira de funciones de gateway para una red, por lo tanto debera de contar con 2 inetrfaces de red, la primera para la WAN y la segunda para la LAN asi:

WAN--------OBSD--------LAN

Ahora teniendo el esquema ahi tres servicios basicos que se deben necesitar, primer el direccionamiento de la LAN, ya que la WAN es dada de manera Dinamica o reservada, lo segundo es el enrutamiento, para que los equipos de nuestra lan puedan salir a internet y como solo hay una direcciñon ip el enmascaramiento o nat, y tercero el firewall para proteger nuetro red LAN.

Para empezar a configurar nuestro dhcp, es saber que este ya se encuentra preinstalado en nuestro sistema, asi que los cambios a realizar son minimos, lo primero que debemos realizar es que la interfaz conectada a la red LAN, debe tener una dirección IP estatica dentro del rango que esta red,  la forma de configurar nuestras interfaces de red es mediante una linea en un fichero con el nombre /etc/hostname.(nombre de la interfaz), para conocer las interfaces de nuestro sistema, lo podemos hacer mediante el comando ifconfig -a, para mi caso las tarjetas de red se identifican como vic0 y vic1, vic0 sera nuestra tarjeta de WAN y vic1 sera nuestra tarjeta de LAN, así que vic0 se configurara por DHCP, mientras que vic1 será configurada con una ip estática, el ID de red será 192.168.1.0/24, los ficheros deben quedar de a siguiente manera.

cat /etc/hostname.vic0
dhcp

cat /etc/hostname.vic1
inet 192.168.1.5 0xffffff 192.168.1.255 description "Lan"

asi le hemos asignado una ip estatica a nuestra tarjeta vic1, mas aun no esta activa, para hacerlo simplemente le damos el siguiente comando:

sh /etc/netstart

esto nos activa la IP en la interfaz LAN vic1, lo cual lo podemos verificar haciendo un ifconfig vic1

Ahora, que ya tenemos la ip de nuestra lan configurada en el equipo, procedemos a configurar el servidor DHCP, para eso nos valemos de lo siguiente:

Primero, definimos por que intefaz vamos a poner a escuchar nuestro servidor DHCP, esto lo hacemos editando el archivo /etc/rc.conf.local, y ponemos lo siguiente:

cat /etc/rc.conf.local
dhcpd_flags="vic1"

Ya le hemos dicho al servidor que inicie y que escuche por la interfaz vic1, ahora vamos a dar la configuracion que servira a los dispositivbos clientes, lo cual lo hacemos en el archivo /etc/dhcpd.conf, el cual configuraremos muy similar a el mismo archivo de configuracion en un ubuntu, un ejemplo sencnillo seria el siguiente:

cat /etc/dhcpd.conf
option domain-name "calle.tux";
option domain-name-servers 192.168.1.5;

subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers 192.168.1.5;
        range 192.168.1.100 192.168.1.200;
}

Por ultimo, reiniciamos la configuracion con el comando:

sh /etc/rc

Con esto queda listo nuestro servidor DHCP, pero ahora necesitamos darle salida a internet a los usuarios locales, osea habilitar el enrutamiento, lo cual logramos hacerlo de manera permanente editando el archivo /etc/sysctl.conf, y descomentando la siguiente linea:

#net.inet.ip.forwarding=1

Despues de esto lo mejor seria reiniciar nuestro sistema, aunque tambien lo podriamos hacer con el comando sh /etc/rc

Ya nuestro sistema OpenBSD es un servidor DHCP y un enrutador, ahora falta que realice un NAT dinamico para que todos pueda salir a navegar por la profundidades de la red, esto se logra por medio de PF (Packet Filter), en esta ocación solo tocaremos el aspecto basico del NAT con el PF para que no lo vallamos a ver como imposible... XD.

Lo primero que hay que saber es que por defecto el PF viene habilitado en el sistema OBSD 4.8, asi que lo unico que nos resta es configurarlo para que nos haga el NAT, lo hacemos desde el archivo de configuracion /etc/pf.conf

cat /etc/pf.conf

#MACROS
#Interfaz externa
wan="vic0"

#Intefaz interna
lan="vic1"

#Red interna
red_lan="192.168.1.0/24"

#OPCIONES
#No filtrar en las interfaces de loopback
set skip on lo0

#SCRUB
#Normalización de los paquetes, que entran y salen en todas las interfaces
match in all scrub (no-df max-mss 1440)

#NAT, esta regla hace que toda la red pueda salir a Internet.
match out on $wan from $red_lan to any nat-to $wan

#REGLAS DEL FILTRO
#Políticas por defecto, bloquear todo lo que entra, dejar pasar todo lo que sale
block in on $wan
pass out all
#Antispoof en la LAN.
antispoof quick for $lan inet
#Permitir conexiones ssh y web desde afuera, logueando el primer paquete.
pass in log on $wan proto tcp from any to any port ssh
pass in log on $wan proto tcp from any to any port 80


Con esto logramos tener un NAT en nuestro servidor OpenBSD y a la vez un pequeño firewall, para el filtrado y permisos para dejar pasar peticiones web y ssh.