web-dev-qa-db-ja.com

特定のサブネットのみをStrongSwanVPNにルーティングし、Linuxのトラフィック全体をルーティングしないようにするにはどうすればよいですか?

私はネットワーキングに関して特別な能力を持っていないので、私のニーズを説明するために最善を尽くします。 Linuxラップトップで、StrongSwan(NetworkManagerを使用)を実行して、IPsecを使用して特定のVPNに接続しています。このVPNを使用すると、この種のIPにアクセスできます10.*.*.*

さて、私の問題は、VPNを実行すると、すべてのトラフィックがVPNを通過するが、それらのIPにアドレス指定されたパケットのみをVPNにルーティングしたいということです(10.*.*.*)。

どうすればいいですか?誰かが私に簡単なガイドを提供したり、必要な構成とそれらを適用する方法を共有したりできますか?

1
Codemix

strongSwanのNetworkManagerプラグインは現在、提案されたトラフィックセレクター(トンネリングされるトラフィックを決定する)の変更を許可していません。したがって、常にすべてをトンネリングすることを提案し、サーバーがトラフィックセレクター(以下を参照)を絞り込まない限り、それがネゴシエートされます。

これを回避するための可能な方法:

  1. 可能であれば、サーバーの構成を変更して、独自の削減されたトラフィックセレクターのセットを介して、クライアントの提案を目的のサブネットに絞り込みます。一部のクライアントは多かれ少なかれこれを処理できます。strongSwanのNMプラグインは問題ないはずです(strongSwan wikiで見つけることができます 分割トンネリングの詳細 および潜在的な問題異なるクライアントと)。
  2. VPNに接続しているときにローカルLANにアクセスすることだけに関心がある場合は、charon-nmbypass-lanプラグイン をロードできます。デーモン(strongSwan NMプラグイン)のバックエンド)。ローカルに接続されているすべてのサブネットにバイパスIPsecポリシーを自動的にインストールします。
  3. 前のオプションと同様に、通常のIKEデーモン(charonまたはcharon-systemd、swanctl.confまたはipsec.confを介して構成)を使用して、サブネットのバイパスIPsecポリシーをインストールします。 VPN経由でアクセスしたくない場合(これは、ローカルに接続されていない場合にも機能します)。
  4. charon-nmデーモンがルーティングテーブル220に独自のルートをインストールしないようにする(strongswan.confのcharon-nm.install_routesオプションを使用)か、ルーティングテーブル220をクリアします。接続が確立されました。次に、手動またはNMスクリプト(/etc/NetworkManager/dispatcher.d内、 ここのドキュメント を参照)を介して、トンネリングするサブネットにのみ特定のルートをインストールします。例えば:

    ip route add 10.0.0.0/8 dev <outbound interface> src <virtual IP> table 220
    

    仮想IPアドレスをログまたはip addrを介して(またはスクリプト内で環境変数を介して)決定する必要がある場合。ルートの自動インストールを無効にしない場合は、既存のルートから仮想IPを取得して、後で削除することもできます。

  5. または、NMプラグインの代わりに通常のIKEデーモンを使用します。特定のリモートトラフィックセレクターを設定するか、バイパスポリシーを使用して、必要なトラフィックのみをトンネリングするオプションがあります。ただし、VPN接続を構成/開始するためのGUIはありません(ただし、接続を自動的に開始することも、ターゲットサブネットのトラフィックが検出されたときに開始することもできます)。
0
ecdsa

@ecdsaの回答の完全性に感謝します。

私はネットワーキングの初心者であり、些細なことでしたが、ソリューションの実装に非常に苦労しました。

次のソリューションは4番目の提案を採用し、次の手順を必要とします。

  1. NetworkManagerを介してVPNをオンにします
  2. 次のコマンドを実行して、NetworkManagerから作成されたルートを検出します

    user@laptop:~$ ip route list table 220
    default via 192.168.1.1 dev enp0s31f6 proto static src 172.26.199.15
    
  3. インターフェイス(enp0s31f6)と仮想IP(172.26.199.15)に注意してください

  4. 次のコマンドを使用して、カスタムルートを使用するため、現在のルートをフラッシュします。

    Sudo ip route flush table 220
    
  5. 次のコマンドを使用してカスタムルートを追加します

    Sudo ip route add 10.0.0.0/8 dev enp0s31f6 via 172.26.199.15 table 220
    

これで、10.0.0.0/8にアドレス指定されたパケットのみがVPNを介してルーティングされます。

0
Codemix