
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 add
y mientras tengo la conexión activa, si estoy tcpdump
en 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á rightsubnet
comentado porque quiero definirlo mediante el ip route
comando. 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 route
mesa
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_routes
instrongswan.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/24
usted, 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