最近リモートワークで何かとお世話になるVPN。
こいつが一体何なのかよく知らなかったので調べてみた。
VPN(Virtual Private Network)って何?
VPNは現在の日本企業で最も利用率の高いWANサービスの1つです。VPNはあくまでWANサービスの1つであり、他にも遠方のサーバーなどをつなぐサービスは存在しています。
・・・そもそも自分にはネットワークの知識があまりなかった。
そもそもLANとWANって何?
- LAN(Local Area Network)は同一の敷地またはや建物内等に構築されたネットワーク。
- WAN(Wide Area Network)は地理的に離れたLAN同士をつなぐネットワーク。
家庭内や企業の1拠点内で互いのPCを接続するのにLANが用いられ、企業の複数の拠点のLAN同士を結ぶのにWANが用いられる。
LANもWANもよくわかっていないので一度ちゃんと調べてみた。
LANを支える技術
OSI参照モデル
L1 物理層
→ ビット列を送受信し、電気信号の変換を担う。
PCの中ではテキストも写真もあらゆるものが0と1で表現される。さらに細かく見るとこの2種類は回路の電圧で表現しており、デジタル信号と呼ばれる。しかし、当然ながら実際に電圧を離散的な2値だけを取らせることは不可能で、電圧を上げ下げする間は連続的な値をとってしまう。後者の信号をアナログ信号と区別する。
物理層では、アナログ信号とデジタル信号を変換する役割があり電線(ツイストペアケーブル)や無線LANを伝って届くアナログ信号を適切にデジタル信号に変換し、上位の階層に送る仕事をしている。
有線では電圧変化で0/1を表現できるが、無線ではどうするのか調べてみると別の方法で表現していた。
参考)http://www.silex.jp/blog/wireless/2013/03/post-4.html
物理層はこれらの違いを吸収するのも役割の一つであり、最終的にデジタル信号として届けるので上位層ではそのPCが有線接続なのか無線接続なのかを気にする必要をなくすことができる。
ハブ (リピータハブ)
→アナログ信号の増幅と整形
→集線装置
OSI参照モデルのある層の処理が可能なデバイスをその層のネットワークデバイスという。物理層のネットワークデバイス、すなわち物理層の仕事をこなす機器の例としてハブがある。
上述の通りデータの転送はアナログ信号という波なので発信元から遠くに行くほどその強度は低下し波形が崩れていき、100メートルほどが限度である(UTPケーブル)。途中で波を増幅してあげることができれば100メートル以上離れていても正しく送受信できるということで、波の増幅と整形を担うのがハブである。
また、ハブは集線装置としても機能し、ハブに接続されたノード同士は違いに連携することができることから複数のPCを違いに接続する場合に有用である。具体てくな挙動としては、ハブに接続した一つのノードから流入したデータはハブに繋がる全てのノードに送信される。このため、複数のPCを繋ぐ場合に個々にケーブルを張り巡らさる必要がなくなる。
ただし、この集約装置としての性質はデメリットともなる。宛先がどこかなど何も考えずに全てのノードにデータを流し込むので非効率となる。そこでハブ(厳密にはリピータハブ)をさらに賢くし、不要なデータ転送を抑えたものが次節に登場すすスイッチングハブ(スイッチ)である。
L2 データリンク層
→隣接ノードと正しく通信するルール決め
→送信途中のエラーチェック
データを送受信時に適切に信号を変換することを物理層が保証していた。ただ物理層では受け取る中身については見ていないため、このままでは任意の宛先の人にだけメッセージを読んでもらうということができていない。データリンク層では、目的のノードにのみデータを届けるという役目がある。
特にLAN用のL2通信は今はEthernetが主流であるため、LAN = Ethernetと解釈されることも多い。
イーサネット
→IEEEの定める規格であり、 隣接ノードとの通信のルールを定めている。
目的のノードにのみデータを届けるに当たってデータリンク層では送信するメッセージに送信元と宛先の情報をヘッダとして付与する。これをアドレッシングという。この時に使用されるアドレスをMACアドレス(物理アドレス)といい、すべてのデバイスに固有の値が割り振られている。
なお、データリンク層で付加する情報にはこれらのアドレスのほかにタイプ部という部分がある。データリンク層ではその荷物が自分宛かどうかを判断するので中身を見ることはできず、受け取ったメッセージを上位層に渡さなければならない。この時に上位層のどのプロトコルに渡すのかを指定するのがタイプ部になる。
また、送信途中でエラーが起きていないかをチェックするのもデータリンク層の仕事である。データの末尾にFCS(FrameCheckSequence)と呼ばれるトレーラを付加しチェックしている。
スイッチ (スイッチハブ)
→一度通した送信元MACアドレスをキャッシュしておき、不要なポートに送信しない賢いハブ。
送信元MACアドレスとスイッチのポートを紐づけるMACアドレステーブルを持っており、すでに対応づけしているMACアドレスへの送信はピンポイントに送信することができる。これをMACアドレスフィルタリング機能という。もちろんテーブルにない宛先の場合にはこれまでのハブと同じく全てのポートにデータを流す(フラッディング)。
※ブリッチとスイッチの違いはMACアドレスの学習をソフトウェアで行うかハードウェアで行うか。後者の方が速く遅延しにくいため後者が一般的になった。
L3 ネットワーク層
→より離れたノード間(異なるネットワーク間)を繋ぐ。
隣接するノードの接続にはこれまでのL1、L2の昨日で正しく通信できるようになったが、インターネットのような様々なネットワークを介して離れたノード間を繋ぐ場合にはさらなる機能が必要になる。(目的のMACアドレスがどこにあるのかがわからない。)
IP(InternetProtocol)
異なるネットワークを互いに繋ぐためのプロトコル。
次節にあげるIPアドレスを用いてルーティングを行う。
ヘッダには次にどの上位層のプロトコルに渡したらいいかを記述したプロトコルフィールド(イーサネットではタイプ部に相当)がある。
IPアドレス(論理アドレス)
MACアドレスと何が違うの?という疑問はここでなんとなく解消できた。
まず、使い道が違います。
IPアドレスは「最終的に、どこに届けるか」を表現するときに使う情報です。
一方のMACアドレスは「次に、どこに届けるか」を表現するときに使います。
ルーティングの際に使われるアドレス。
ルータ
→データ転送の経路選択を担う。
目的のIPアドレスに到達するにはどこへデータを流すかを管理するルーティングテーブルに基づいてデータを転送する。場合によっては複数のルータを介して目的地にたどり着く場合もある。
L4 トランスポート層
→ほんとに届いたかを保証する。
→ポート番号を用いた上位階層でのプロトコルの識別。
L3までで離れたノード同士もメッセージを送り合うことができるようにはなった。しかし、その情報が正確にor時間内に相手に届いたのかはわからない。この正確に
(信頼性)や時間内に
(効率性)を保証するのがトランスポート層の役割である。
これまでの階層と同じように、次にどのプロトコルにメッセージを渡すかを指定するフィールドがヘッダには含まれており、それがポート番号にあたる。(TCPもUDPも。0〜1023番はwell-knownポート。)
L5-7 セッション層/プレゼンテーション層/アプリケーション層
- OSI参照モデルでのL5-7は明確な線引きが難しい。
- TCP/IPモデルではこれらはひとまとめのプロトコルとして実装されている。
L5 セッション層
L5ではセッションを管理している。複数の通信を並行して走らせていてもこれらのセッションが混じることがないのはセッション層が管理しているため。
eg.)複数タブで異なるwebページを表示してもデータが混じらない。
L6 プレゼンテーション層
L6では文字コードや画像のフォーマットを定義している。
L7 アプリケーション層
ソフトウェアのルール(インターフェース)を定義している。
ではWANとは何か?
WANとは何か? 調べてみる。
ルータより内側をLAN、外側をWANと捉える
ルーターを通してLANとWANを接続させれば、東京と大阪でも、それよりも遠く離れた場所にある電子機器同士でも通信を行うことが可能になります。
ルータから先で離れた場所と繋ぐ、、インターネットとの違いは何だろうか?と考えるとその答えがあった。
- WANの先は自社の拠点(ユーザ)だけ
- インターネットの先は誰がいるかわからない
つまり、WANもプライベートなネットワークということになる。
(→VPNがWANの一種というところにやっと繋がった。)
なお、WANを提供しているのは電気通信事業者( = 通信キャリア(携帯会社))
VPN(仮想プライベートネットワーク)
もともとは専用線を用いて離れたLAN間のネットワークを構築していた。ただもちろん高価。
そこでこの課題を解決したのがIP-VPNという技術であり、通信キャリアの用意する通信網を用いて相互に通信させるものである。ただ、ここでも初期コストや運用コストがかかる。
ここで注目されたのがインターネットであり、インターネットを利用した拠点間の安全な接続としてIPsecという方法が生まれた(もともとはVPN用のプロトコルではなかったが現在ではVPNの代名詞のようにもなっている)。
IPsecを使う場合は、特別な事業者網は不要でインターネット回線をそのまま利用し、各拠点にIPsec対応のVPNゲートウェイを設置するだけでよい(導入コスト低)。
なお処理速度と安全性の面ではIP-VPNの方が良い。
VPN(IPsec)の通信方法
IPsecとは簡単にいうと暗号化の一種。
転送するパケットにVPN用のヘッダを付けてカプセル化する。こうすることで特定の拠点同士でのみ通信を実現することができる。これをトンネリングという(特定の拠点同士をつなぐトンネルを構築するイメージ)。
この処理はVPNゲートウェイで行われる。
LANから、他の拠点を宛先とするパケットをVPNゲートウェイが受け取ると、そのパケットをIPsecの通信で必要なセキュリティヘッダなどの情報を付加してカプセル化してインターネットに送り出す。これを受け取った別の拠点のVPNゲートウェイは、受け取ったIPsecのパケットを元のIPパケットに戻し、その拠点内のLANに転送する。
参考
- WANの概要 ~拠点のLAN同士を相互接続~
- ネットワーク通信(LAN と TCP/IP)
- 変調のはなし(1)
- 「IPアドレス」と「MACアドレス」の違い
- 2-10 アナログ信号とデジタル信号とは
- OSI参照モデルまとめ
- 【図解】Ethernetの仕組み〜LANとの違い, MACアドレスの構成, フレーム構造やタイプについて〜
- 書籍「1週間でCCNAの基礎が学べる本第2版」
- 【具体例あり】LANとWANの違いとは?セキュリティと価値ポイント!
- ネットワークいろいろ - LAN 構築の基礎知識
- 第1回 LANとWAN - ネットワークの仕組み
- WANとインターネットの違いは?
- 基礎から分かるVPNの最新事情(1)なぜ、VPNが求められているのか?
- 基礎から分かるVPNの最新事情(2)WAN接続を合理的に実現するIPsecとIP-VPNとは?
- VPNとLANの関係は?現代のオフィスに欠かせないVPNの特徴を解説