Efectos Laterales y Beneficios Accesorios
Configuración del Núcleopara enmascaramiento IP
Configuración del enmascaramiento IP
Manipulación del Servicio de Nombres
Más sobre la traducción de direcciones de red
No hace falta tener una memoria excelente para recordar los días en los que sólo las grandes compañías se podían permitir disponer de un cierto número de máquinas conectadas por una red local. Frente a aquello, hoy los precios de la tecnología de red han bajado y bajado hasta producir dos consecuencias: La primera, que las redes locales sean algo común, presentes incluso en entornos domésticos. Es seguro que muchos de los lectores, usuarios de GNU/Linux, tendrán en su casa dos o más computadoras conectadas por algún tipo de ethernet. La segunda, que los recursos de red, y de forma especial las direcciones IP, hayan llegado a ser algo escasos y, aunque no están lejanos los tiempos en que eran gratuitos, sean ahora objeto de compraventa.
La mayor parte de la gente que disponga de una LAN deseará también disfrutar de una conexión a Internet que todas las máquinas de su red puedan utilizar al mismo tiempo. Las reglas del encaminamiento IP son muy estrictas respecto a la forma de manejar esta situación. Las soluciones tradicionales a este problema hubieran pasado por solicitar un conjunto de direcciones IP, probablemente un rango de clase C, dar a cada máquina de la LAN una dirección del rango asignado, y utilizar un entutador para conectar la LAN a Internet.
En el actual escenario de una Internet mercantilizada, esa solución saldría bastante cara. En primer lugar habría que pagar por el rango de direcciones asignado, en segundo lugar habría que pagar con toda probabilidad al Proveedor de Servicios de Internet (ISP) por el privilegio de disponer de una ruta hacia la red local en sus máquinas, de tal forma que el resto de Internet supiera cómo llegar a ellas. Esto puede sonar posible para algunas empresas, pero en una instalación doméstica los costes no estarían justificados.
Afortunadamente GNU/Linux proporciona una solución al problema, solución que utiliza un componente de un grupo de funcionalidades avanzadas de red llamadas en conjunto Traducción de Direcciones de Red (NAT). NAT es un conjunto de procedimientos para modificar las direcciones IP contenidas en las cabeceras de los datagramas IP mientras éstos viajan (al vuelo). Puede sonar extraño, pero mostraremos que se trata de la solución ideal al problema —real para muchos— que acabamos de plantear. 'IP masquerade' es el nombre que recibe un tipo de traducción de direcciones de red que permite que todas las máquinas de una red privada utilicen Internet contando con una única conexión (y una única dirección IP).
El enmascaramiento IP (en inglés «IP masquerading») permite utilizar un rango de direcciones privadas (reservadas) en la red local y que el encaminador GNU/Linux se encargue de hacer al vuelo ciertas traducciones de direcciones IP y puertos. Cuando le llega un datagrama IP de alguna máquina de la red local, se fija en el protocolo de nivel superior encapsulado en el mismo («UDP», «TCP», «ICMP», etc...) y modifica el datagrama para que parezca que fue generado por el propio encaminador (y recuerda qué ha sido modificado). A continuación saca el datagrama a Internet donde aparece generado por la única dirección IP pública del encaminador. Cuando la máquina destino recibe el datagrama cree que se ha originado en la máquina GNU/Linux, y responde a su dirección de Internet. Cuando el encaminador GNU/Linux recibe un datagrama en su interfaz de red conectada a Internet, busca en su tabla de conexiones enmascaradas en curso para ver si el datagrama pertenece a alguna máquina de la LAN y, si es así, deshace la traducción que hizo en el primer datagrama y reenvía este datagrama de respuesta a la máquina local.
En Figura 11-1 aparece un ejemplo sencillo.
Efectos Laterales y Beneficios Accesorios
La funcionalidad de enmascaramiento IP viene acompañada de su propio conjunto de efectos laterales, algunos son útiles y algunos pueden acabar siendo un problema.
Ninguna de las máquinas en la red detrás del encaminador enmascarador son jamás vistas directamente desde Internet. Consecuentemente, sólamente se necesita una dirección IP válida y rutable para permitir que todas las máquinas establezcan conexiones hacia Internet. Esto tiene un lado no tan bueno: ninguna de esas máquinas es visible desde Internet, y por lo tanto no se puede conectar directamente a ellas desde Internet. La única máquina visible en una red enmascarada es el propio encaminador enmascarador. Se trata de algo importante cuando se piensa en servicios como el correo o el FTP. Resulta de utilidad decidir qué servicios deberían ser provistos por la máquina enmascaradora y para cuáles debería actuar como proxy o tratar de algún otro modo especial.
Segundo, dado que ninguna de las máquinas enmascaradas son visibles, se encuentran relativamente protegidas de ataques del exterior. Eso puede simplificar (o eliminar) la necesidad de puesta a punto de funcionalidades de cortafuegos en la máquina enmascaradora. No se debe confiar demasiado en ésto, puesto que la red local estará únicamente tan segura como lo esté la máquina enmascaradora. Así, si la seguridad es un punto importante, se debería utilizar un cortafuegos para protegerla.
Tercero, el enmascaramiento IP tendrá cierto impacto negativo en el rendimiento de su red. En un escenario típico ese impacto negativo será probablemente insignificante. Si se tiene un gran número de sesiones enmascaradas activas puede ocurrir que se perciba cierta sobrecarga en la máquina enmascaradora que afecte negativamente al rendimiento de la red. El enmascaramiento IP implica un incremente considerable en el proceso que requiere cada datagrama comparado con el normalmente exigiría. Si piensa utilizar un 386SX16 como encaminador enmascarador para una conexión telefónica a Internet puede resultar, pero no espere demasiado si quiere usarlo como encaminador en su red corporativa a velocidades Ethernet.
Por último, ciertos servicios de red simplemente no funcionarán a través de enmascaramiento, o, al menos, no sin un poco de ayuda. Típicamente se trata de servicios que dependen de conexiones entrantes para funcionar, como ciertos tipos de Canales de Comunicación Directa (DCC), ciertas funciones del IRC, o algunos tipos de servicios de audio y vídeo multicast. Algunos de esos servicios disponen de módulos del kernel especialmente desarrollados para proporcionar una solución, y de ellos hablaremos dentro de un momento. Para otros es posible que no se encuentre soporte, así que se debe tener en cuenta que el enmascaramiento no es la solución adecuada en todas las situaciones.
Configuración del Núcleopara enmascaramiento IP
Networking options ---> |
Networking options ---> |
Módulo | Protocolo |
---|---|
ip_masq_ftp | FTP |
ip_masq_irc | IRC |
ip_masq_raudio | RealAudio |
ip_masq_cuseeme | CU-See-Me |
ip_masq_vdolive | Para VDO Live |
ip_masq_quake | Quake, de IdSoftware |
Esos módulos deben ser cargados manualmente mediante la orden insmod. Nótese que no pueden ser cargados por el demonio kerneld. Cada uno de esos módulos acepta como argumento el puerto en el que debe escuchar. Para el módulo RealAudio™ se podría poner:
# insmod ip_masq_raudio.o ports=7070,7071,7072 |
Los puertos especificados dependen del protocolo. El mini-HOWTO del enmascaramiento IP (IP masquerade mini-HOWTO), escrito por Ambrose Au, trata con más detalle los módulos asistentes y cómo configurarlos.
El paquete netfilter contiene módulos que realizan funciones similares. Por ejemplo, para que se hagan cargo del seguimiento de las sesiones FTP, se deben cargar los módulos ip_conntrack_ ftp y ip_nat_ ftp.o.
Configuración del enmascaramiento IP
# ipfwadm -F -p deny |
# ipchains -P forward -j deny |
# iptables -t nat -P POSTROUTING DROP |
Para listar la regla que creamos previamente se utiliza:
# ipfwadm -F -l -e |
tras lo que debe aparecer algo como:
# ipfwadm -F -l -e |
La “/m” indica que se trata de una regla de enmascaramiento.
# ipchains -L |
Cualquier regla en la que como objetivo aparezca MASQ es una regla de enmascaramiento.
Finalmente, para listar las reglas mediante iptables hay que usar:
# iptables -t nat -L |
Las reglas de enmascaramiento aparecen aquí también con MASQUERADE como objetivo.
Configuración de parámetros temporales
Los valores de máximo tiempo de inactividad se pueden configurar mediante ipfwadm. La sintaxis es:
ipfwadm -M -s <tcp> <tcpfin> <udp> |
ipchains -M -S <tcp> <tcpfin> <udp> |
La implementación de iptables incluye unos valores por defecto mucho mayores que no permite cambiar.
Nombre | Descripción |
---|---|
tcp | Tiempo de caducidad de la sesión TCP. Cuánto puede estar inactiva una conexión TCP antes de que la correspondiente asociación sea eliminada. |
tcpfin | Tiempo de caducidad de TCP tras un FIN. Cuanto permanece una asociación tras la desconexión de la correspondiente conexión TCP. |
udp | Caducidad de sesión UDP. Tiempo máximo de inactividad de una «conexión» UDP antes de que la asociación correspondiente sea eliminada. |
Manipulación del Servicio de Nombres
El manejo de las resoluciones de nombres desde las máquinas de una red local enmascarada ha representado tradicionalmente un problema. Hay dos maneras de encajar el DNS en un entorno con enmascaramiento. Se puede instruir a cada máquina para que utilice el mismo servidor DNS que utilice el encaminador GNU/Linux y dejar que el enmascaramiento IP haga su trabajo. Otra alternativa es ejecutar un servidor de nombres de caché en la máquina GNU/Linux y hacer que cada una de las máquinas en la LAN tenga configurada a la máquina GNU/Linux como su servidor DNS. Aunque se trata de una configuración más agresiva, es seguramente mejor porque reduce el volumen de tráfico DNS hacia el enlace con Internet y es ligeramente más rápido para la mayor parte de las peticiones, dado que serán respondidas utilizando la caché.
0 comentarios:
Publicar un comentario