Crear una VPN site to site entre dos oficinas con Mikrotik y fibra

Por si a alguien le sirve os mandamos esto que hicimos el otro día en un cliente. Evidentemente basado en el artículo anterior de routers Mikrotiks (alucinante la relación calidad/opciones/precio) sobre fibra (Movistar en este caso).

La idea es conectar dos oficinas (o casas o casa y oficina) con  un túnel por dos motivos principales:
1) Que el tráfico entre ambos sitios, al ir por Internet, esté cifrado y seguro.
2) Que se vean equipos de ambas redes (en nuestro caso era para teléfonos VoIP).

Por eso lo de site to site. No era para el caso de un trabajador desde cualquier hotel conectándose a la sede ya que eso es más sencillo (servidor openvpn en equipo o aparato como el Mikrotik, apertura de puerto y cliente VPN en el usuario). Ese esquema lo solemos hacer con Zentyal pero es sencillo con Mikrotik también.

En modo sencillo hay muchos métodos de hacer un túnel VPN, principalmente PPTP, IPSEC y OpenVPN. Sin ser técnico PPTP es más antiguo y menos compatible con otros aparatos, y además cifra TODO el tráfico. OpenVPN suele ser más de software, los aparatos de diversas marcas suelen usar IPSEC y OpenVPN a veces tiene algo de incompatibilidad o latencia…aunque está creciendo a pasos enormes. El estándar del mercado para los aparatos suele ser IPSEC, puedes elegir qué cifrar (lo veréis en el artículo) y te permite conectar aparatos de varias marcas. Así que optamos por IPSEC.

  Estos son los pasos en los Mikrotik. Necesitáis una IP fija en la WAN de cada sitio y saberlo, y saber las LAN de tu interfaz.

Por ejemplo:
Oficina 1.   WAN: 1.1.1.1      LAN: 192.168.2.1
Oficina 2.  WAN: 1.1.2.1      LAN: 192.168.3.1

Cuidado en la explicación donde ponemos dirección (una ip) o red (un conjunto de ips).

  • Primero hay que crear en cada router los “vecinos” (Peers). Decirle al aparato que hay otro lado en el túnel.Para ello vasMkPeer a IP-IPSEC- Pestaña Peers.
    Ahí tenéis que poner la IP WAN de la otra oficina (en nuestro caso en Oficina1 ponemos la 1.1.2.1 que es la de la 2 y viceversa). En la imagen la IP es otra porque es de otro ejemplo.
    También tenéis que elegir una palabra clave (en ambos routers la misma). Respecto a los algoritmos y demás podéis dejarlo por defecto o cambiarlo pero deben coincidir en ambos lados lo mismo.
    Os conviene marcar “Send Initial Contact” por si se cae el túnel para que ambos lados puedan llamarse.
  • Luego hay que decirle a cada router qué tráfico es el considerado “interesante”. Qué tráfico vamos a meter por el túnel y por lo tanto qué tráfico levantará dicho túnel.
    Para ello vamos a IP-IPSEC- Pestaña Policies.
    Ahí creamos una nueva (tantas como queramos). En la IP de destino primera debemos poner la red de nuestra lan (en Oficina1 192.168.2.0/24). En la segunda la red LAN de destino (en Oficina1 192.168.3.0/24 que es la de la Oficina2).
    Protocolo lo dejamos en all y puertos todos (no poner nada) a menos que queramos ser más específicos.
    En la pestaña o apartado Action tenemos que dejarlo por defecto (encrypt, require,esp) y debemos marcar la opción Túnel en ambos lados.
    En los siguientes campos de IP hay que poner las direcciones de tu  WAN a la otra (en Oficina1 poner source la 1.1.1.1 y destino la 1.1.2.1 , en el otro al revés).
    En la opción proposal dejar defaul pero podemos cambiar cosas en la pestaña Proposals. No hace falta recomiendo dejarlo.
    En resumen le estamos diciendo con esto que considere tráfico para meter por el túnel (y que lo levante) el que venga de mi LAN a la otra LAN y sale por mi WAN a la otra WAN.
  • Ya casi está con esto deberíais ver que se ha levantado el túnel.En remote Peers veréis una conexión (que podéis cortar) y cuanto tiempo lleva. En Installed SAs deberíais ver 2 (uno de un lado y otro de otro).
  • A nosotros nos pasó que con esto no veíamos los equipos de ambos lados incluso con el túnel levantado. No podíamos ni hacer ping de un router al otro.
    Esto es porque los routers hacen NAT (que es como si empaquetan el mensaje…así MUY simple) y puede pasar o que hagan NAT antes de verificar si el tráfico es interesante (por lo que no levanta el túnel) o que lo mande pero al llegar no lo “desempaquete” y lo ignore.
    Para evitarlo hay que irse a IP-Firewall-Pestaña NAT y crear una nueva con chain “srcnat” y origen tu red LAN (en Oficina1 192.168.2.0/24) y destino la otra red LAN (en Oficina1 el destino 192.168.3.0/24).
    En action “accept”. Nada más.
    Esta regla la grabamos y la movemos a la primera línea. Tiene que estar la primera. Así cuando cumple esta regla (mi tráfico interesante) la acepta y no sigue con las demás de nateo.

    NOTA1: Para hacer ping desde el router hay que poner destino la otra LAN Y origen nuestra LAN (si no ponemos ese origen no cumple el policy y no levanta el túnel.
    NOTA2: En el primer ping puedes perder 2 al principio porque tarda en levantarse y ver que cumple las condiciones. Luego todos irán bien.

Con esto ya deberías ser capaz de hacer ping y ver otros equipos tanto desde el router como desde las LAN. Para más información mirad este artículo y os dejo un GRAN vídeo (que incluye muchos métodos pero el de IPSEC en el minuto 12:27)

También más info aquí o aquí.

Tenéis con esto muchísimas opciones y podéis o cifrar diferentes redes, o tráfico o incluso crear varios túneles con varias oficinas.

24 comentarios en «Crear una VPN site to site entre dos oficinas con Mikrotik y fibra»

  1. Y podría funcionar en una configuración servidor-cliente donde el servidor es un router mikrotik y el cliente es una PC con Windows por ejemplo, ambos usando el protocolo OpenVPN?

    Responder
    • Si con alguna modificación. Creo que incluso esta configuración es más sencilla porque sólo hay que poner el Mikrotik como servidor VPN que espera las llamadas del cliente.La que tenemos en el artículo hace un túnel contínuo.

      Responder