VPN de sitio a sitio y VPN de acceso remoto con Strongswan

VPN de sitio a sitio y VPN de acceso remoto con Strongswan

Recientemente implementé una VPN de acceso remoto IKEv2 de Strongswan en dos sitios diferentes con dos servidores ubuntu diferentes. Todo funciona muy bien, pero ahora quiero "fusionar" los dos sitios con una VPN de sitio a sitio, para poder dejar solo una VPN de acceso remoto y acceder a ambas subredes. La cuestión es ¿cómo hacerlo? Mi idea era un túnel IPSec que utilizara Strongswan entre los dos sitios y enrutamiento estático en los enrutadores de ambos sitios para administrar el tráfico.

Los sitios están configurados de la siguiente manera:

A) 
Only One Public IP : x.x.x.x
Subnet : 10.5.5.0/24

B)
One Usable Public IP : x.x.x.x
Subnet : 192.168.5.0/24

Las preguntas son:

  1. ¿Puedo ejecutar los dos servicios (acceso remoto IKEv2 y túnel IPSec) en la misma instancia de strongswan? Mi respuesta a esto sería NO, y si este es el caso, estoy listo para agregar una nueva instancia de strongswan usando otros dos servidores Ubuntu como puerta de enlace.
  2. Pero si estoy usando dos servidores diferentes en los sitios, surge otro problema, los sitios solo tienen una IP pública cada uno, ¿cómo puedo eliminar el conflicto entre IPSec e IKEv2 ya que ambos deberían usar los mismos puertos? ¿Puedo cambiar los puertos utilizados por el túnel IPSec? ¿O tal vez no necesito el reenvío de puertos para el túnel IPSec?

Esta es mi referencia para el Túnel IPSec. https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/

¿Alguna idea sobre cómo hacer que este lío funcione? ¿SIEMPRE necesito dos direcciones IP diferentes para ejecutar dos servidores VPN? ¿Podría ayudar OpenSource DMVPN?

Gracias de antemano.

Respuesta1

Para responder tu pregunta

  1. Sí, puede ejecutar Acceso remoto (también conocido como Roadwarrior) y Túnel de sitio a sitio en la misma instancia de StrongSwan.
  2. Puede diferenciar la conexión de sitio a sitio y las conexiones de acceso remoto por el método de autenticación.

Aquí hay una configuración funcional.

connections {
  site {
    pools = ipv4, ipv6

    local {
      auth = pubkey
      certs = site1.example.com.pem
      id = site1.example.com
    }

    remote {
      auth = pubkey
      cacerts =  MyCA.cer
      id = "CN=site2.example.com"
    }

    children {
        site {
            local_ts  = 10.218.2.0/24, ::/0
            remote_ts = 10.218.1.0/24, 2001:470:ffff::/64
        }
    }
  }

  win {
    pools = ipv4, ipv6

    local {
      auth = pubkey
      certs = site1.example.com.pem
      id = site1.example.com
    }
    remote {
      auth = pubkey
      cacerts =  LloydsCertificateAuthorityG2.cer
    }
    children {
      win {
        local_ts = 0.0.0.0/0, ::/0, 10.218.1.0/24, 2001:470:ffff::/64
      }
    }
  }
}

pools {
  ipv4 {
    addrs = 10.218.2.3-10.218.2.254
    dns = 10.218.1.99
    netmask = 255.255.255.0
    subnet = 10.218.2.0/24,10.218.1.0/24
  }

  ipv6 {
    addrs = 2001:470:ffff:2::3-2001:470:ffff:2::ffff
    dns = 2001:470:ffff::99/64
    subnet = 2001:470:ffff:2::/64,2001:470:ffff::/64
  }
}

El sitio 2 se conecta con el protocolo IKEv2 y el certificado de máquina CN=site2.example.com

Los certificados se almacenan en el sitio 1 en

/etc/swanctl/rsa/site1.example.com.pem (private key)
/etc/swanctl/x509/site1.example.com.pem (public key)
/etc/swanctl/x509ca/MyCa.cer (Root CA)

Recargar la configuración conswanctl --load-all

Para habilitar NAT para clientes de acceso remoto

iptables -t nat -A POSTROUTING -s 10.218.2.0/24,10.218.1.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.218.2.0/24,10.218.1.0/24 -o eth0 -j MASQUERADE

información relacionada