Ubuntu 18.04 で StrongSwan IKEv2 を使用してスプリット トンネルを作成する方法

Ubuntu 18.04 で StrongSwan IKEv2 を使用してスプリット トンネルを作成する方法

StrongSwan IKEv2 プロトコルを使用して、Ubuntu 18.04 サーバー (クライアント) から Watchguard Firebox へのスプリット トンネルを設定しようとしています。最終的には、これをサイト間接続にしたいのですが、まずは片側から始めています。

Watchguard に正常に接続し、IP アドレスを指定できましたが、すべてのトラフィックをトンネル経由で送信するのではなく、特定のサブネットのみに送信したいと考えています。経由ルートを追加しip route add、接続が確立されている間にtcpdump実行している場合は、トラフィック (192.168.1.0/24) が設定したインターフェイスを通過していることがわかりますが、応答が返ってきません。ご助力いただければ幸いです。

IPSec の設定ファイルは次のとおりです。
サーバー アドレスとユーザー名を削除しました。前述したように、接続は成功しています。rightsubnetコマンドで定義したいので、コメント アウトしていますip route。コメントを解除して接続を確立すると、定義されている各サブネットに正常に ping を実行できますが、トラフィックは分割されず、最終的には特定のデバイスのみが 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ですストロングスワン.confそしてカスタム経由で独自のルートをインストールしますアップダウンスクリプトで設定されていますleftupdown。仮想 IP アドレスはクライアントに事前に通知されないため、updown スクリプトを使用することが重要です。その仮想 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

関連情報