|
Autor: Koji NAT en FreeBSD 1. Introducción
1. Introducción Este pequeño articulo explicará de una manera fácil y rápida el procedimiento para compartir la conexión a Internet con otros ordenadores (Windows, Linux, *BSD, etc) usando nuestro FreeBSD como servidor, o en este caso como gateway y de una manera totalmente transparente para los clientes. Para ello usaremos NAT, Network Address Translation (Traducción de direcciones de red).
Como veis hemos dividido el doc en 6 apartados para hacerlo mas
entretenido y mas comprensible. vamos allá :-)
2. Primeros preparativos Como hemos comentado anteriormente, lo que aquí se explica se ha de hacer tanto si hacemos NAT a nivel de aplicación como a nivel interface. Primeramente debemos dotar a nuestro FreeBSD de gateway o
puerta de enlace ya que va a ser el que 'sirva' al resto de clientes de la red
como gateway. 3. NAT a nivel de aplicación Este tipo de NAT lo haremos junto con PPP. El mecanismo es sencillo, tan solo hemos de pasar el parámetro -nat al lanzar el programa ppp como de costumbre y con sus parámetros que poníamos anteriormente. ej: ppp -nat -background inet ('inet' es el nombre de nuestra etiqueta en el ppp.conf, cámbiala por la que tu tengas definida) Eso es todo, a partir de ese momento nuestro FreeBSD hará NAT con el resto de clientes. Fácil verdad? :-) NOTA: En versiones antiguas de FreeBSD (<=3.x) se usaba el parámetro -alias. Si por casualidad al usar -nat te da algún tipo de error de opción no reconocida usa el -alias
Si deseamos usar NAT en alguna interface (ed0, tun0,
etc.) el procedimiento es algo mas largo. options IPFIREWALL Una vez compilado el kernel con estas opciones, haremos uso del programa natd y de unas reglas que ahora pondremos: /sbin/ipfw -f flush Y ahora pondremos en marcha el natd: natd -interface <interface> (Cambiad <interface> por el interface que tengáis para salir a internet, ed0, tun0, etc.) Y eso es todo. Las reglas obviamente activan el 'divert' para el interface que le indiquemos, y el programa natd será el encargado de estar a la escucha en el interface indicado para ir 'traduciendo' la información que le llega desde internet y desde los ordenadores clientes. Todo esto es únicamente lo que necesitamos para hacer este tipo de NAT, pero como podéis ver, el tener que teclear todas estas reglas y demás cada vez que iniciemos nuestro FreeBSD lo hacen una tarea pesada. Para hacerlo mas cómodo usaremos los scripts de inicio. Primeramente tocaremos el archivo /etc/rc.conf: firewall_enable="YES" Intentad colocar las líneas con este orden, a mi me ha funcionado bien. Quizá lo mas importante a comentar sea la segunda línea, que especifica el archivo donde estarán ubicadas las anteriores reglas que habíamos tecleado a mano, y la ultima línea que especifica el interface del programa natd. Cambia ed0 por el que te corresponda. Las restantes activan el firewall y el programa natd Una vez hechos estos cambios en /etc/rc.conf crearemos el archivo /etc/firewall.rules para poner las anteriores reglas del ipfw. Quedaría algo así: -f flush Y guardamos el archivo. Antes de acabar este apartado me gustaría comentar una cosa para todos
aquellos que estéis usando modem con PPP (interface tun0) y
estéis probando este procedimiento. Para empezar modificar ligeramente nuestro /etc/rc.conf y colocar solo las opciones siguientes: firewall_enable="YES" Y ahora nos hacemos la pregunta .. como activamos las reglas ipfw
automaticamente? Una de las opciones seria hacer uso del archivo ppp.linkup.
Este archivo esta destinado a ejecutar lo que nosotros queramos justamente
después de establecerse la conexión PPP. Por lo tanto nos viene muy
bien. inet: Aseguraos sobre todo de respetar los espacios, enters, enters dobles, y sangrado. Es decir, debería de estar el archivo tal como veis este texto, sino posiblemente os dará algún error de script failed. También aseguraos de substituir inet: por la etiqueta que uséis vosotros en vuestro /etc/ppp/ppp.conf para conectar a internet. Y finalmente el interface tun0 si de diera el caso de que usáis otro. Y creo que eso es todo ;-) ahora tras ejecutar PPP y establecerse la
conexión, el archivo que hemos creado (/etc/ppp/ppp.linkup) se
encargará de establecer las reglas ipfw Ahora que ya tenemos el servidor FreeBSD activado para hacer NAT solo nos queda configurar los clientes, así que los separaremos para que este mas ordenado: * CASO WINDOWS 9X * * CASO FreeBSD * route add default IP_GATEWAY (Cambiando IP_GATEWAY por la IP del server que hace NAT) * CASOSD y NetBSD * route add default IP_GATEWAY (Cambiando IP_GATEWAY por la IP del server que hace NAT) * CASO LINUX * En el caso de linux puede variar segun la distribución, lo que si podemos asegurar que este comando activa la ruta hacia el gateway: route add default gw IP_GATEWAY (Cambiando IP_GATEWAY por la IP del server que hace NAT) Mirar la documentación de vuestro linux para hacer efectivos los cambios cada vez que se inicie vuestro Linux Para acabar, y si estáis configurando cualquier *BSD o Linux como cliente, no os olvideis de tocar el archivo /etc/resolv.conf para establecer los servidores de nombres.
Compilación del kernel: FAQ y Handbook de FreeBSD Para terminal decir, que para cualquier comentario, error o cualquier otra cosa podéis escribirme a koji |