Cómo crear un túnel dividido usando StrongSwan IKEv2 en Ubuntu 18.04

Cómo crear un túnel dividido usando StrongSwan IKEv2 en Ubuntu 18.04

He estado intentando configurar un túnel dividido desde mi servidor Ubuntu 18.04 (cliente) a un Watchguard Firebox usando el protocolo StrongSwan IKEv2. Al final, querré que esta sea una conexión de sitio a sitio, pero primero comenzaré solo con un lado.

Pude conectarme exitosamente a Watchguard y me dieron una dirección IP, pero no quiero que todo el tráfico se envíe a través del túnel, solo para ciertas subredes. Agregué las rutas ip route addy mientras tengo la conexión activa, si estoy tcpdumpen ejecución puedo ver que el tráfico (192.168.1.0/24) pasa por la interfaz que configuré, pero no obtengo una respuesta. Cualquier ayuda sería muy apreciada.

Aquí está el archivo de configuración para IPSec.
Saqué la dirección del servidor y el nombre de usuario. Como dije, tengo una conexión exitosa. Está rightsubnetcomentado porque quiero definirlo mediante el ip routecomando. Si lo descomento y activo la conexión, puedo hacer ping con éxito a cada subred definida, pero esto no divide el tráfico y, eventualmente, tendré reglas para permitir que solo ciertos dispositivos accedan a la VPN.

conn dealers
  right=xxxxxxxx
  rightid="O=WatchGuard, OU=Fireware, CN=ike2muvpn Server"
  #rightsubnet=192.168.1.0/24,192.168.20.0/24,192.168.40.0/24,192.168.3.0/24,192.168.5.0/24
  rightauth=pubkey
  leftsourceip=%config
  leftid=xxxxxxxx
  leftauth=eap-mschapv2
  eap_identity=%identity
  auto=add

aqui esta mi ip routemesa

default via 192.168.2.1 dev eth0 proto dhcp src 192.168.2.196 metric 100
10.0.10.0/24 via 192.168.115.1 dev dealers_tunnel 
192.168.1.0/24 via 192.168.115.1 dev dealers_tunnel 
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.196 
192.168.2.1 dev eth0 proto dhcp scope link src 192.168.2.196 metric 100 
192.168.115.0/24 dev dealers_tunnel proto kernel scope link src 192.168.115.29

Tengo un script que conectará la VPN y luego configurará la interfaz y agregará las rutas. Para realizar pruebas, solo agrego la red 192.168.1.0/24.

#!/bin/bash
#
#./ikev2-up.sh
#

/usr/sbin/ipsec up dealers

ip tunnel add dealers_tunnel local 10.0.10.1 remote 192.168.115.29 mode are til 255
ip link set dealers_tunnel up
ip addr add 192.168.115.29/24 dev dealers_tunnel

ip route add 192.168.115.0/24 dev dealers_tunnel
ip route add 10.0.10.0/24 via 192.168.115.1 dev dealers_tunnel
ip route add 192.168.1.0/24 via 192.168.115.1 dev dealers_tunnel

Todavía no he configurado ninguna regla eniptables -L


Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

iptables -t nat -L

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         

Sé que hay algo que me falta, pero no puedo entenderlo. Gracias de nuevo de antemano por la ayuda.

Respuesta1

Si configura rightsubnet=0.0.0.0/0(suponiendo que el par lo permita), no necesitará un dispositivo de túnel si el par también asigna una dirección IP virtual (solicitada por el cliente a través de leftsourceip=%config).

Simplemente deshabilite la instalación de rutas por strongSwan a través de charon.install_routesinstrongswan.confy luego instale sus propias rutas a través de personalizadoguión arriba-abajoconfigurado en leftupdown. El uso de un script updown es importante porque el cliente no conocerá la dirección IP virtual de antemano. Sólo los paquetes de esa IP virtual coincidirán con las políticas de IPsec y serán tunelizados, por lo que es importante aplicar esto a través de las rutas de origen.

Por ejemplo, para canalizar el tráfico hacia 192.168.115.0/24usted, usaría algo como el siguiente script (de manera predeterminada, strongSwan instala rutas en la tabla 220 para evitar conflictos con las rutas en la tabla principal, así que usaré lo mismo aquí):

#!/bin/bash

set -o nounset
set -o errexit

case "${PLUTO_VERB}" in
    up-client)
        ip route add 192.168.115.0/24 dev "${PLUTO_INTERFACE}" src "${PLUTO_MY_SOURCEIP}" table 220
        ;;
    down-client)
        ip route del 192.168.115.0/24 table 220
        ;;
esac

información relacionada