next up previous contents
Siguiente: Funcionamiento de la pasarela Subir: Pasarela Anterior: Pasarela   Índice General

Inicialización de la pasarela

Para iniciar la pasarela se ejecuta el archivo bin/gateway. En la figura A.1 se muestra el comportamiento de este archivoA.2.
Figura A.1: bin/gateway
\includegraphics[height=8.5cm,width=12cm
]{gateway.ps}
Podemos ver que lo que hace es iniciar las reglas del firewall y después demonizar el proceso y ejecutar el método run que es el que se está ejecutando continuamente. Las reglas que se crean en el firewall son las siguientes:
# Generated by iptables-save v1.2.8 on Fri Aug 22 15:14:37 2003
*mangle
:PREROUTING ACCEPT [2813633:2352593165]
:INPUT ACCEPT [604797:294873430]
:FORWARD ACCEPT [2207569:2057553106]
:OUTPUT ACCEPT [491984:255531624]
:POSTROUTING ACCEPT [2697828:2312652436]
:NoCat - [0:0]
-A PREROUTING -j NoCat 
-A OUTPUT -p tcp -m tcp --dport 22 -j TOS --set-tos 0x10 
-A OUTPUT -p tcp -m tcp --dport 80 -j TOS --set-tos 0x08 
-A OUTPUT -p tcp -m tcp --dport 443 -j TOS --set-tos 0x08 
-A NoCat -i eth1 -j MARK --set-mark 0x4 
COMMIT
Esta es la tabla mangle y vemos los cinco ganchosA.3, en el PREROUTING tenemos -j(jump) NoCat y salta a la cadena NoCat que tenmos más abajo. En la cadena NoCat establece que los paquetes de la interfaz eth1 (interfaz local en este caso) sean marcados con la merca 0x4. Además se marcan más paquetes a la salida de la interfaz. Estas marcas (TOS - Type of Service) se utilizan para marcar los paquetes según si es tráfico masivo, o tráfico en tiempo real, etc... En algunos routers de la red se da cierta prioridad a los paquetes marcados.
# Completed on Fri Aug 22 15:14:37 2003
# Generated by iptables-save v1.2.8 on Fri Aug 22 15:14:37 2003
*nat
:PREROUTING ACCEPT [40799:4575484]
:POSTROUTING ACCEPT [4085:250171]
:OUTPUT ACCEPT [4083:250059]
:NoCat_Capture - [0:0]
:NoCat_NAT - [0:0]
-A PREROUTING -j NoCat_Capture 
-A POSTROUTING -j NoCat_NAT 
-A NoCat_Capture -s 192.168.1.0/255.255.255.0 -d 192.168.1.32 -p tcp -m 
tcp --dport 80 -j RETURN 
-A NoCat_Capture -s 192.168.1.0/255.255.255.0 -d 192.168.1.32 -p tcp -m 
tcp --dport 443 -j RETURN 
-A NoCat_Capture -p tcp -m mark --mark 0x4 -m tcp --dport 80 -j REDIRECT 
--to-ports 5280 
-A NoCat_Capture -p tcp -m mark --mark 0x4 -m tcp --dport 443 -j REDIRECT 
--to-ports 5280 
-A NoCat_NAT -s 192.168.1.0/255.255.255.0 -o eth0 -m mark --mark 0x1 -j 
MASQUERADE 
-A NoCat_NAT -s 192.168.1.0/255.255.255.0 -o eth0 -m mark --mark 0x2 -j 
MASQUERADE 
-A NoCat_NAT -s 192.168.1.0/255.255.255.0 -o eth0 -m mark --mark 0x3 -j 
MASQUERADE 
-A NoCat_NAT -s 192.168.1.0/255.255.255.0 -d 192.168.1.32 -p tcp -m tcp 
--dport 80 -j MASQUERADE 
-A NoCat_NAT -s 192.168.1.0/255.255.255.0 -d 192.168.1.32 -p tcp -m tcp 
--dport 443 -j MASQUERADE 
-A NoCat_NAT -s 192.168.1.0/255.255.255.0 -d 192.168.0.254 -p tcp -m tcp 
--dport 53 -j MASQUERADE 
-A NoCat_NAT -s 192.168.1.0/255.255.255.0 -d 192.168.0.254 -p udp -m udp 
--dport 53 -j MASQUERADE 
COMMIT
Esta es la tabla NAT, que servía para el enmascaramiento y la alteración de paquetes en general. Se definen dos cadenas: la cadena NoCat_Capture en el gancho de PREROUTING, y la cadena NoCat_NAT en el gancho de POSTROUTING. Las dos primeras filas de NoCat_Capture sirven para dejar pasar sin alteración los paquetes que vengan de la subred local y vayan dirigidos al serividor de autenticación (192.168.1.32), al puerto 80 (http) o al puerto 443 (https). Las dos siguientes líneas son para redirigir al puerto 5280 cualquier paquete que tenga la marca 0x4 y vaya dirigido al puerto 80 o 443, es decir, redirige todos los paquetes que vienen de la subred local (los hemos marcado antes en la tabla mangle), que han realizado una petición web, al puerto 5280 de la pasarela. A la salida de la interfaz nos encontramos con la cadena NoCat_NAT. Hay que tener en cuenta que un paquete que sale de la red local sin enmascaramiento, tendrá en la dirección origen una dirección privada, lo que quiere decir que cuando el destinatario del paquete intente devolver información al origen no podrá, al no disponer de una dirección adecuada. Teniendo en cuenta esto cualquier paquete que sale de la red local debe ser enmarcarado, y de esto se encarga el módulo netfilter, mediante la tabla NAT y el control de estado. El control de estado mantiene la información necesaria para saber cuando llega un paquete de la red externa quién fue el que solicitó dicha información. Una vez visto el funcinamiento veremos que hace la cdena NoCat_NAT:
# Completed on Fri Aug 22 15:14:37 2003
# Generated by iptables-save v1.2.8 on Fri Aug 22 15:14:37 2003
*filter
:INPUT ACCEPT [27040:29368878]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [24972:119077725]
:NoCat - [0:0]
:NoCat_Inbound - [0:0]
:NoCat_Ports - [0:0]
-A FORWARD -j NoCat 
-A NoCat -j NoCat_Ports 
-A NoCat -j NoCat_Inbound 
-A NoCat -s 192.168.1.0/255.255.255.0 -i eth1 -m mark --mark 0x1 -j ACCEPT 
-A NoCat -s 192.168.1.0/255.255.255.0 -i eth1 -m mark --mark 0x2 -j ACCEPT 
-A NoCat -s 192.168.1.0/255.255.255.0 -i eth1 -m mark --mark 0x3 -j ACCEPT 
-A NoCat -s 192.168.1.0/255.255.255.0 -d 192.168.1.32 -p tcp -m tcp --dport 
80 -j ACCEPT 
-A NoCat -s 192.168.1.32 -d 192.168.1.0/255.255.255.0 -p tcp -m tcp --sport 
80 -j ACCEPT 
-A NoCat -s 192.168.1.0/255.255.255.0 -d 192.168.1.32 -p tcp -m tcp --dport 
443 -j ACCEPT 
-A NoCat -s 192.168.1.32 -d 192.168.1.0/255.255.255.0 -p tcp -m tcp --sport 
443 -j ACCEPT 
-A NoCat -s 192.168.0.254 -d 192.168.1.0/255.255.255.0 -o eth1 -j ACCEPT 
-A NoCat -s 192.168.1.0/255.255.255.0 -d 192.168.0.254 -i eth1 -p tcp -m tcp 
--dport 53 -j ACCEPT 
-A NoCat -s 192.168.1.0/255.255.255.0 -d 192.168.0.254 -i eth1 -p udp -m udp 
--dport 53 -j ACCEPT 
-A NoCat -s ! 192.168.1.32 -i eth0 -p tcp -m tcp --dport 5280 -j DROP 
-A NoCat -j DROP 
-A NoCat_Ports -i eth1 -p tcp -m tcp --dport 5280 -j ACCEPT 
-A NoCat_Ports -i eth1 -p udp -m udp --dport 5280 -j ACCEPT 
OMMIT
# Completed on Fri Aug 22 15:14:37 2003
Por último esta era la tabla filter, donde se aplica el filtrado de paquetes, el camino que sigue un paquete es secuencial: si tiene correspondencia con la regla entonces se desecha o se acepta según marque la regla; en el caso de que no coincida pasa a ver la regla siguiente, si no coincide con ninguna regla se usa la política por defecto. Vemos que el filtrado se aplica en el gancho FORWARD, es decir a los paquetes que deben ser enrutados hacia algún destino. Lo primero que hace un paquete es saltar a la cadena NoCat y a partir de ahí el orden que sigue es el siguiente:
  1. Salta a Nocat_Ports:
    1. Si viene de la interfaz interna, con protocolo tcp y va al puerto 5280 -> Acepta.
    2. Si viene de la interfaz interna, con protocolo udp y va al puerto 5280 -> Acepta.
  2. Salta a Nocat_Inbound. No hay ninguna regla definida aún.
  3. Si viene de la red local interna y esta marcado con 0x1 -> Acepta.
  4. Si viene de la red local interna y esta marcado con 0x2 -> Acepta.
  5. Si viene de la red local interna y esta marcado con 0x3 -> Acepta.
  6. Si viene de la red local interna y va hacia el servidor de autenticación(puerto 80) -> Acepta.
  7. Si viene del servidor de autenticación(puerto 80) y va hacia la subred local-> Acepta.
  8. Si viene de la red local interna y va hacia el servidor de autenticación(puerto 443) -> Acepta.
  9. Si viene del servidor de autenticación(puerto 443) y va hacia la subred local-> Acepta.
  10. Si viene del servidor de nombres y va hacia la subred local-> Acepta.
  11. Si viene de la red local interna y va hacia el servidor de nombres(puerto 53,protocolo tcp) -> Acepta.
  12. Si viene de la red local interna y va hacia el servidor de nombres(puerto 53,protocolo udp) -> Acepta.
  13. Si el origen no es el servidor de autenticación, viene de la interfaz externa y va al puerto 5280 -> Rechaza
  14. Por último las que no hayan coincidido con nada -> Rechaza.
Ya hemos visto que cualquier paquete que entre por la interfaz interna de la pasarela será redirigido al puerto 5280., más adelante veremos como se atienden esas peticiones.
next up previous contents
Siguiente: Funcionamiento de la pasarela Subir: Pasarela Anterior: Pasarela   Índice General
Jesús Martín 2003-09-16
e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


SISTEMA DE CONTROL, TARIFICACIÓN Y ADMINISTRACIÓN DEL ACCESO A INTERNET DESDE REDES HETEROGÉNEAS

: Martín Ruiz, Jesús
: Ingeniería Telecomunicación
Contenido del proyecto: