8 de diciembre de 2006

Introducción a túneles GRE

Hoy es tema de todos los días, para los que trabajamos en el ámbito del networking, la referencia a las VPNs. Desde grandes empresas con miles de VPNs, hasta pequeñas PyMEs con una o varias VPNs, el tema está al orden del día.
Cuando abordamos el tema VPNs subyacen detrás dos conceptos:
  • La red virtual, a la que también llamamos túnel, que emula una conexión punto a punto entre 2 nodos conectados a Internet.
  • La encripción de los datos que circulan sobre esa red virtual para darle seguridad al intercambio privado de información sobre una red pública.
Como siempre, hay protocolos involucrados en ambos aspectos. Protocolos de tunelización y protocolos de encripción. Para la tunelización uno de los protocolos más utilizados (quizás porque es el que implementa Microsoft) es PPTP (Point-to-Point Tunneling Protocol). PPTP de hecho utiliza GRE para generar los túneles.
¿Qué es GRE?
Genereric Routing Encapsulation (GRE) es un protocolo originalmente desarrollado por Cisco Systems que se ha convertido en un estándar de la industria definico en las RFC 1701, 1702 y 2784. Es un protocolo de túnel, es decir, que permite transportar paquetes de una red a través de otra red diferente. Por ejemplo, permite establecer un enlace de la red 10.0.0.0 a través de la red 172.16.0.0.

¿Cuándo utilizar GRE?
  • Cuando, por ejemplo, es necesario trabajar con un protocolo que no es enrutamble como NetBIOS o con protocolos enrutables diferentes de IP a través de una red IP. Se puede constituir un túnel GRE para trabajar con IPX o AppleTalk sobre una red IP.
  • Cuando debemos conectar dos puntos remotos de una misma red (antes mencioné el ejemplo de la red 10.0.0.0) y para ello necesitamos utilizar enlaces que pertenecen a una red diferente (en el ejemplo, la 172.16.0.0).
¿Cómo se configura un túnel GRE?Configurar el túnel GRE es en principio una tarea relativamente sencilla. Para revisar los comandos debemos considerar ambos extremos del enlace a través del cual debe operar el túnel:
Router A
interface Ethernet0/1
ip address 10.2.2.1 255.255.255.0
!

interface Serial0/0
ip address 172.16.4.1 255.255.255.252
!
interface Tunnel0
ip address 10.10.10.2 255.255.255.252
tunnel source Serial0/0
tunnel destination 172.16.4.2
!

Router B
interface FastEthernet0/1
ip address 10.1.1.1 255.255.255.0
!
interface Serial0/0
ip address 172.16.4.2 255.255.255.252
!
interface Tunnel0
ip address 10.10.10.1 255.255.255.252
tunnel source Serial0/0
tunnel destination 172.16.4.1
!

En este sencillo ejemplo se ha creado una interfaz virtual en cada router: las interfaces túnel. Estas interfaces utilizan su propia red, comportándose como un enlace punto a punto. El tráfico de este túnel será físicamente enviado a través de las interfaces seriales.
De este modo, entre ambos routers aparecerán ahora 2 rutas posibles: la ruta a través de las interfaces seriales y la ruta a través de la interfaz túnel. Este túnel puede transportar tanto tráfico no ruteable como que utilice otros protocolos enrutados.
En el caso del ejemplo el túnel se realiza sobre un enlace privado que podría pertener, por ejemplo, a un red frame-relay. También puede realizarse sobre Internet; en este caso se puede utilizar algún protocolo de encripción como IPSec para brindar privacidad y seguridad.
Tenga en cuenta que la configuración es bastante sencilla. Lo realmente importante aquí es el diseño: definir con claridad los puntos de inidio y fin del túnel, y el tráfico que se va a enviar a través del mismo.
Las interfaces túnel son interfaces virtuales que son tratadas por Cisco IOS como una interfaz más:
RouterB# sh ip int brief
Interface . . . . IP-Address .OK? .Method .Status . . . Protocol
FastEthernet0/0 . 10.1.1.1 . .YES .manual .up . . . . . up
Serial0/0 . . . . 172.16.4.2 .YES .manual .up . . . . . up
Serial0/1 . . . . unassigned .YES .unset . admin down . down
Tunnel0 . . . . . 10.10.10.1 .YES .manual .up . . . . . up

Consideraciones adicionales
  • GRE toma un paquete ya existente, con su encabezado de capa de red, y le agrega un segundo encabezado de capa de red, lo que implica que el paquete que se envía a través del túnel es de mayor longitud por lo que puede ocurrir que esté excediendo la longitud permitida en la interfaz física. Esto provoca el descarte de ese paquete.
    Para solucionar este inconveniente se puede aplicar el comando ip tcp adjust-mss 1436 sobre la interfaz túnel para asegurarse de que no se supere el MTU permitido sobre el enlace.
  • El enlace sobre el túnel GRE no requiere ninguna información de estado, por lo que puede ocurrir que un extremo del túnel se encuentre en estado de down y el otro continúe presentándose como up.
    Para evitar esta situación habilite keepalive en cada extremo del túnel. De este modo cada extremo enviará mensajes de keepalive sobre el túnel y si un extremo no recibe los mensajes enviados por el otro entonces pasará al estado de down.
Recuerde que GRE no provee encriptación de la información. No constituye propiamente una VPN segura.
¿Tenés alguna información adicional para aportar en este tema....?
Perfecto!!!! agregá un comentario con el detalle.
Muchas gracias.
Oscar Gerometta

45 comentarios:

  1. Luego de especificar el origen y destino del tunnel debe aparecer el comando
    Tunnel GRE

    para habilitar el Tunnel GRE
    o me equivoco???

    Saludos

    HP

    ResponderEliminar
  2. Duda,

    si hago un trace desde el origen al destino¿debiera ver los saltos de la ip interna de la VPN .
    Con mi compañeros decimos que no, sin embargo se ve un salto en una IP interna del proveedor de la VPN ..
    Saludos

    HP

    ResponderEliminar
  3. Tengo una duda sobre el tunel Gre.

    imaginemos 2 tuneles establecidos entre 2 equipos.

    Si por ejemplo tenemos un caudal de 50Mb entre estos 2 tuneles, si superamos este caudal o lo mantenemos al 100% se podria ocasionar una desconexion o corte en el tunel por utilizar el 100% del caudal?
    En este caso ¿Hay alguna forma de dejar al menos un 10% de trafico para poder mantener el tunel sin cortes?

    Un Saludo.

    ResponderEliminar
  4. Estimado.
    Al crear un túnel GRE no se le asigna un ancho de banda, por lo que no es posible que un túnel supere el ancho de banda de la interfaz física en la que opera.
    Por otra parte, esto sería físicamente imposible.
    Ahora bien, si la pregunta está referida a si es posible aplicar QoS a un túnel GRE, la respuesta es si, es posible.

    ResponderEliminar
  5. La configuración de tuneles se pueden manejar sobre ambientes emulados como packet tracer?, es necesario codigo adicional al expuesto en este articulo?

    ResponderEliminar
  6. Pedro.
    No he probado si PT soporta configuración de GRE. Supongo que si incluye los comandos ha de soportarlo. Ciertamente si se puede trabajar sobre dynamips, ya que se trata de IOS.
    Respecto de los comandos de configuración, son los que se mencionan en el post. Suponen que hay, por supuesto, una configuración básica de ambos dispositivos y conectividad entre los extremos del túnel.

    ResponderEliminar
  7. Estimado. Necesito material con información acerca de GRE e IPSEC, pero mas detallada, es decir, como operan, fundamentos, formatos de paquete,etc. Esto apra preparar mi proyecto de titulo que trata acerca de VPN's. Gracias de antemano.

    ResponderEliminar
  8. En internet hay abundante información tanto sobre GRE, sobre IPSec, como sobre VPNs en general.
    Un punto para comenzar puede ser: http://www.cisco.com/en/US/products/ps5743/Products_Sub_Category_Home.html

    ResponderEliminar
  9. hola a to2 en esta configuración ... se supone que no hay ningun protocolo de enrutamiento.
    ¿mediante el tunel se pueden comunicar la ethernet del router A con la ethernet del router B?
    ¿cual es la función del túnel gre?
    desde ya muchas gracias x la respuesta

    ResponderEliminar
  10. Como se dice al inicio del post, GRE "es un protocolo de túnel, es decir, que permite transportar paquetes de una red a través de otra red diferente."
    Es independiente de los protocolos de ruteo, aunque, sin duda, supone que en la tabla de enrutamiento tenemos una entrada que defina un camino para alcanzar el punto de destino del túnel.

    ResponderEliminar
  11. Hola que tal, mira que tengo 3 router conectados rt1 conecta con rt2 y a su vez rt2 conecta rt3 todos con VPN -ipsec RT2 es el nodo principal. Es posible con GRE ver las redes que estan en rt3 desde rt1?? saludos.

    ResponderEliminar
  12. Estimado.
    Las VPNs IPSec, como su nombre lo indica, generan una topología lógica, no física. Ante todo hay que analizar el diseño de esas VPNs para ver cómo están trabajando, pero en teoría las redes debieran verse a través de esas VPNs.

    ResponderEliminar
  13. Curiosamente en la configuracion basica por windows me esta solicitando la configuración correcta de este protocolo pero igual me dice que no esta configurado. Que podra ser si la configuración se esta haciendo entre windows server y un xp directo solamente entre ellos hay un router del proveedor de servicios y un router Dlink

    ResponderEliminar
  14. Amigo.
    Mi conocimiento de ambientes Microsoft es el de un usuario. En este tema debieras consultar a alguien con conocimientos en esos sistemas operativos.

    ResponderEliminar
  15. Hola, que tal, una consulta, a través de un tunnel gre puedo traspasar VLAN como si fuera un trunk ???

    Agradecería tu respuesta.

    Saludos,

    ResponderEliminar
  16. Daniel.
    Un túnel GRE está en capa 3, mientras que los troncales operan en capa 2. Esto significa que cuando el paquete ingresa en el túnel GRE ya no tiene el encabezado de la trama que era el que definía el troncal.
    Ahora bien, dependiendo de la necesidad sería posible hacerlo. Pero la pregunta es... ¿necesitás transportar el troncal sobre un enlace de capa 3, o puede resolverse de un modo más simple?

    ResponderEliminar
  17. Hola Oscar, te comento, lo que necesito es pasar un troncal sobre un enlace Layer 3, ya que son vlan de una plataforma de seguridad que no pueden estar ruteadas, sino se pierde la alta disponibilidad, por lo cual te hacia esa pregunta, si se puede realizar con un tunel GRE o tu crees que sería mejor usar un Tuner L2TP ???

    Gracias por tu prota respuesta.

    ResponderEliminar
  18. Daniel.
    Hay que ver la implementación en general para opinar adecuadamente, pero en principio, si puedes resolverlo con un túnel L2TP, es más simple.

    ResponderEliminar
  19. ... Más preguntas.
    Cunado trato de hacer una tarea programada por medio del comando rasradial me genera el error 806 el cuan hace referencia a el protocolo GRE. como puedo solucionar este detalle?
    Saludos.

    ResponderEliminar
  20. Amigo.
    No conozco un comando rasradial en IOS. No puedo ayudarte.

    ResponderEliminar
    Respuestas
    1. Agradezco su valioso tiempo al leer mi pregunta.
      Saludos.

      Eliminar
  21. Hola Oscar,
    estoy preparando el CCNA y tengo algunas dudas en el tema de "tuneles" GRE, te comento:

    En tu articulo dices que existen "protocolos de tunelización y protocolos de encripción", ¿cual seria un ejemplo de protocolos de encripctaión? IPsec??

    "GRE no constituye propiamente una VPN.", ¿una red VPN seria un tunel GRE sobre IPsec??

    Al definir los puntos de inicio(source) y fin(destination) del túnel, podemos usar(la misma en ambos extremos del tunel claro) tanto la serial(en tu ejemplo), una loopback o la interfaz LAN,¿es correcto?

    Gracias, saludos oscar:D

    ResponderEliminar
  22. Federico
    La distinción que mencionás apunta a descatar que tunelizado y encriptación son procedimientos diferentes e independientes. Para la encriptación debemos utilizar algoritmos de cifrado como 3DES o AES.
    IPsec no es propiamente un protocolo. Es un procedimiento que permite articular un conjunto de protocolos de autenticación, encriptación e integridad para definir un enlace seguro.
    GRE es sólo un protocolo de tunelizado. Una VPN es un conjunto de enlaces virtuales que operan sobre una única red física compartida. Una VPN se puede armar tanto utilizando VLANs como IPSec.
    Ahora bien, ten presente que hasta las últimas revisiones que he realizado, GRE no está incluido en el examen de certificación CCNA.

    ResponderEliminar
  23. es correcta esta configuracion (alternativa a usar la serial como inicio/fin del tunel)?

    Router A
    interface f0/0
    ip address 10.2.2.1 255.255.255.0
    !
    interface Serial0/0
    ip address 172.16.4.1 255.255.255.252
    !
    interface Tunnel0
    ip address 10.10.10.2 255.255.255.252
    tunnel source f0/0
    tunnel destination 10.2.2.1

    ip route 10.1.1.0 255.255.255.0 Tunnel0

    .......y la configuracion analoga en RouterB?

    al hacer un "sh ip int br" veo k el protocolo del interfaz tunnel0 no se levanta ¿Donde puede estar el error?

    Gracias Oscar, saludos:D
    PS:Me referia al CCNAsec, no al CCNA

    ResponderEliminar
  24. Fede
    En la configuración que presentás colocás como IP destino del túnel la misma IP del F0/0. Esto no va a funcionar. La IP destino es la IP en la que termina el túnel.
    En segundo lugar, si utilizás las interfaces LAN, tenés que asegurarte que ambos dispositivos tengan ruta hacia la LAN del dispositivo destino, de lo contrario no hay manera de que se puede "encontrar" la IP destino del túnel.
    Por último, no vas a ver que la interfaz de túnel levante hasta que pueda negociar el mismo con el otro extremo.
    Si vas a probar esto, hacelo sobre IOS, no sobre simuladores.
    Respecto de CCNAsec, GRE tampoco es contenido de esa certificación.

    ResponderEliminar
  25. Hola Oscar,

    Ayer implente un tunnel entre ubicaciones, pero hubo un dato curioso, cuando lo implemente en uno de los lados, me aparecia el ancho de banda como si estuviera saturado. El tx y rx en el sh interfaces mostraba 255/255, por lo que me pareció extraño, asi que le puse un Bandwidth en el tunnel del total del enlace sobre el cual estaba haciendo el tunnel y solo asi bajo.

    La pregunta es, que pasa si no pongo Bandwidth en el tunnel? Esta saturacion que pude observar es una saturacion real? O solo estetica? Y eso afecta el desempeño del tunel en general?

    Slds y muchas gracias!

    ResponderEliminar
    Respuestas
    1. Hans
      El comando bandwidth no es un comando operativo sino que solamente establece un parámetro de referencia para el cálculo de estadísticas y de algunos algoritmos (enrutamiento o QoS).
      No es "estética". Impacta realmente en las estadísticas y la operación de los protocolos que lo tienen en cuenta. Pero no tiene ningún efecto directo sobre la capacidad real de las interfaces o los enlaces.
      Sugiero revises este post: http://librosnetworking.blogspot.com.ar/2006/07/para-qu-sirve-el-comando-bandwidth.html

      Eliminar
    2. Muchas gracias por la respuesta Oscar y muchas felicidades por este excelente Blog.

      Eliminar
  26. Excelente aritulo una vez mas. Sin dudas un referencia a la hora de buscar informacion en la web. Muchas gracias.

    ResponderEliminar
  27. Hola Sr. Oscar Gerometta

    Estoy empapándome de este tema de VPN, pero tengo casi nada de experiencia en esto, solo unas vpns que llegue a levantar con pptp. Lo que pasa es que quiero unir en la universidad 2 sitios remotos (campus) y el primer problema es que las redes se diseñaron una copia de la otra, explico breve; llega el ISP al router en un puerto GI0/0 con la ip que da la salida a internet, y en el puerto GI0/1 estan configuradas las subinterfaces para las vlans y red nativa claro. Quiero unir la Vlan 5 172.16.0.1 /16 con la Vlan 5 172.16.0.1 /16 que se encuentra remoto, en esta vlan están los servidores y se ocupa expandir el domain controller hacia el sitio remoto entre otros servidores. Como ve el primer problema que según yo veo es que no debe de hacer los mismos segmentos y mascaras, primero quería usar IPSEC, pero resulta que los routers son modelo 2920 y según lo que leí y me comentaron no lo soportan y un colega me comentaba que se tiene que hacer con GREP utilizando rsa como cifrado. Y pues quería validar con usted si es posible unir con GREP estas 2 VLANs que son iguales, mi intensión es cambiar el segmento de red en el lugar remoto a otro por ejemplo 172.18.0.1 ya que es pequeña la red de ese lado para que no sean las mismas, ya que leí documentación cisco que aunque es posible unir 2 sitios iguales en su red usando overlapping y nateando como dicen. Pero no se recomienda para nada. Y además otra duda es si podría reservar un ancho de banda de 2 megas para el túnel con GREP, supongo que con alguna política QoS pero no lo tengo claro.
    Solo tengo 2 puertos como especifique arriba un GI 0/0 y otro GI0/1, uno para la salida a internet ISP y el otro para la conexión de las redes locales , será posible hacer esto sin usar ninguna otra interfaz del router? , ya que las 2 están en uso.
    Es mucho lo que desconozco como puede apreciar, agradecería su opinión sobre esto, es que de tanto que he leído no estoy seguro como llevarlo. Y no tengo los equipos como para hacer pruebas lo que me dificulta más ya que solo estoy simulando con GNS3 o packet tracer

    ResponderEliminar
  28. Edgar
    La situación que planteas tiene múltiples soluciones posibles, cada una con sus limitaciones y requerimientos. Definir cuál es el modo más conveniente de hacerlo depende de múltiples factores, particularmente si tienes presente que por lo que dices, sobre este enlace debe circular tráfico de servicios específicos.
    Pero en principio, te adelanto algunos temas.
    * Los Cisco 2900 soportan IPsec.
    * Una solución puede ser GRE, pero si se requiere seguridad hay que implementarla adicionalmente.
    * Encriptación RSA es muy robusta, pero intensiva en procesador. Generalmente se utiliza solamente para asegurar el intercambio de credenciales.
    * En el caso de un Cisco 2900 la cantidad de puertos disponibles se puede ampliar agregando módulos de interfaces.
    * La limitación de ancho de banda se hace utilizando QoS. ¿Qué herramienta? dependerá de los objetivos y las aplicaciones que circulen.
    * Túneles y NAT son herramientas comunes a utilizar en estas situaciones, pero en diferentes combinaciones según posibilidades y objetivos. Hay que tener presente que NAT no es transparente para todas las aplicaciones y puede generar conflictos.

    ResponderEliminar
    Respuestas
    1. Gracias Sr. Gerometta por su pronta respuesta, ya estoy un poco mas tranquilo y he decidido a implementar el tunel GRE con IPSEC, para asegurar la conexión. Ya vi ademas que se utiliza un interfaz logica y no requeriria ningun puerto adicional en los routers. Su informacion me ayudo mucho. Ahora solo tengo que ver como conecto la VLAN 5 una vez que el tunel este levantando y omitir las demas VLANs, no se si se verian todas las demas al abrir el tunnel, lo cual no deseo ya las demas tienen las mismas ips y solo le voy a cambiar el segmento a la vlan 5. para que no sean iguales, no quiero hacer eso con todas las demas vlans del sitio remoto.
      Muchas gracias

      Eliminar
    2. Humberto.
      Puedes utilizar una ACL para definir cuál es el tráfico que quieres permitir dentro del túnel. La ACL que configures dependerá por supuesto del túnel que finalmente utilices para establecer la conexión.

      Eliminar
    3. Hola Sr. Gerometta, ya pude levantar el Tunnel y ya veo la Vlan que quiero con un ip route que apunta hacia el segmento de vlan a traves de la interfaz logica remota.
      Ahora solo encontre el detalle de que el Router (2901)no me soporta el comando crypto isakmp policy 1 por que no tiene la licencia de Security la cual trae soporte IPSec. cuando le doy show ver. solo me indica que tiene ipbasek9.
      ipbase ipbasek9 Permanent ipbasek9
      security None None None
      uc None None None
      data None None None

      Entonces mi pregunta es si en caso de que no se quiera adquirir la licencia de security hay forma de asegurar el tunnel de otra forma usando otros metodos?, y de no ser asi para avisar que se requiere.

      Saludos y Muchas gracias de antemano

      Eliminar
    4. Edgar.
      Si quieres implementar seguridad (en este caso, encriptación es seguridad), necesitas una licencia security de tu versión de IOS.

      Eliminar
  29. Buen dia Oscar.

    De antemano gracias por la informacion. tengo configurado entre dos core switch el tunnel GRE, estoy intentando pasar trafico de video a traves del tunnel y no responde, verificando la teoria, el tunnel se establece entre una conexion PPPoE, el MTU para PPPoE corresponde a 1492 bytes, pero cuando busco el valor MTU en windows encuentro que el paquete debe ser fragmentado en 1449

    Pinging 10.165.2.160 with 1449 bytes of data:
    Packet needs to be fragmented but DF set.
    Packet needs to be fragmented but DF set.

    que debo hacer para modificar el valor MTU en el tunnel?

    gracias.

    ResponderEliminar
    Respuestas
    1. Estimado.
      Sugiero que revises el siguiente documento de Cisco referido a la implementación de MTU en túneles, para que tengas una visión abarcativa del tema:
      http://www.cisco.com/en/US/tech/tk827/tk369/technologies_white_paper09186a00800d6979.shtml

      Eliminar
  30. Hola buenos dias Ing. Oscar.

    Me gustaría saber que tipo de dispositivos y que modelos pueden crear vpns ya que soy nuevo en este tema, también si se requiere algún tipo de licenciamiento.

    Saludos

    ResponderEliminar
    Respuestas
    1. Osvaldo.
      El tema tal como lo planteás es tremendamente amplio. En primer lugar supongo que estás buscando implemetar una VPN con seguridad (un túnel GRE, podría decirse que implementa VPNs pero sin seguridad en ese caso).
      Adicionalmente, aún cuando hables de seguridad, hay 2 protocolos básicos a considerar para VPNs aseguradas: IPSec y SSL. Cada uno de ellos permite implementar una variedad de soluciones diferentes.
      En lo que se refiere a dispositivos, dependiendo del tipo de VPN y las funcionalidades que se buscan, pueden definirse típicamente en routers ISR o en firewalls. Pero también es posible hacerlo, p.e. desde un access point.
      Como comprenderás el tema de licenciamientos que mencionás tiene múltiples variantes de acuerdo al tipo de VPN y la modalidad en que se implemente. En general considerá que si se trata de IOS, puede ser que necesites al menos una licencia de Security (como discutimos más arriba), y dependiendo del tipo de VPN y la cantidad, licencias adicionales por cantidad de usuarios.
      Sugerencia: si sos nuevo en esto, buscá el asesoramiento de un técnico especializado en este tema para que te ayude a definir qué VPN son las que más se ajustan a tu necesidad y el modo de levantarlas.

      Eliminar
  31. Estoy intentando pasar por un tunel gre sobre ipsec ttráfico multicast. He conseguido que funcione, pero el tráfico multicast no hay manerra que llegue de un extremo al otro del tunel ipsec. Alguna idea que me pueda ayudar?
    Muchas gracias.

    ResponderEliminar
    Respuestas
    1. Ruper.
      Para que circule el tráfico de multicast, no sólo tienes que tener tus túneles GRE operativos, también deben habilitar el enrutamiento de tráfico multicast. ¿Verificaste el enrutamiento multicast?

      Eliminar
  32. Buenos dias Ing.Oscar

    Una pregunta tengo un RT cisco 2901, pero no me permite crear VLANs, como puedo solucionar esto?

    Gracias de antemano

    Saludos

    ResponderEliminar
    Respuestas
    1. Ricardo
      En realidad sería necesario saber qué es lo que estás haciendo para intentar crear VLANs en el router para poder responderte.

      Eliminar
  33. Puedo anunciar una red publica detras de un tunnel gre ?' o tengo que hacer nat ??

    ResponderEliminar
    Respuestas
    1. No me queda claro a qué te refería con "anunciar una red pública detrás de un túnel GRE".
      ¿Publicar una ruta? ¿Con BGP?, si es así ¿dónde termina ese túnel GRE y por qué habría que implementarlo?

      Eliminar

Gracias por tu comentario.
En este blog los comentarios están moderados, por lo que su publicación está pendiente hasta la revisión del mismo.