
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