IP-VPN、SSL-VPN、拠点間VPN、リモートVPNなどなどVPNについてまとめてみた

# はじめに
VPNについてまとめてみました。

# VPNとは
* **仮想専用線のこと**
* Virtual Private Network（バーチャル プライベート ネットワーク、VPN）
* VPNによって、イントラネットなどのプライベートネットワークが、本来公的なネットワークであるインターネットに跨って、まるで各プライベートネットワーク間が専用線で接続されているかのように実現される
* 仮想プライベートネットワーク、仮想専用線とも呼ばれる

# VPNの2つの接続形態
**拠点間VPNとリモート接続VPN**

## 拠点間VPNとリモート接続VPNを実現させるためのVPNの種類


https://tech.nikkeibp.co.jp/it/atcl/column/17/011900625/011900003/
より詳しく
https://qiita.com/yuyasat/items/81c32d7e235af97515c0

* インターネットVPN
* IP-VPN(閉域網・L3VPN)
  - エントリーVPN(閉域網)　ベストエフォート
* 広域イーサネット(L2VPN)

**よく使うのがインターネットVPNでほかのVPNよりも安価にVPN接続を実現できる**
上記は拠点間とリモート接続の二つに分類できる

IP-VPNとエントリーVPNの違い
https://xtech.nikkei.com/it/article/Keyword/20080930/315817/
品質が異なる

# 拠点間VPNとリモートVPN
拠点間VPNとリモートVPNで使われるVPNプロトコル

## 拠点間VPN
https://network.yamaha.com/knowledge/vpn

* インターネットVPN
  * **IPsec**
* IP-VPN(閉域網・L3VPN)
  - エントリーVPN
* 広域イーサネット(L2VPN)

## リモート接続VPN
https://www.infraexpert.com/study/security8.html

* インターネットVPN
  * SSL-VPN (リモートアクセス)
      - 「リバースプロキシ」
          * WebブラウザだけでSSL-VPNの通信が行えますが、Webブラウザ上で動作するアプリケーションしか使用できない
      - 「ポートフォワーディング」
          + リモートアクセスしてくるクライアントにJavaやActiveXで作成されたモジュールを追加させた上で
　SSL-VPN通信を行う方法
      - 「L2フォワーディング」
          + PCにSSL-VPNクライアントソフトがインストールされます。この方式では、全てのアプリケーションをSSL-VPN通信で使用できる
  * L2TP/IPsec
      - IPsecもリモートVPNできる
  * PPTP

**PPTPとL2TP利用は推奨されない。L2TPにはしようとして暗号化機能がないので、L2TP/IPsecを利用する。PPTPは認証プロトコルに脆弱性が報告されていて、接続環境によってはNATできないので**


L2TP・・・データリンク層で（PPPを）カプセル化するプロトコル
IPsec・・・ネットワーク層で（IPを）カプセル化するプロトコル

暗号化の方式や、L2（リンク層）で接続するかL3（ネットワーク層/IP）で接続するかの違いなどにより様々な仕様の製品がある。

Ipsecは拠点間、リモートどちらでも使うことができる。ただリモートではSSL-VPNを使うことのほうが多い？

https://xtech.nikkei.com/it/article/COLUMN/20060922/248777/?P=4

# VPNどういうときに使うの
https://techtarget.itmedia.co.jp/tt/news/1901/18/news05.html
https://ja.softether.org/4-docs/1-manual/A/10.1

* 拠点間VPN
  - 東京本社にあるLANと大阪支社にあるLANをつなげたいなど(拠点間VPN)、インターネット越しに複数のLAN同士をつなげるときに使われるVPNです。**LANとLANの間をVPNを使って接続**する
  - **VPNゲートウェイ** 同士でつなげる方式
  - **ほかの拠点のネットワークをハブで繋がったLANの延長のように利用できる**
* リモートVPN
  -  外出先のPCから社内LANに接続する時(リモートVPN)
  -  **端末ごとにVPNゲートウェイと接続する方式**

**VPNはLANとLANを接続するだけでなく、外出している社員のノートPCから東京にあるLANに接続することもできます。**


VPNは接続形態に応じて「拠点間VPN」と「リモートアクセスVPN」の2種類がある。
VPNの種類毎にサイト間VPNとリモートアクセスVPNのどっちが適しているかがある
拠点間VPNで利用されるセキュリティプロトコルのうち最も一般的なのが「IPsec」



## 拠点間VPN
[VPNワイド](https://business.ntt-east.co.jp/service/vpnwide/)

* VPNを実装したルータorサーバー同士を接続
* 企業の拠点間(LAN と LAN)を接続する時に使用する構成
* VPNの実装（パケットの暗号化、復号、カプセル化、非カプセル化）は、全てルータで行う
 ことから、クライアントPCにVPNクライアントソフトウェアをインストールする必要はない
* **VPNゲートウェイ**と呼ばれる
http://e-words.jp/w/VPN%E3%82%B2%E3%83%BC%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A4.html

## リモートアクセスVPN
* VPNを実装したルータorサーバーとVPNクライアントソフトをインストールしたPCとを接続する構成
* 同じような形態に[コンピュータ間 VPN](https://ja.softether.org/4-docs/1-manual/A/10.1)がある
  - リモート接続したサーバーでhub接続されたコンピュータ間で通信できる
  - Hub接続とはおそらくVPNサーバーの中の仮想スイッチに接続するイメージで、そのhubにVPN接続したPC間で接続できる



# よく使うであろう、インターネットVPNとは
* `一般のインターネット回線`を使う技術
* 拠点のLAN同士が接続する「`LAN型VPN（サイト間VPN、site-to-site VPNとも`）」と、ノートPCやスマートフォンなどにインストールしたVPNクライアントソフトを利用し、拠点のLANに接続する`「リモートアクセス型VPN」`がある。


* IPsec-VPN
  * 受信者と送信者に同一の専用ソフトをインストールする必要あり
  * ネットワーク層で動作。TCPやUDPを使わずESP。よってポート番号があるトランスポート層を暗号化するのではないのでNAT機器を通過できなくなる可能性がある
* SSL-VPN
  * SSLによるリモートアクセスVPNの場合はWebブラウザさえあれば通信可能
  * HTTP以外のプロトコルを使用しているアプリケーションを利用する場合には、WebブラウザとJavaアプレットにより実現される

SSL-VPNなら外部からのリモートアクセス、IPSec VPNなら組織間アクセスという使い分け

* OpenVpn
  - SSL-VPN機能を備えたオープンソースソフトウェア
https://www.atmarkit.co.jp/flinux/special/openvpn/openvpnb.html

* IPsec-VPNとSSL-VPNの違い
https://milestone-of-se.nesuke.com/nw-basic/tls/compare-with-ipsec-and-tls/
https://www.atmarkit.co.jp/ait/articles/0310/18/news001.html

* IPsecとSSL-VPNの使い分け
  - SSL-VPNなら外部からのリモートアクセス、IPSec VPNなら組織間アクセス

### IP-VPN
IP-VPNは大手の通信事業者が用意している`閉域網を利用したVPN`
通信速度の安定性やセキュリティ面ではインターネットVPNより優れています。

* 閉域網とは
  - キャリアだけのネットワークに閉じたインターネット網のこと
* IP-VPNの閉域網では複数の事業者のトラフィックが混在するので、MPLSの技術を用いてパケットにラベルをつける。
* ラベル
  - 利用者を識別するVPN識別ラベル
  - 経路情報のための転送ラベル

# SSL-VPNについて
## 3つの方式
「リバースプロキシ」「ポートフォワーディング」「L2フォワーディング」

* セッション層のSSLを使うのでSSLをアプリケーション側で実装していないと使えない。よって主にWEBブラウザが使われる**(リバースプロキシ)**
* WEBブラウザに対応していないような業務アプリケーションを使う場合には、SSL-VPN装置からJavaアプレットをダウンロードしてJAVAアプレット経由で業務アプリケーションを使う。ポートマッピングなど**(ポートフォーワーディング)**
* PCにSSLVPNソフトをインストールしてLANを拡張する形で利用。そのLANのすべてにアクセスできるようになる。**(L2フォワーディング)** OPEN VPNなど


## SSL-VPNのセキュリティについて
なりすましによる不正アクセスは個人向けサイトだけでなく、企業が従業員向けに用意したリモートアクセス環境にも被害がでている

* ID/パスワードだけで認証するだけではなく、`電子証明書(クライアント認証)やワンタイムパスワード`を使って、`2要素認証`を使うほうが安全

## 「L2フォワーディング」 OpenVPNの種類
OpenVPNはSSL-VPNを用いて、方式にはルーティング方式と，ブリッジ方式がる


# OpenVPN 仮想レイヤ 3 スイッチによる IP ルーティング
https://www2.softether.jp/jp/vpn2/manual/web/10-6.aspx

拠点間でもリモートでも、仮想レイヤ3スイッチを使ってセグメントが異なるもルーティングして接続できるみたい。
リモートではOpenVPNを使ってしている例
  https://qiita.com/MoriKen/items/7fe17fda8442adb599d9



# fortigateの場合
https://network-beginner.xyz/fortigate60d/ssl-vpn



FortigateのSSL-VPNには、Webアクセスモードとトンネルモードがあり、Webアクセスはその名の通り、Webブラウザの画面より、内部にアクセスするモードことです。　**リバースプロキシ**

トンネルモードはFortiClientというアプリケーションを使用して内部にアクセスするモードです。
**L2フォワーディング**

# yamahaの場合

https://news.mynavi.jp/article/vpn_yamaha-7/

RTX1210を使ったリモートアクセスVPNでは、PPTPまたはL2TP/IPsecのプロトコルを


# IPssecとSSL-VPNについて
どちらもリモートアクセスVPNで利用可能
IPsecは拠点間VPNで主に用いられる

# IPsec(インターネットVPN) サイト間
* VPNゲートウェイ間でIPsec通信
* LAN内では平文

# 詳しくは
https://milestone-of-se.nesuke.com/nw-basic/ipsec/ipsec-summary/

## 2種類のプロトコル
https://milestone-of-se.nesuke.com/nw-basic/ipsec/ipsec-summary/

* ESPとAH(暗号化なし)

**ほぼ間違いなくIPsecではESPが使われる** 

## 2種類のモード
トンネルモードとトランスポートモード(SSLと競合、SSLのほうが利便性がある)

**ほぼ間違いなくIPsecえはトンネルモードが使われる**


# まとめ
IPsecはESPプロトコルを使ってトンネルモードでサイト間VPNとリモートVPNを実現する

## IKE
鍵交換プロトコル
IKEとは、IPsecにおける鍵（Key）を交換（Exchange）する鍵交換プロトコルです。
実際には、鍵交換だけでなく、使用する暗号方式や認証方式などもIKEによって決定します。



### IKEのモード
メインモード
固定IP
セキュリティつよい

アグレッシブモード
動的IP
メインよりセキュリティ弱い

# IPsecの通信フェーズ
https://network.yamaha.com/knowledge/vpn/protocol

VPN端末同士で大きく3つのフェーズからなる

IKEフェーズ1
* 認証方式（事前共有鍵であるPSKや証明書認証など）や、暗号化方式（3DESやAESなど）を決めます。このとき、VPNルータ間でIKEに従ってやり取りしたことにより合意された内容を、「SA」（SecurityAssociation）と呼びます。
* IKEフェーズ1では「ISAKMPSA」と呼ばれる制御用のSAを作ります。このSAをフェーズ2の通信で利用します。

IKEフェーズ2
「IPsecSA」と呼ばれる通信用のSAを作ります。このSAを、次で説明するIPsec通信が使用します。

2つのフェーズに分けることで高速化しているらしい

IPsec通信
IPsecSAを用いて、セキュアな通信


### IPsecのNATトラバーサル
ESPプロトコル使う。ただしESPプロトコルはポート番号情報持たないのでNAPTするルータだと通信できない。

NATトラバーサル技術を使って
ESPにUDPヘッダをくっつける

fortigateはNATトラバーサルにUDPの4500を使用する



# fortigateでのSSL-VPN
https://www.n-study.com/sslvpn-2/

## SSL-VPNのモード
* webアプリケーションモード(リバースプロキシ)
  - httpまたはhttpsを中心にFTP、SMB/CIFS、TELNET、SSH、VNC、RDPといったアプリケーションをサポートします。クライアントからは、Webブラウザだけで通信ができますので、特別なソフトウェアをインストールする必要がありません。

* ポートフォワードモード
  - ウェブアプリケーションモードは、http（https）などの特定のアプリケーションに限定したアクセスを提供するものでした。ポートフォワードでは、特殊なものも含め、アプリケーションの範囲を広げて利用できるようにしたもので、Javaアプレットを使って実現します。クライアントには、Javaアプレットがダウンロードされます。

* トンネルモード
  - 現在、**最も多く使われている接続方式がトンネルモード**です。
  - トンネルモードでは、レイヤ3で動作させます。具体的には、パソコンに仮想NICと仮想IPアドレスを割り当てることで、内部LANから見てあたかも**同じネットワーク**にいるかのような通信ができます。ですから、Webアプリケーションに限らず、ファイルサーバだろうが、特殊なアプリケーションだろうが、アプリケーションを限定することなく利用することができます。
  -  ただし、トンネルモードで利用するには、クライアント側に専用のクライアントソフトが必要になることがほとんどです。FortiGateの場合は「FortiClient」と呼ばれるクライアントソフトをインストールする必要があります。FortiClient自体は無償で利用できるように公開されています。


リモート接続でSSLVPNかIPsecか
https://www.atmarkit.co.jp/ait/articles/0310/18/news001.html

# まとめ

結論としては、どのようなソリューションを導入するかは、

どのようなエンドユーザーが対象なのか
どのような使い方を想定するのか
どの程度のセキュリティを実現する必要があるのか

https://www.sbbit.jp/article/cont1/15744