
Я пытаюсь настроить 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_routes
instrongswan.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