Inicio Proyectos Blog CambiosRecientes

Túneles GRE asimétricos

Este documento fue escrito originalmente en Julio de 2000 y se perdió junto con la máquina que lo alojaba. Gracias a archive.org y a Alex Ramos lo tenemos de vuelta.

Lo podría reeditar, poner acentos y demás, pero lo dejo así por razones históricas ;)


  
http://demasie.aditel.org/docs/tuneles-gre-asimetricos.txt
		http://spisa.act.uji.es/~peralta/

Autor: Luis Peralta / jaxp Fecha: 6 Julio 2000 Ultima actualizacion: 13 Julio 2000 TODO: sustituir arp por ip neigh

Definimos tunel asimetrico como aquel en el que las dos direcciones internas del tunel no pertenecen a una red privada, sino a la propia Internet. Esto nos va a permitir manejar ip's de una red cualquiera en otra.

Tenemos el siguiente esquema:

  /------------------\      Internet         /----------------\
  |demasie.aditel.org| < - - - - - - - - - > |spisa.act.uji.es|
  \------------------/                       \----------------/
  eth0: 194.224.81.16                        eth1: 150.128.81.246

Y queremos que una de las ip's de la red de demasie (194.224.81.0) sea una ip mas de spisa.

Montamos el tunel:

 demasie-> # ip tunnel add macho mode gre local 194.224.81.16 remote
             150.128.81.246
 spisa->   # ip tunnel add hembra mode gre local 150.128.81.246
             remote 194.224.81.16

Y le asociamos a macho y hembra dos ip's de la red de demasie:

 demasie-> # ip addr add 194.224.81.23 dev macho
 spisa->   # ip addr add 194.224.81.22 dev hembra

Levantamos los devices:

 demasie-> # ip link set macho up
 spisa->   # ip link set hembra up

Añadimos rutas:

 demasie-> # ip route add 194.224.81.22 dev macho
 spisa->   # ip route add 194.224.81.23 dev hembra

Tenemos que jugar con el arp en la red de demasie, ya que queremos que el trafico a 194.224.81.22 vaya a spisa:

 demasie-> # arp -s 194.224.81.22 52:54:05:F5:FC:EB (MAC de demasie) pub

Y con esto hecho tenemos el tunel montado. Todo el trafico a 194.224.81.22 ira a spisa y esta podra responder. El esquema nos queda:

  /------------------\      Internet         /----------------\
  |demasie.aditel.org| < - - - - - - - - - > |spisa.act.uji.es|
  \------------------/                       \----------------/
  eth0: 194.224.81.16                        eth1: 150.128.81.246
  macho: 194.224.81.23                       hembra: 194.224.81.22

Cuando llegue un paquete para 194.224.81.22 en la red de demasie, este enrutara el paquete a traves del tunel y spisa respondera a traves de eth1. Que puede ser lo que no queramos en realidad, puesto que en caso de que alguno de los routers que atravesemos tenga la opcion de evitar el "source routing" por motivos de seguridad, el tunel fallara y solo sera accesible desde la red original. Es lo que se llama ruta triangular:

194.224.81.22  - - - - - > demasie - - - > - - - - - > - - - >  spisa-tunel
                              ^                                  /
                              |                                /
                               \                             /
                                 \- < - - spisa-eth1 <-  - /

Para evitar que pase esto tendremos que usar las facilidades de "policy routing" del kernel:

 spisa-> # ip rule add from 194.224.81.22 table 13
 spisa-> # ip route add default via 194.224.81.23 table 13

Ahora hemos desmontado el triangulo y nos queda la cosa:

194.224.81.22  - - - - - > demasie - - - > - - - - > - - - - >  spisa-tunel
                              \ - - - - - - < - - - - < - - - - - - /