Configurando IP-Masquerading

ArticleCategory: [Es gibt verschiedene Artikel Kategorien]

System Administration

AuthorImage:[Ein Bild von Dir]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in en Guido Socher
en to es Pedro Vega

AboutTheAuthor:[Eine kleine Biographie über den Autor]

Guido es un fan veterano de Linux. Su pagina Linux se puede encontrar en www.oche.de/~bearix/g/.

Abstract:[Here you write a little summary]

IP-Masquerading posibilita la conexión de varios ordenadores a internet usando una máquina Linux con solo una IP pública. Esto quiere decir que puedes conectar una red privada a internet y tu proveedor de internet creerá que solo tienes un ordenador conectado. Este artículo explica como configurar IP-Masquerading con un Kernel 2.2.x. No se explica como construir una red. Para tener una idea general sobre redes recomiendo leer el artículo sobre redes caseras (Enero de 2000).

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

General

Para usar IP-Masquerading tal cual se explica en este artículo necesitas al menos una máquina Linux con un Kernel 2.2.x. Esta máquina es la que establecera la conexión a internet. Que usemos Linux como sistema para compartir la conexión no significa que todos los ordenadores de tu red tengan que correr Linux. De hecho, Linux funciona bien con Windows, Mac, y otras variantes de Unix.
Este sistema para compartir la conexión es el tema del que nos vamos a ocupar en este artículo. La máquina Linux conecta una parte a internet y la otra a tu red privada, por lo cual, al menos, tiene que tener dos interfaces con sus respectivas IP's. Una de las direcciones IP es pública, lo que significa que es enrutable (puede viajar a traves de internet) y normalmente asignada por tu proveedor de internet en el momento que se establece la conexión con el módem (o lo que sea que utilices). La ota dirección IP es privada (no enrutable) y la puedes asignar de uno de estos rangos :

Este artículo tampoco explica como configurar tu red privada. Doy por hecho que ya tienes tu red en funcionamiento.

Fundamentos del IP-Masquerading

Básicamente, IP-Masquerading traduce direcciones IP internas en direcciones IP externas. Este proceso se llama Traduccion de Direcciones de Red (NAT) y Linux hace esto mediante los llamados números de puerto. Desde el exterior, todas las conexiónes parecen haberse originado desde tu máquina Linux. Puedes encontrar un explicación detallada en la edición de Enero.

Existen ciertas aplicaciones que generan paquetes IP de tipo especial, en estos caso IP-Masquerading podría no funcionar aunque la mayoría de las veces funciona. Hay módulos expecíficos que, insertados en el Kernel, permiten a estas aplicaciones funcionar con IP-Masquerading, este es el caso de ICQ, ftp y Quake. En general, los que solo usen HTTP (navegadores web), telnet, ssh o smtp (email) no tendrán ningún problema.

Configurando el Kernel

La gente que use algunas de las principales distribuciones de Linux (Redhat, Mandrake, Debian, Suse ...) pueden saltarse este capítulo ya que su Kernel viene preparado para usar IP-Masquerading.

Normalmente suelo hacer backup de /usr/src/linux/.config despues de haber compilado y probado un Kernel. La proxima vez que necesite compilar un Kernel simplemente cargo esta configuracion y ya tengo la configuracion de mi Kernel anterior. Luego es relativamente sencillo configurar pequeños cambios, como los necesarios para IP-Masquerade.

Para usar IP-Massquerade responde Sí a lo siguiente cuando configures el Kernel. Estos son solo los componentes que necesitas para IP-Masquerade, seelecciona cualquier otra opción que necesites para tu configuración especifica.

Configurar IP-Masquerading

Vamos a escribir un pequeño script para automatizar la configuración de IP-Masquerading. Debes poner el siguiente script en /etc/rc.d/init.d/ y llamarlo ipmasq. Cambia los permisos con chmod 755 ipmasq para hacerlo ejecutable. El script de abajo asume que has usado la dirección IP estática 192.168.0.1 en el interface que conecta a tu red interna (ifconfig eth0 192.168.0.1 netmask 255.255.255.0). Si has usado una dirección diferente modifica el script. Esta imagen muestra el plano de la red que estamos usando.
networkplan

#!/bin/sh
echo "Configurando IP masquerading ..."
# La gente que todavia utilice windows para navegar tiene que
# convertir esto a un fichero de texto UNIX antes de utilizarlo.
#
# Soporte de masquerading para FTP.
/sbin/modprobe ip_masq_ftp
#
#--------------
# Nota: los modulos que siguen estan comentados de forma que no se cargaran.
# Quita el signo de comentario si quieres usar la aplicacion correpondiente
# desde tu red interna.
#
# Soporte de masquerading para RealAudio sobre UDP. 
#/sbin/modprobe ip_masq_raudio
#
# Soporte de masquerading para transferencia de ficheros IRC DCC
#/sbin/modprobe ip_masq_irc
#
# Soporte de masquerading para Quake y QuakeWorld 
# Quake I / QuakeWorld (ports 26000 and 27000)
#/sbin/modprobe ip_masq_quake
#
# Quake I/II/III / QuakeWorld (ports 26000, 27000, 27910, 27960)
#/sbin/modprobe ip_masq_quake ports=26000,27000,27910,27960
#
# Soporte de masquerading para software de video conferencia CuSeeme 
#/sbin/modprobe ip_masq_cuseeme
#
# Soporte de masquerading para software de video conferencia VDO-live
#/sbin/modprobe ip_masq_vdolive
#--------------
# Importante: Habilita IP forwarding. Esta deshabilitado por defecto
# en los Kernels 2.2.x
echo "1" > /proc/sys/net/ipv4/ip_forward
#
# NOTA: Esto es un ejemplo para la direccion de red interna 
# 192.168.0.x La mascara de subred es 255.255.255.0 o "24" bit
# Modifica esto si utilizas una direccion interna diferente.
#
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ
#
#--- fin del fichero
Antes de probarlo asegúrate de configurar todos los ordenadores en red privada de forma que su puerta de enalace (gateway) apunte a la direccion 192.168.0.1 (la máquina Linux con IP-Masquerading). Luego ejecuta el script como root en la máquina Linux con IP-Masquerading. Despues haz un ping desde una de las máquinas de tu red interna a una máquina de internet (p.e. ping 195.53.25.18)
Si esto funciona entonces IP-Masquerading está funcionando. Prueba tambien ping www.linuxfocus.org. Esto debería dar el mismo resultado que el ping anterior. Si no funciona comprueba el fichero /etc/resolv.conf en tus clientes. Debe existir en todos los ordenadores de tu red interna y tiene que contener los servidores DNS de tu proveedor de internet. Una vez que el ping funcione todo lo demás tambien funcionará (p.e. navegación web).

Ahora es el momento de cambiar tu configuración de forma que tu script /etc/rc.d/init.d/ipmasq se ejecute automáticamente cada vez que arranques la máquina Linux con IP-Masquerading. La mejor forma de hacer esto en mi opinión es editar el fichero /etc/rc.d/init.d/network (este fichero debería existir) y ejecutar /etc/rc.d/init.d/ipmasq AL FINAL de la sección start en el fichero init.d/network. Busca una expresión case y luego busca "start)".

Conclusión

Como has visto no es difícil configurar IP-Masquerading. Básicamente se reduce a habilitar IP forwarding y a un par de comandos ipchains. IP-Masquerading es una aplicación muy potente para pequeñas redes caseras, colegios, empresas pequeñas etc...

Para una información completa y detallada recomiendo la lectura de IP-Masquerading mini howto y el IPCHAINS-HOWTO.

Para usar IP-Masqueradig necesitas, claro está, una red perfectamente configurada. Esto no esta cubierto en este artículo. El artículo Redes caseras te proporcionará algo de vocabulario y tanto el Net 3 howto, como el The Network Administrator Guide explican en detalle como construir una red. Tengo planeado escribir a finales de año un artículo sobre redes pero no creo que quieras esperar tanto tiempo :-).