プライベートサブネットを持つ、ローカルのみのイーサネットインターフェイスが追加されたコンピューターがあります。 StrongSwan VPNが確立されると、そのサブネットにアクセスできません。
これはローカルの「左」構成です( algo によって確立):
conn ikev2-<rightip>
fragmentation=yes
rekey=no
dpdaction=clear
keyexchange=ikev2
compress=no
dpddelay=35s
ike=aes128gcm16-prfsha512-ecp256!
esp=aes128gcm16-ecp256!
right=<rightip>
rightid=<rightip>
rightsubnet=0.0.0.0/0
rightauth=pubkey
leftsourceip=%config
leftauth=pubkey
leftcert=daves.crt
leftfirewall=yes
left=%defaultroute
auto=add
問題のサブネットは10.0.0.0/24です。 %defaultrouteは、192.168.0.0/24のアドレスに解決されます。
'left'と 'leftsubnet'は、これに適したオプションのようには見えませんが、私には何もわかりません。 leftsubnetを10.0.0.0/24に、!10.0.0.0/24に設定してみました。
StronSwan VPN接続からローカルサブネットを除外するにはどうすればよいですか?
接続のルート構成を検査するにはどうすればよいですか?
パススルーポリシー を設定できます。
更新:@ecdsaで指摘されているように、strongswan> = 5.5.2では 簡単な方法 があります。バージョンで使用できるかどうかを最後に確認してください。
いくつかのランダムIPの例。変更とトンネルの前:
# ip route get 10.0.0.55
10.0.0.55 dev lxcbr0 src 10.0.0.77 uid 0
トンネルを確立した後の問題:
# ip route get 10.0.0.55
10.0.0.55 via 192.168.0.1 dev eth0 table 220 src 192.168.0.44 uid 0
この構成を/etc/ipsec.conf
に追加:
conn ignorelan
left=127.0.0.1 #prevents usage in peers selection algorithm
leftsubnet=10.0.0.0/24
rightsubnet=10.0.0.0/24
authby=never
type=passthrough
auto=route
そしてそれをリロードします:
# ipsec reload
すぐにそれをアクティブにする必要があります。できなかった場合(今回)、次のことができます。
# ipsec route ignorelan
'ignorelan' shunt PASS policy installed
とにかく、後で再起動するときに使用する必要があります。これで(トンネルに加えて)次のようになります。
# ipsec status
Shunted Connections:
ignorelan: 10.0.0.0/24 === 10.0.0.0/24 PASS
[...]
これで、トンネルが確立されたかどうかにかかわらず、正しいルートが返されます(strongswanによって処理されるため、テーブル220では、(単なる)テーブルメインではなく)(もう):
# ip route get 10.0.0.55
10.0.0.55 dev lxcbr0 table 220 src 10.0.0.77 uid 0
cache
0.0.0.0/0までのトンネルを使用すると、表220のような結果が得られます。
# ip route show table 220
default via 192.168.0.1 dev eth0 proto static src 192.168.0.44
10.0.0.0/24 dev lxcbr0 proto static src 10.0.0.77
192.168.0.0/24 dev eth0 proto static src 192.168.0.44
パススルー設定に現実に一致するルート(例:間違ったネットマスク)を配置しない場合、「シャント」の結果が予期される(期待されるソースIPと同じだが、間違ったネットワークカードを通過するなど)ので、注意してください。
[〜#〜] update [〜#〜]: bypass-lan plugin は、特に動的環境。
新しいconn
エントリを追加する代わりに、それをアクティブ化し(たとえば、Debianバスター(安定していない))、/ etc/strongswan.d/charon/bypass-lan.confを編集し、load = yesを設定します(つまり、charon.plugins) .bypass-lan.load = yes))。デフォルトでは、すべてのインターフェースがシャントされます。つまり、トンネルが確立されますが、デフォルトでは使用されません。したがって、適宜interfaces_ignore
またはinterfaces_use
を設定してください。あなたはあなたのインターフェースにinterfaces_ignore
を設定するべきです望まないトンネルをバイパスするために、そうでなければあなたのインターフェースにinterfaces_use
を設定してくださいトンネルをバイパスします。例えば:
interface_use = lxcbr0
前のメソッドと同様に、この例ではipsec start
の後に表示されます。
# ip route show table 220
10.0.0.0/24 dev lxcbr0 proto static src 10.0.0.77
(ただし、IPv6が使用されている場合は、このインターフェースに関連するIPv6ルートも考慮されます)。
さらに別の(ハッキーな)方法は、strongswanのテーブル220をバイパスすることです。strongswan設定の代わりに、(これらの質問と例について)同じことが次のようにして達成されます。
ip rule add priority 219 to 10.0.0.0/24 lookup main
Strongswanのテーブル220を使用して次のエントリに進むのではなく、ターゲットネットワークでデフォルト(メイン)ルーティングテーブルを使用します。