【自分用メモ】VPNって何？（専用線、AWS VGWなどなど）

# VPN接続
何となく聞いたことはあるものの、うまく説明ができない状態が続いている。改めて調べてみた。


# そもそもパケットとは
データ通信において、ネットワーク経由でやり取りされる情報の最小単位。１パケット128バイト相当。頭には上位レイヤーとの宛先情報が記載されている。各レイヤーによって「IPパケット」「TCPパケット」「イーサネットフレーム（フレーム≒パケット）」と名称が変わるがやっていることは同じ。[こちら](https://wa3.i-3-i.info/word12595.html)が参考になりました。

以下はIPパケットの図解。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665477/23999af6-8884-dc18-7566-1fd36ab0fa7f.png)
画像引用：[IPパケットの構造](https://xtech.nikkei.com/atcl/learning/lecture/19/00020/00002/)



お馴染みのWireSharkを使えばパケットを観測することができる。上にも書いてある通り、パケットにはデータ部と呼ばれる「やり取りした内容」が含まれている。当然ながらこいつが外部から覗き見されてしまったら個人情報漏洩となる。
実際、この動画のように「フリーWifi　×　http通信」という黄金の組み合わせの際は、閲覧しているサイト情報のみならず、POSTした情報（ID/PW）も筒抜けになってしまう。https通信になっていれば、暗号化されるためある程度安全。

https://www.youtube.com/watch?v=FnhD7ljtPhY

そしたら「https通信だけちゃんとしていればいいじゃんか。VPN接続って必要なん？」と個人的には思ってしまった。この疑問は一旦置いといて、後で記述することにする。まずはVPNの仕組みについて記載する。

# カプセル化
通常のパケットに「サンドイッチする」ことでパケット自体を暗号化してしまうこと。
暗号化とは「平文(クリアテキスト)を難読性のある文字列に変換する」ことを指す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665477/525cf5da-053b-d353-e8fe-b5ae518413bf.png)

VPNではVPNサーバのIPアドレスを追加する意味でのカプセル化を行う。これによっていわゆる「専用線」たるものが敷設される状態となるわけだ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665477/e4cee2d1-b388-8c39-c73f-a8f549cb5ea7.png)
画像引用：[【初心者向け】VPNでセキュリティを強化する仕組みとは？](https://www.itreview.jp/blog/archives/7051)

データをやり取りする際は通常、OSI参照モデルの上位レイヤーと連携したヘッダ情報を基に送受信がされる。カプセル化技術（VPN技術としての認証がされていること）により、ここをショートカットすることができる。

httpsも認証があるが意味合いが違う。
>HTTPS通信の場合、SSL証明書という方法でサーバの身分を保証していますが、これは一方的な身分証明です。クライアント側の身分を保証することはできません。一方で、VPN通信の場合は、認証技術により、通信を行う双方の身分が保証されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665477/b9f935a8-b658-1f5a-d3a9-8c18b74a07db.png)
画像引用：[VPN技術解説](https://www.allied-telesis.co.jp/solution/vpn/vpn_type.html)


これにより本来レイヤー間で発生しているはずのトランザクションが実質省略されることになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665477/194ddcd2-6660-cbb7-915d-4000c65bc2d5.png)

>VPNを使って通信する時、上図の"とあるサイトのWebサーバー"にたどり着くまでに通るのは「自宅LANのルーター」となります。そのため、宛先のサーバー側から見えるのは、自宅ルーターのグローバルIPアドレスとなります。VPNを使うと、(細かいことを気にしなければ)外出先の公衆WiFiに接続しているのに、自宅LANにいることと同じなのです。

引用：[公衆WiFiでも安全に。自宅にVPNサーバーをスマホでさくっと構築した話](https://pocco.net/vpn-home/)

# VPN=「カプセル化？トンネリング？」
ネットで「VPN 仕組み」と調べると大体カプセル化とトンネリングの２ワードが登場する。
ただ調べていくと結局どっちが何をしているのかが分からなくなってくる。。。
結論としては **「トンネリングを構成している技術がカプセル化」** ↑のカプセル化の説明を読めば何となく納得。
「カプセル化」によって、インターネットという大海原の中で、VPNサーバと直接的にプライベートなやり取りができる。ただこのホットラインはあくまでも仮想的なものである。この仮想的なホットラインを作っていることを「トンネリング」と表現している。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665477/56aa6437-b63f-a265-56fb-970224823fcf.png)
画像引用：[VPNソリューション](https://www.allied-telesis.co.jp/solution/vpn/vpn_tecbases.html)



# で、VPNである必要はある？
結論から言うと土俵が違う。といったイメージ。
HTTPSはあくまでもHTTPをセキュアにしたものであり、Webに限定された概念である。
一方でVPNは回線全体をセキュアにする技術である。インターネットという公衆ネットワークにおいて、特定の相手と安全にやり取りするために作られた「擬似的な閉鎖ネットワーク」であり、ソフトウェア的に産み出される概念。

HTTPSは「大事な合言葉が書かれたメモを暗号化して、（人目がつく一般道を）手持ちでどこかに運んでいく」イメージ。
VPNは「（暗号化もしつつ）それを安全な裏道からこっそりと運んでいく」イメージ。

>単一のサーバと、それに対して、インターネットを介して接続してくるたくさんのPCを安全につないでくれているのが、HTTPS通信ということです。一方で、VPN通信は、企業が社内の通信を、インターネットを介して安全に行うための技術です。この技術により、企業は離れた場所にいる社員にも、安全に会社の情報を渡すことができます。


# Site-to-Site-VPN　

**仮想プライベートゲートウェイ（VGW;Virtual Private Gateway）**
Gatewayとは、Virtual Private Cloudの内部と外部との通信をやり取りする出入口。
Internet Gateway(IGW)は「Virtual Private Cloudとインターネットを接続するため」のもの。
Virtual Private Gateway(VGW)は「Virtual Private CloudがVPNやDirect Connectと接続するための」もの。



>仮想プライベートゲートウェイは、Site-to-Site VPN 接続の Amazon 側にある VPN コンセントレータです。仮想プライベートゲートウェイを作成し、Site-to-Site VPN 接続を作成する VPC にアタッチします。

以下の図のように、ルートテーブルでVGWをターゲットに指定すると、その宛先アドレス（最終目的地）との通信は、VPNやDirect Connectを通してオンプレネットワーク基盤に向けられる。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2665477/27dd6237-862f-ab98-f4d9-d379f9f42756.png)

引用：[AWS Site-to-Site VPN の仕組み](https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/how_it_works.html)

# AWS Direct Connect
AWSと自社拠点や自社DCとのプライベート接続（専用線）を実現するサービス。
インターネットを経由することなく接続することができる。

こちらの記事が分かりやすい。

https://atbex.attokyo.co.jp/blog/detail/9/


ここで混乱してしまうのが「VPNと専用線って違うの？？」という点。まぁ全然違う。
VPNは物理的には公衆の面前でやり取りを行なっている。（インターネット回線を使っている）


>VPNはあくまで「仮想的な専用線」に過ぎず、物理的にはひとつの回線を不特定多数の人と共有するものです。そのため、外部からの接続を完全にシャットアウトすることはできません。そのため、機密性が求められる情報を取り扱う企業がネットワーク回線を構築するときは、通信事業者の専用線でセキュリティを確保する必要があります。


# 参考



https://mixhost.jp/vpn-column/vpn-towa/

https://syoshinsya.mydns.jp/syosinsya/_TryPgm/recommendVPN.html

https://xtech.nikkei.com/it/article/lecture/20070515/271069/

https://naisanpo.hatenablog.com/entry/archives/1910


https://pocco.net/vpn-home/


https://rpa-technologies.com/insights/cloud-rpa-20200226/#:~:text=%E5%8D%98%E4%B8%80%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%90%E3%81%A8,%E6%B8%A1%E3%81%99%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82

https://japan.zdnet.com/article/20086051/

https://www.youtube.com/watch?v=8hSeECy_NYg

https://atbex.attokyo.co.jp/blog/detail/9/