web-dev-qa-db-ja.com

StrongSwan VPNからローカルサブネットを除外する

プライベートサブネットを持つ、ローカルのみのイーサネットインターフェイスが追加されたコンピューターがあります。 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接続からローカルサブネットを除外するにはどうすればよいですか?

接続のルート構成を検査するにはどうすればよいですか?

2
user176315

パススルーポリシー を設定できます。

更新:@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を使用して次のエントリに進むのではなく、ターゲットネットワークでデフォルト(メイン)ルーティングテーブルを使用します。

4
A.B