Siguiente: Funcionamiento de la pasarela
Subir: Pasarela
Anterior: Pasarela
  Índice General
Para iniciar la pasarela se ejecuta el archivo bin/gateway.
En la figura A.1 se muestra el comportamiento de este
archivoA.2.
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:
- Enmascara los paquetes con las marcas 0x1, 0x2 y 0x3. Por ahora hemos visto que en la
tabla mangle no se usaban estas marcas.
- Las dos siguientes líneas son para enmascarar las peticiones web
que van hacia el servidor de autenticación.
- Las dos últimas líneas enmascarán las peticiones dirigidas al servidor de nombres.
# 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:
- Salta a Nocat_Ports:
- Si viene de la interfaz interna, con protocolo tcp y va al puerto 5280 -
>
Acepta.
- Si viene de la interfaz interna, con protocolo udp y va al puerto 5280 -
>
Acepta.
- Salta a Nocat_Inbound. No hay ninguna regla definida aún.
- Si viene de la red local interna y esta marcado con 0x1 -
>
Acepta.
- Si viene de la red local interna y esta marcado con 0x2 -
>
Acepta.
- Si viene de la red local interna y esta marcado con 0x3 -
>
Acepta.
- Si viene de la red local interna y va hacia el servidor de autenticación(puerto 80) -
>
Acepta.
- Si viene del servidor de autenticación(puerto 80) y va hacia la subred local-
>
Acepta.
- Si viene de la red local interna y va hacia el servidor de autenticación(puerto 443) -
>
Acepta.
- Si viene del servidor de autenticación(puerto 443) y va hacia la subred local-
>
Acepta.
- Si viene del servidor de nombres y va hacia la subred local-
>
Acepta.
- Si viene de la red local interna y va hacia el servidor de nombres(puerto 53,protocolo tcp) -
>
Acepta.
- Si viene de la red local interna y va hacia el servidor de nombres(puerto 53,protocolo udp) -
>
Acepta.
- Si el origen no es el servidor de autenticación, viene de la interfaz externa y va al puerto 5280 -
>
Rechaza
- 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.
Siguiente: Funcionamiento de la pasarela
Subir: Pasarela
Anterior: Pasarela
  Índice General
Jesús Martín
2003-09-16