単一のLinuxボックスでVPNクライアント、VPNサーバー、および通常のトラフィックを同時に受け入れる方法

単一のLinuxボックスでVPNクライアント、VPNサーバー、および通常のトラフィックを同時に受け入れる方法

私は何を達成したいと思うか。

私のLinuxコンピュータ(最近リリースされたRaspberry Pi OSのRaspberry Pi v3)では、次の設定を検討しています。

  1. デフォルトでは、VPNクライアントに送信されるすべての接続は
  2. インターネットからマイボックスへの着信接続に対応するVPNサーバー
  3. 聴覚障害のあるVPNクライアントを迂回し、私をガタガタから抜け出す「一般」インターフェース(ここではeth0)

私はインターフェイス#3を使用してISPが提供するパブリックIP(ホームネットワークのIP)を取得します。たとえば、「実際」(VPNではなくクライアントを読み取る)IPを使用してDNSプロバイダアカウントを正常に更新できます。

curl https://my.dns.provider/refresh_my_account_id_query --interface etho

                                                                                                                                                
                                                                                                                                                
                                                                                                                                                
+---------------------------------------------------------------+    +-----------------+    +---------+                                         
|                         My Linux box                          |    |                 |    |         |                                         
|                                                               |    | My home network |    | My ISP  |                                         
|                                                               |    |                 |    |         |                                         
|  +------------+                                               |    |                 |    |         |     +------------------+                
|  | VPN Client |  Dev: tun0 | IP:<pre-defined by VPN provider> |    |                 |    |         |     |  VPN Provider's  |                
|  | (default   <------------------------------------------------------------------------------------------->  Servers         <---------+      
|  | outgoing)  |                                               |    |                 |    |         |     |                  |         |      
|  +------------+                                               |    |                 |    |         |     +------------------+         |      
|                                                               |    |                 |    |         |                           +------v-----+
|  +------------+                                               |    |                 |    |         |                           |            |
|  |            |  Dev: tun1 | IP:10.8.0.1                      |    |                 |    |         |                           |  Internet  |
|  | VPN Server <----------------------------------------------------------------------------------------------------------------->            |
|  |            |                                               |    |                 |    |         |                           |            |
|  +------------+                                               |    |                 |    |         |                           |            |
|                                                               |    |                 |    |         |                           |            |
|  +------------+                                               |    |                 |    |         |                           |            |
|  |Only for    |   Dev eth0 | IP:192.168.0.200                 |    |    -------------------------------------------------------->            |
|  |explicit VPN<--------------------------------------------------------/             |    |         |                           |            |
|  |bypass      |                                               |    |                 |    |         |                           |            |
|  +------------+                                               |    |                 |    |         |                           +------------+
|                                                               |    |                 |    |         |                                         
|                                                               |    |                 |    |         |                                         
+---------------------------------------------------------------+    +-----------------+    +---------+                                         

私が経験している問題

2 つの VPN (インターフェイス tun0 と tun1) を同時に動作させることはできません。両方のVPNが機能し、設定された後、インターネットからVPNサーバーに接続できなくなります。残りは大丈夫です。インターフェイス tun0 と tun1 のルーティングとルールが確立されると、すべての着信トラフィックがプライマリ インターフェイスでのみ進行または削除されるようです。わかりません。

各インターフェイスの現在の設定

私の設定説明のインターフェースのリストに従ってください。

  1. systemctlクライアントをサービスとして実行するために使用される一般的なopenvpn設定ファイルを使用してVPNクライアントを設定しました。これはそれ自体はうまく機能します。つまり、tun0すべてのトラフィックがデフォルトでそのインターフェイスを通過します。
  2. を使用してVPNサーバーを設定しましたPiVPN。本当に簡単で、一度だけ試してみてください。
  3. 手動で追加していますが、期待ip route default via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.200 metric 202どおりに機能します。

ボックスを起動すると、3つのインターフェイスがすべて表示され(上部にloip route、次のものが表示されます。

0.0.0.0/1 via 172.94.109.161 dev tun0 
default via 172.94.109.161 dev tun0 
default via 192.168.0.1 dev eth0 proto dhcp src 192.168.0.200 metric 202 
10.8.0.0/24 dev tun1 proto kernel scope link src 10.8.0.1 
128.0.0.0/1 via 172.94.109.161 dev tun0 
172.94.109.4 via 192.168.0.1 dev eth0 
172.94.109.160/28 dev tun0 proto kernel scope link src 172.94.109.163 
192.168.0.0/24 dev eth0 proto dhcp scope link src 192.168.0.200 metric 202 

上記では、私の理解は次のとおりです。

  • 行1と2は同じで、意図したとおり、VPNクライアントを介してすべてのデフォルトの発信トラフィックを取得するように設計されていますが、それらの1つを削除する必要があります。
  • eth0インターフェイスを直接ターゲットにするときにVPNクライアントをバイパスしようとする3行を手動で追加しましたが、他の問題が発生しますか?
  • 4行目の目的は、VPNサーバーIPから受信したすべての内容を自分のVPNサーバーtun1で管理することです。
  • 5~8行よくわかりません。 VPNクライアントが正しく機能する必要があるようです。

欲しいもの

現在のIPルーティングの理解を確認するには、別の脳が必要です。次に、ここで説明されている設定を実装する正しい方法についてのアドバイスを探しています。

これまで私は私の研究に基づいて多くのルールとパスを設定しようとしましたが、成功しませんでした。また、IPルールまたはルーティングオプションを使用して発信および受信パケットを表示する方法について少し読んでいますが、mangle既存の文献は消化するのが非常に難しく、さらに試す前に実際に必要なツールが何であるかを理解したいと思います。

どんな助けでも大変感謝します。設定に関する詳細を提供するか、新しい設定を試してみましょう。お問い合わせください。

ベストアンサー1

Martinの回答を補完するには:

VPN を介したデフォルトルートは、VPN クライアントへの応答がリモート VPN サーバーを介して送信されるため、ローカル VPN サーバーを破壊します。これにより、応答が別のIPアドレスから来るため、リモートクライアントVPNは機能しなくなります。

デフォルトルートをローカルネットワークに制限するには、ポリシールーティングを使用する必要があります。たぶんこれはクイック紹介設定するのに役立ちます。これスーパーユーザーに質問する役に立つかもしれません。

OpenVPNを使用してデフォルトパスを設定しません。

その後、受信VPNのルートを同じルートテーブルに追加すると、必要な方法で機能します。

おすすめ記事