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

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

私はネットワークに関する専門知識がないので、自分のニーズをできるだけ説明したいと思います。Linux ラップトップで、StrongSwan (NetworkManager を使用) を実行して、IPsec で特定の VPN に接続しています。この VPN を使用すると、次のような IP にアクセスできます10.*.*.*

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

どうすればいいでしょうか? 誰か簡単なガイドを提供したり、必要な構成とその適用方法を共有したりしてもらえますか?

答え1

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

これを回避するには、次の方法があります。

  1. 可能であれば、サーバーの設定を変更して、トラフィックセレクターの削減により、クライアントの提案を目的のサブネットに絞り込みます。一部のクライアントは、多かれ少なかれこれを処理できます。strongSwanのNMプラグインは問題ないはずです(strongSwan wikiで見つけることができます)。スプリットトンネルに関する詳細情報およびさまざまなクライアントでの潜在的な問題)。
  2. VPNに接続中にローカルLANにアクセスするだけであれば、バイパスLANプラグインの中にカロン-nmデーモン (strongSwan NM プラグインのバックエンド) は、ローカルに接続されたすべてのサブネットに対してバイパス IPsec ポリシーを自動的にインストールします。
  3. 前のオプションと同様に、通常のIKEデーモン(カロンまたはカロンシステム(swanctl.conf または ipsec.conf で設定)を使用して、VPN 経由でアクセスしたくないサブネットにバイパス IPsec ポリシーをインストールします(サブネットがローカルに接続されていない場合でも機能します)。
  4. 防止するカロン-nmデーモンがルーティングテーブル220に独自のルートをインストールするのを防ぎます(charon-nm.install_routesオプションでstrongswan.confに記述するか、接続が確立された後にルーティングテーブル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 はありません (ただし、自動的に接続を開始したり、ターゲット サブネットのトラフィックが検出されたときに接続を開始したりできます)。

答え2

完璧な回答をしてくださった @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. インターフェースに注目してください(エンプ0s31f6) および仮想 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/8VPN 経由でルーティングされます。

関連情報