web-dev-qa-db-ja.com

他のクライアントのゲートウェイとしてのOpenVPNクライアント

1台のサーバーと2台のクライアントを備えたOpenVPNネットワークがあります。 S(IP転送とNATが有効になっている)を経由するようにC1のデフォルトルートを設定すると、すべてが期待どおりに機能します。問題は、C1のデフォルトルートをC2にポイントすると(これもNAT VPNからインターネットへのトラフィック)に適切に構成されている)、トラフィックはとにかくSによって奪われ、転送されることです。 C2のtcpdumpでは、そこに何も到着する兆候はありません。OpenVPNの他のクライアントのゲートウェイとしてクライアントをセットアップすることは可能ですか、それともクライアントのルートが他のルートを指している場合にパケットがサーバーイベントによってルーティングされるのはシステムのプロパティですかクライアント?

編集:

角括弧は私の仮想ネットワークを表しています(物理的には存在しません)。 C1/C2/Sは、ネットワーク内で相互にpingを実行できます。 C1からC2を経由してインターネットにトラフィックをルーティングしたいと思います。 C1(およびおそらくC2)からSを介してインターネットにルーティングできますが、パケットがSによって転送されるため、C2を介したルーティングは機能しません。これは、OpenVPNサーバーがパケットを送信先に送信したくないという問題のようです。

 [C1-S(NAT)]-インターネット
インターネット-[(NAT)C2 /]
1
atalax

以前にこの問題に直面しましたが、VPNクライアントが機能していて、自宅のLAN上の別のデバイスにアクセスできませんでした。 VPNクライアントがデフォルトルートを自動的に追加し、すべてのトラフィックをサーバーに転送するため、2番目のマシンへの静的ルートを構成する必要がありました。

C1からC2へのトラフィックがサーバーを経由しても問題がない場合は、server.confでclient-to-clientディレクティブを有効にして、クライアントがVPNを介して相互に到達できるようにする必要があります。デフォルトでは、クライアントはサーバーにのみ到達できます。

http://openvpn.net/index.php/open-source/documentation/howto.html 「ルーテッドVPN(dev tun)を使用するときにクライアント側に複数のマシンを含める」を確認してください。

1
aseaudi

説明しようとしているネットワークトポロジを知らなければ、これに完全に答えることは困難です。私は一般的にあなたが求めていることをすることが可能であると言うことができると思いますが。

以下のシナリオを検討してください。

C1--R1-(NAT)-インターネット-(NAT)-R2--C2

ここで、R1とR2の間に(適切に構成された)OpenVPNトンネルが作成されている場合、C1はC2と通信でき、その逆も可能です。

このシナリオを正しく理解するのはさらに困難です。

C2--R1-(NAT)-インターネット-(NAT)-R2-C3 
 C1/\ C4

ここで、C2とC3はOpenVPNエンドポイントであり、C1はVPNを使用してC4にアクセスする必要があります。最初のハードルは、C2とC3の間にOpenVPNトンネルを確立することです。おそらく、UDP 1190のR1とR2からC2とC3へのポートフォーワウディングを使用します。

次は、C1にC4へのパケットを取得する方法としてC2を使用させることです。これには、C1とC4でルーティングテーブルを構成することが含まれます。 C1はC4のネットワークへのルートを設定しますVIA C2、C4はC1のネットワークへのルートを設定しますVIA C3。これらのルートは両方とも優先されます。したがって、おそらくC1:{route add 192.168.3.0 gw 1​​92.168.2.2}およびC4:{route add 192.168.1.0 gw 1​​92.168.3.2}。これは、C2およびC3のアドレスが192.168.2.2および192.168.3.2であると想定しています。それぞれ、C1とC4はそれぞれC2とC3と同じネットワーク上にあります。

うまくいけば、これで質問に答え、クライアントでVPNを構成するよりも、デフォルトゲートウェイでVPNを構成する方がはるかに簡単であることを示すことができますが、両方のユースケースがあります。

編集:このトポロジと問題の説明により、C1とC2にルーティングの問題があると思います... C1のデフォルトルートは、ルーターとしてC2のVPNアドレスを指している必要があります。これにより、C1はVPNを使用してパケットをC2に取得し、C2はそれらをどう処理するかを決定します。

あなたが示したように、C2がインターネットへの独自の接続を使用する場合、C2のデフォルトルートは独自のインターネット接続へのルートである必要があります。

代わりに、C2が実際にはインターネットへの独自のパスを持たず、代わりにSを経由する場合、SはC2のデフォルトルーターである必要があります。

1
kronenpj