IT社員3人組によるリレーブログ

某IT企業に勤める同期3人が、日常で思ったことを記録していきます (twitter: @go_mount_blog)

SoftEther VPNの世界① -VPN理解編-

どうも、Keiです。

明日は台風が直撃するみたいですね。リモートワークが進むこのご時世では、台風の日は家で仕事をしたいですね。

 

f:id:go-mount:20180904000817j:plain

 

さて、家で仕事を行う際にインターネット経由で職場のサーバにアクセスしたいときってけっこうあるのではないでしょうか?

シンクライアントを利用していれば、なおさら全てのデータ通信をインターネット経由で行う必要がありますね。

 

今回は、このようにリモートで仕事をする上では欠かせないVPNの中でもオープンソースで誰でも使うことができるSoftEtherソフトイーサ)について話をしたいと思います。

 

VPNとは?

まず、そもそもVPNって良く聞くけど暗号化の技術なの?よくわからないけど使っているという人のために、VPNについて説明します。

 

結論を言うとVPNはトンネリング(カプセル化)をする技術のことです。

これも、トンネリングがわからないと「?」ですよね。

今回の説明では、

 

トンネリングができる=2拠点で安全な通信ができる

 

を理解して欲しいと思います。

 

パケット構造について

トンネリングの話をする際に、避けて通れないのがパケット構造です。

みなさんは、日々youtubeやLINEなど、データをダウンロードしたり、送信したりしますが、そのデータはネットワークを経由する上でルータやスイッチなどの機器が理解できるようにフォーマットが決まっています。

 

下の図は、恐ろしく簡単にその構造を書いたものです。

 

f:id:go-mount:20180903222442j:plain

 

L1、L2、L3と書いてあるのは、Layer1、Layer2、Layer3の略です。

データと書いてある部分は皆さんがメールで書く本文のようなものだと理解して下さい。

 

僕のイメージで言うと、

L2、L3ヘッダは宛先がどこにいるのかの情報をもっています。

Layer3ヘッダは宛先が存在する町みたいなものを表していて、Layer2ヘッダはその町の個人の住所を表しています。

 

下の図はA美からB郎にメールをする際にどのように途中のネットワーク装置でルーティング(経路の決定)が行われるかを恐ろしくシンプルに表しています。

 

f:id:go-mount:20180903233844j:plain

 

ここでおさえてもらいたいことは、

 

ルータでは、B郎がどのネットワークにいるかというざっくりとした情報でデータを運んでいること。ルータでは、Layer3ヘッダを確認して、経路選択をします。

 

スイッチでは、B郎のいるネットワークにルータのおかげで到着しているので、後はB郎はだれかということをLayer2ヘッダを見て、B郎を特定します。

 

このように、ルータはLayer3ヘッダを見るため、Layer3装置。

スイッチはLayer2ヘッダを見るため、Layer2装置と呼ばれることがあります。

 

トンネリングとは

さて、データ構造を理解したところで、トンネリングについて説明します。

 

トンネリングは主に、L3トンネルとL2トンネルがありますが、代表的なL3トンネルを例に挙げたいと思います。

みなさんもご存知のIPsecはL3トンネルを使用した技術です。

 

下の図はL3トンネルのデータの流れを表したものです。

 

f:id:go-mount:20180903233735j:plain

 

先ほどの例と異なるのは、ルータAではL3ヘッダである「B郎のいるネットワーク」が参照されていましたが、今回はIPsecヘッダが参照されている部分です。

ルータで参照されるのはL3ヘッダだったので、このIPsecヘッダはL3ヘッダの役割をしています。

つまり、パケット(データ+L3ヘッダ)にさらにL3ヘッダ(IPsec)をつけているわけです。このIPsecヘッダにはルータBの情報が書いてあります。

 

このような構造にすることによって、ルータAとルータBの間のルータはIPsecヘッダをもとに経路選択をして、ルータBにたどりつきます。

そして、データがルータBにたどり着くと、ルータBはIPsecヘッダを外し、元々のL3ヘッダ(B郎のいるネットワーク)を参照してスイッチにデータを渡します。

 

このように、ルータAとルータBの間で通常のL3ヘッダとは異なるL3ヘッダで直通経路(トンネル)を作ってあげることで、あたかもルータAとルータBが隣接しているようにみせる技術をトンネリングといいます。

 

VPN技術では、このトンネリングを使用することでA美とB郎のネットワークがあたかも隣接しているように見せることができます。

つまり、会社と家で考えると、実際はインターネットのように多くのルータやスイッチを間に挟んでいるかも知れないですが、トンネリングを使ってあげることで、仮想的に間のインターネットがなく、隣接したネットワーク(会社内にいる環境)のように扱えるのです。

 

IPsecに代表されるように、トンネリング技術ではインターネットを通すので、不正にパケットがのぞかれることを懸念してデータを暗号化しています。

先ほどの例でいうと、ルータAで暗号化してルータBで複合しています。このように、トンネリングと暗号化によって、VPN技術は安心で便利なものとなっています。

 

さて、今回はVPN技術を支えているトンネリング技術について勉強しました。

IPsecに代表されるL3トンネリングでは、IPヘッダ(L3ヘッダ)をIPヘッダでカプセル化(L3ヘッダの上にL3ヘッダをつけること)しました。(IP over IPとも言われます)

 

一方で、タイトルにもSoftEtherではL2ヘッダをHTTPSプロトコルカプセル化するという、一風変わった方法をとっています。(IP over HTTPS

次回はL2トンネリングとSoftEtherについて説明したいと思います。

 

それではまた!