Guía de Administración de Redes con Linux | ||
---|---|---|
Anterior | Capítulo 11. Enmascaramiento IP yTraducción de Direcciones de Red | Siguiente |
Después de leer los capítulos sobre cortafuegos y auditoría IP, probablemente no sea sorprendente que los programas ipfwadm, ipchains, e iptables se utilicen para configurar también las reglas de enmascaramiento IP.
Las reglas de enmascaramiento son una clase especial de reglas de filtrado. Sólamente se puede enmascarar datagramas que se reciban por una interfaz y que vayan a ser encaminados por otra. Una regla de enmascaramiento se construye de forma parecida a una regla de encaminamiento de cortafuegos, pero incluyendo unas opciones especiales que le dicen al núcleo que debe enmascarar el datagrama IP. El programa ipfwadm utiliza la opción -m, ipchains utiliza -j MASQ, e iptables, -j MASQUERADE para indicar que los datagramas que cumplan las condiciones especificadas por la regla deben ser enmascarados.
Veamos un ejemplo. Una estudiante de informática de la Universidad Groucho Marx tiene unas cuantas máquinas en casa interconectadas en una pequeña red local ethernet. Ha decidido utilizar uno de los rangos privados de direcciones IP para su red. Comparte el lugar con otras estudiantes, todas las cuales tienen interés en usar Internet. Dado que las residentes no gozan de una economía especialmente boyante, no se plantean costearse una conexión permanente a Internet. En su lugar utilizan una conexión PPP telefónica. A todas ellas las gustaría poder compartir la conexión para chatear en el IRC, navegar por la Web y bajarse ficheros por FTP directamente a cada una de sus computadoras. El enmascaramiento IP es la respuesta.
Nuestra estudiante primeramente configura una máquina GNU/Linux para que se encargue del enlace telefónico y para que actúe como encaminador de la red local. La dirección IP que le asignan cuando se conecta telefónicamente no es importante. Configura el encaminador GNU/Linux para que haga enmascaramiento IP y usa uno de los rangos privados de direcciones IP para la red local: 192.168.1.0. Se asegura de que todas las computadoras de la red tengan como ruta por defecto una que apunte al encaminador GNU/Linux.
Todo lo que se necesita para que el enmascaramiento funcione en ese escenario son las siguientes invocaciones del programa ipfwadm:
# ipfwadm -F -p deny # ipfwadm -F -a accept -m -S 192.168.1.0/24 -D 0/0 |
# ipchains -P forward -j deny # ipchains -A forward -s 192.168.1.0/24 -d 0/0 -j MASQ |
# iptables -t nat -P POSTROUTING DROP # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE |
Para listar las reglas de enmascaramiento que se hayan creado, se utiliza la opción -l para el programa ipfwadm, exactamente como se dijo ya al referirnos a los cortafuegos.
Para listar la regla que creamos previamente se utiliza:
# ipfwadm -F -l -e |
# ipfwadm -F -l -e IP firewall forward rules, default policy: accept pkts bytes type prot opt tosa tosx ifname ifaddress … 0 0 acc/m all ---- 0xFF 0x00 any any … |
Para listar las reglas de enmascaramiento con ipchains, se utiliza la opción -L. Si listamos las reglas creadas previamente con ipchains, la salida sería algo como:
# ipchains -L Chain input (policy ACCEPT): Chain forward (policy ACCEPT): target prot opt source destination ports MASQ all ------ 192.168.1.0/24 anywhere n/a Chain output (policy ACCEPT): |
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 Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy DROP) target prot opt source destination MASQUERADE all -- anywhere anywhere MASQUERADE Chain OUTPUT (policy ACCEPT) target prot opt source destination |
Cuando se establece una nueva conexión, el software de enmascaramiento IP crea una asociación en memoria entre cada una de las máquinas implicadas. Tales asociaciones se pueden ver en cualquier momento inspeccionando el fichero /proc/net/ip_masquerade. Las asociaciones caducan tras un período de inactividad.
Los valores de máximo tiempo de inactividad se pueden configurar mediante ipfwadm. La sintaxis es:
ipfwadm -M -s <tcp> <tcpfin> <udp> |
con ipchains sería:
ipchains -M -S <tcp> <tcpfin> <udp> |
La implementación de iptables incluye unos valores por defecto mucho mayores que no permite cambiar.
Cada uno de esos valores representa un contador usado por el software de enmascaramiento IP y están dados en segundos. La siguiente tabla muestra un resumen de los contadores y sus significados:
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. |