LoginSignup
3
0

トンネリングって分かりづらいよね

Last updated at Posted at 2023-05-15

初めに

リモートワークが普及した現在、必須と言っても過言ではないのがVPN。「暗号化」とか「トンネリング」等断片的な情報は見聞きするものの、仕組みがイマイチわからない。そんなあなたへ、VPNについて説明します。VPNの「暗号化」部分は想像しやすいので、この記事は「トンネリング」について説明します。

なんでVPNが必要なの?

離れた拠点間でも安全にLAN内の機器と通信したいというのが主な目的となります。元々拠点間で通信するためには専用線を設けることがありましたが、これはコストがかかります。そのため、通常のインターネット回線を介しても専用線のように通信できるような技術が必要でした。

image.png

インターネットを介す通信の場合、以下の問題があります。

  • 自宅/会社はプライベートIPアドレス、インターネットはグローバルIPなので疎通させるためには工夫が必要
  • インターネットを介す場合盗聴などの危険がある

盗聴は「暗号化」によってある程度は対応できますが、プライベートIP/グローバルIPアドレスは厄介です。プライベートIP/グローバルIPの変換ならNATがありますが

  • グローバルIPアドレスと対応付けられた機器は公開されることとなり、セキュリティ上問題となる
  • アクセスしたい機器が大量にある場合、NATだと限界がある

上記で記載したような問題があります。またできれば社内ネットワークに接続できるユーザは制限したいですね。これらを解決する際に利用されるのが「トンネリング」と呼ばれる技術です。このトンネリングの肝は「カプセル化」です。

そもそもデータ&カプセル化とは

カプセル化の説明をする前に、ネットワーク上に流れるデータの構造を理解する必要があります。詳しくはこちらの記事を見てください。

トンネリング

トンネリング用のプロトコルとして代表的なものでGREというものがあります。

image.png
GRE(Generic Routing Encapsulation)とは

Q. 冒頭で話をした、プライベートIPアドレスのネットワークから、グローバルIPアドレスのネットワークを介してアクセスするにはどうすればいいか?
A. L3(プライベートIPアドレス)のパケットをL3(グローバルIPアドレス)でカプセル化する。

これだけではわからないので、もう少し詳しく説明します。

image.png
GRE(Generic Routing Encapsulation)とは

R2(192.168.2.0/24)のLANからR1(192.168.1.0/24)のLANへ通信したい場合、パケットは以下のような動きをします。

  • R2のLAN内の機器(192.168.2.X)から、R1のLAN内の機器(192.168.1.X)へを送信する。この時点のパケットの宛先/送信元は下記の通り。
    • 宛先がR1のLAN側のプライベートIPアドレス(192.168.1.X)
    • 送信元がR2のLAN側のプライベートIPアドレス(192.168.2.X)
  • R2は受け取ったパケットをGREパケットとしてカプセル化する。GREパケットの宛先/送信元は下記の通り。
    • 宛先がR1のWAN側のグローバルIPアドレス(1.1.1.1)
    • 送信元がR2のWAN側のグローバルIPアドレス(2.2.2.2)
  • R1は受け取ったGREパケットのカプセル化を解除する。解除後のパケットの宛先/送信元は下記の通り。
    • 宛先がR1のLAN側のプライベートIPアドレス(192.168.1.X)
    • 送信元がR2のLAN側のプライベートIPアドレス(192.168.2.X)

最終的にR1のLAN内に届くパケットは、あたかも隣接するプライベートネットワークから送られてきたデータのように見えます。またトンネリングという呼称をされていますが、イメージ的には、

  • 送りたい商品(パケット)に宛名を書く
  • 梱包箱(GREパケット)に入れ、住所を記載して発送

というのが実際の動きに近いです。ネットワーク的な疎通を解決するためにカプセル化は頻繁に使用されます。例えばFWでHTTPの通信のみ許可されている環境でFTPを使ってファイル転送をしたい場合、FTPデータをHTTPデータでカプセル化する方式(FTP over HTTP)もあります。

トンネリングはネットワーク的な疎通は解決できますが、暗号化されているわけではないので、盗聴のリスクが残ります。そのためIPsecのような暗号化と組み合わせます。トンネリングとIPsecを使ったVPNは、IPsec-VPNと呼ばれます。

まとめ

  • VPNはトンネリングと暗号化の組み合わせで実現される
  • トンネリングは異なるネットワーク間で疎通ができるように、データをカプセル化する仕組みを指している
  • トンネリングと呼称されているものの、「送りたい物(パケット)を別容器(GREパケット)に梱包する」というのが実際の動きに近い
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0