VPNはどのようにネットワークトラフィックを転送しますか?(レイヤー3)


8

VPN(仮想プライベートネットワーク)がVPS(仮想プライベートサーバー)を介してネットワークトラフィックを転送する方法に関する情報を探しています。

VPNに接続している例を見てみましょう。ウェブサイトにリクエストを送信すると、ネットワークスタックからレイヤー3に移動します。

IPパケットがあります-宛先アドレスを含むヘッダーとペイロードを持っています。

IPパケットの宛先アドレスをVPSのIPアドレスに変更した場合、サーバーはどのようにして要求を元の宛先アドレスに転送しますか?

考えられる唯一のことは、レイヤー3(IPレイヤー)で、ヘッダーの宛先アドレスがVPSのIPアドレスに変更され、元の宛先アドレスがパケットのペイロードに追加されるということです。

これは、パケットの長さとパケットのチェックサムヘッダーを再計算して、IPパケットを再度変更する必要があるという意味ではありませんか?

次に、VPSはパケットの逆マッピングを行って、サーバー上で元の要求を組み立てて作成します。

これはそれに関連する長い待ち時間があるように思われますか?

おそらく私はこれがどのように機能するかについていくつかの技術的な側面を見逃している、誰か他の人がそれを説明できますか?

回答:


7

GREヘッダーの例を見てみましょう(GREはVPNを実現するために使用されるプロトコルです-決して安全ではないため使用されないことが多いですが、カプセル化の概念はすべてのVPN接続でほぼ同じです(たとえばIPsecでも同様です) ):

ここに画像の説明を入力してください

ご覧のように、元のパケットは別のIPパケットにカプセル化されます。

VPN(サイト間)を介して相互に接続された2つのネットワーク/ルーター(AとB、ルーターはVPSにすることができます)があると仮定しましょう。

ネットワークAのホストがネットワークBのFTPサーバーにアクセスする場合、ネットワークAのホストはパケットを送信します。宛先アドレスはFTPサーバーのIPアドレスであり、送信元アドレスは独自のものです。

次に、元のパケットがVPNゲートウェイ(おそらく彼のルーター)に到着します。この元のパケットは、たとえば、宛先アドレスがVPNゲートウェイ(ネットワークB)であり、送信元アドレスが独自のものであるIPv4パケットにカプセル化されます。このようにして、パケットはインターネット経由で他のVPNゲートウェイ(ネットワークB)に移動できます。ここでは、IPv4ヘッダーでカプセル化されてインターネット上を移動するため、元のプロトコル/ヘッダーやパケットタイプは関係ありません。他のルーターは元のプロトコル/ヘッダーを気にしません。 IPv4ヘッダー。

追加される「新しい」パケットの新しいチェックサムを計算する必要があります。そうしないと、インターネット経由で移動できなくなります(たとえば、チェックサムを計算するインターネット内のポイント間でPPPが使用されることがあります)。したがって、パケット全体に2つのチェックサムが必要です。

IPsec(ほとんどの場合VPN接続に使用されます)では、元のパケットは(主にAESを介して)暗号化され、プレーンテキストヘッダー(インターネット上を移動するための「新しい」ヘッダー)が追加されます。適切にルーティングできるように、プレーンテキストである必要があります。そのためには、新しいチェックサムも計算する必要があります(元のチェックサムは暗号化されているため)。

他のVPNゲートウェイ(ネットワークB)に到達すると、VPNヘッダーが分解され、元のパケットがネットワーク(FTPサーバー)に送信されます。


つまり、ルーターはデバイスではなくパケットのカプセル化を担当しているということですか。
cg14

1
@ cg14いい質問です!VPNには2つのタイプがあります。ナムリーサイトツーサイトVPN(VPNゲートウェイからVPNゲートウェイ(主にルーターからルーター))とエンドツーサイトVPN(エンドデバイスはVPN経由でVPNゲートウェイに接続)です。サイト間では、ルーターがパケットをカプセル化します。エンドツーサイトでは、デバイス自体が「元のパケット」を作成し、それにインストールされているVPNクライアントによってカプセル化されます。カプセル化後、デバイスはパケットを送信します。
watchme

それは面白い。エンドツーサイトVPNの場合、元のパケットはどのレイヤーでカプセル化されますか?そして理論的には、私が言いたいのであれば、VPNクライアントのデバイスIDなど、IPを超えていくつかの識別子を送信する場合、その情報がペイロードになるようにペイロードにその情報を追加する方法があります。IPヘッダー| GREヘッダー| 挿入された情報+元のパケット|。そして、カプセル化されたパケットへのカスタムデータの挿入が行われる場所に応じて、私が想定するgreパケットのチェックサムと長さを再計算する必要があるかどうかを決定します。
cg14

残念ながら、あなたが何を言っているのか正確にはわかりません。しかし、IPsecについて少し説明して、「何層で」の質問に答えます。クライアントが元のパケット(TCP、IP、イーサネットなど)を送信すると、完全に暗号化されます。これが新しい「ペイロード」です。では、インターネット経由で通常のペイロードを送信できますか?おそらく違います。いくつかの情報が必要になります。次に、この情報はVPNクライアントによって追加されます。つまり、レイヤー4、3、および2の情報です。
watchme

@ cg14すべてがわかりますか?:) ...(ああ、私はあなたの「何層」の質問への私の答えであなたをマークしていないことに気づきました
質問

6

だからあなたの質問への短い答えはカプセル化です。つまり、VPNエンドポイントによって取得された、Webサイトに送信するパケットの周囲に配置された別のパケットヘッダーセットがあります。

次のように考えてください。

-----------------------------------------------
| src_ip=2.2.2.2, dest_ip=3.3.3.3             |
|---------------------------------------------|
|| src_ip=10.10.10.10, dest_ip=5.5.5.5       ||
|| Data goes here. This could be a HTTP GET  ||
|| or pretty much anything.                  ||
|---------------------------------------------|
-----------------------------------------------

ローカルマシンで実行しているVPNクライアントは、新しいIPアドレス(10.10.10.10)を提供し、デフォルトのルートが作成されたトンネルに向かうようにルートテーブルを変更します。次に、トラフィックをVPNサーバーまたは例ではVPS(3.3.3.3)に送信します。多くの場合、パケットのカプセル化が解除されると、パケットにNATが適用されるため、宛先サーバー(5.5.5.5)には、カプセル化されたトラフィックの宛先IP(3.3.3.3)からトラフィックが送信されているように見えますトラフィックは、最初にVPNサーバーにアクセスすることによって返されます。

3つ目の質問です。追加のパケットを本質的に外側に置くので、長さとチェックサムは結果のパケットで計算されます。つまり、2つの長さと2つのチェックサムがあります。VPSがこのMTUを使用すると言っているか、通常のようにMTU発見によって行われている最大長については。

レイテンシについても。物理を壊すことはできません。VPSに到達し、そのネットワークスタックを実行するオーバーヘッドを考慮します。待ち時間が長くなるように思えるかもしれませんが、これは時々そうではありません。VPSがトポロジー上、パケットがすでに向かう方向に沿っている場合、追加されるオーバーヘッドは最小限になる可能性があります。たとえば、シアトルにいて、VPSがニューヨークにあり、話そうとしているWebサイトがロンドンにあるとします。しかし、シアトルからニューヨークに行ってシアトルのウェブサイトに戻る場合は、全米旅行からの待ち時間が長くなります。


3

パケットはトランスポート層によって作成され、ネットワーク層に渡されます。ホストはそのルーティングテーブルを調べ、VPNソフトウェアによって作成された仮想インターフェイスに送信します。

VPNソフトウェアは、仮想インターフェイスからパケットを取得します。暗号化したり、独自のヘッダーを追加したりして、ペイロードとしてネットワークスタックに返します。特定のVPN実装に応じて、このペイロードをトランスポート層に渡したり、トランスポート層をバイパスしてネットワーク層に直接移動したりする場合があります。

次に、VPNサーバーをターゲットとするパケットに、ネットワークレイヤーヘッダーの別のレイヤーが追加されます。次に、パケットはルーティングテーブルで再度検索され、インターネットに送信されます(VPNが「フルカバレッジ」の場合、VPNソフトウェアは、VPNトラフィックが送信されるようにルーティングテーブルを設定するよう注意する必要があります。 VPNソフトウェアに戻るのではなく、実際のインターネットに接続するインターフェイス)。

カプセル化されたパケットがVPNサーバーに到着すると、VPNソフトウェアに戻されます。「外部」ヘッダーは削除され、パケットは仮想インターフェイスを介してネットワークスタックに戻されます。

その後、それをどうするかはVPNサーバーのネットワークスタック次第です。インターネットアクセスに使用されるVPNの場合、VPNサーバーのネットワークスタックは、NATルーターとして機能するように構成されている可能性が高いため、パケットの送信元を変更し、インターネットに送り返します。

返信が戻ってくると、ほとんど同じプロセスが起こります。パケットが受信され、NATプロセスが逆になり、仮想インターフェイスを介してVPNソフトウェアに戻され、カプセル化されてクライアントのVPNソフトウェアに送り返され、クライアントはそれをカプセル化解除してネットワークスタックに戻して、ネットワークスタックに戻します。クライアントアプリケーションに配信できます。


わかりました、まあ、それはおそらく私のものより良い説明です!
ウォッチミー18/06/18
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.