Как создать раздельный туннель с использованием StrongSwan IKEv2 в Ubuntu 18.04

Как создать раздельный туннель с использованием StrongSwan IKEv2 в Ubuntu 18.04

Я пытаюсь настроить Split Tunnel от моего сервера Ubuntu 18.04 (клиент) до Watchguard Firebox с использованием протокола StrongSwan IKEv2. В конечном итоге я хочу, чтобы это было соединение Site-to-Site, но я начинаю только с одной стороны.

Мне удалось успешно подключиться к Watchguard и получить IP-адрес, но я не хочу, чтобы весь трафик отправлялся через туннель, а только для определенных подсетей. Я добавил маршруты через ip route addи пока у меня есть соединение, если оно работает, tcpdumpя вижу, что трафик (192.168.1.0/24) проходит через интерфейс, который я настроил, но я не получаю ответа. Любая помощь будет очень признательна.

Вот файл конфигурации для IPSec.
Я вынул адрес сервера и имя пользователя. Как я уже сказал, у меня есть успешное подключение. Закомментировано, rightsubnetтак как я хочу определить его через ip routeкоманду. Если я раскомментирую его и подниму подключение, я смогу успешно пинговать каждую определенную подсеть, но это не разделит трафик, и в конечном итоге у меня будут правила, разрешающие доступ к 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

Вот мой ip routeстол

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

У меня есть скрипт, который подключит vpn, а затем настроит интерфейс и добавит маршруты. Для тестирования я добавляю только сеть 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

Я еще не установил никаких правил вiptables -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         

Я знаю, что я что-то упускаю, но не могу понять. Спасибо еще раз заранее за помощь

решение1

Если вы выполните настройку rightsubnet=0.0.0.0/0(при условии, что одноранговый узел это позволяет), вам не понадобится туннельное устройство, если одноранговый узел также назначит виртуальный IP-адрес (запрошенный клиентом через leftsourceip=%config).

Просто отключите установку маршрута strongSwan через charon.install_routesinstrongswan.confа затем установить собственные маршруты через customскрипт вверх-внизнастроено в leftupdown. Использование скрипта updown важно, поскольку виртуальный IP-адрес не будет известен клиенту заранее. Только пакеты с этого виртуального IP-адреса будут соответствовать политикам IPsec и туннелироваться, поэтому важно обеспечить это через исходные маршруты.

Например, для туннелирования трафика 192.168.115.0/24вам нужно использовать что-то вроде следующего скрипта (по умолчанию strongSwan устанавливает маршруты в таблице 220, чтобы избежать конфликтов с маршрутами в основной таблице, поэтому я буду использовать то же самое здесь):

#!/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

Связанный контент