hiroportation

ITの話だったり、音楽の話、便利なガジェットの話題などを発信しています

VPNの種別や仕様をjson化してまとめてみる

はじめに

VPN には IPsec-VPN や インターネットVPN など 様々なタイプや仕様があるため、全体を整理し、仕様も含めたドキュメントデータベースを作成してみようかと思います。

情報整理

どういったサイト間でVPNを使うのか?

・インターネット経由で通信する場合(危険でオープンなネットワーク)
 -> インターネットVPN
 ・対向先とプライベートネットワーク(L2)を設けた上で様々な作業を実施したい(SSH/HTTPS)
  -> IPsec-VPN
   ・ESP + トンネルモードをつかう
    -> 事前準備:両方のVPNにPSKを設定
    -> 第一フェーズ:IKE SAに必要な情報を交換
     ・共有鍵 Diffie-Hellmanで共有鍵を安全に交換
     ・SAに使う暗号アルゴリズムを提案
     ・SAに使うハッシュアルゴリズムを提案
     ・PSKと相手のIPでハッシュ値作成
      -> お互いの証明が可能になる
       ・暗号アルゴリズム、ハッシュアルゴリズムに対する返答を返す
    -> 第二フェーズ:相互でコネクションするためにSAを上り下り二つ作成する
     ・SAのための暗号アルゴリズム決定
     ・SAのためのハッシュアルゴリズム決定
 ・対向先にHTTP通信(80/443)のみで安全にアクセスしたい
  -> SSL-VPN
   ・ ブラウザアクセスのみをする場合
    -> リバースプロキシ方式
     ・経由するリバースプロキシサーバが必要
     ・リバースプロキシにてURLを変換する
   ・ブラウザアクセスだけでなく、様々なアプリケーションにてアクセスを行う場合
    -> ポートフォワーディング方式
     ・踏み台となる(経由する)サーバが必要
     ・踏み台サーバにて静的なポート変換が行われる
    -> L2フォワーディング方式
     ・クライアント側は送信するパケットをHTTP(L7)でカプセル化して通信するため、専用のクライアントソフトが必要になる
     ・クライアントはアクセス先からダウンロードしたソフトをインストールする必要がある
     ・クライアントソフトに対応したクライアントが必要
・専用回線を使って通信する場合(クローズドで安全なネットワーク)
 -> キャリア回線を使う(docomo/KDDI/Softbank)
  -> IP-VPN(L3VPN)
   ・MPLS
   ・SRMPLS?/SRv6?
 -> 有料VPNサービスを使う(Arcstar Universal One)
  -> 広域イーサーネット(L2VPN)
   ・EVPN
   ・SRv6?

整理した内容をjson

{ 
  "インターネット経由で通信する場合(危険でオープンなネットワーク)" :  {
    "インターネットVPN" : {
      "対向先とプライベートネットワーク(L2)を設けた上で様々な作業を実施したい(SSH/HTTPS)" : {
        "IPsec-VPN" : {
          "ESP + トンネルモードをつかう" : {
             "事前準備":"両方のVPNにPSKを設定",
             "第一フェーズ": {
               "IKE SAに必要な情報を交換" : [
                    "共有鍵 Diffie-Hellmanで共有鍵を安全に交換",
                    "SAに使う暗号アルゴリズムを提案",
                    "SAに使うハッシュアルゴリズムを提案",
                    "PSKと相手のIPでハッシュ値作成" : { "お互いの証明が可能になる" : "暗号アルゴリズム、ハッシュアルゴリズムに対する返答を返す" }
                 ]
             }
             "第二フェーズ":{
               "相互でコネクションするためにSAを上り下り二つ作成する" : [ 
                    "SAのための暗号アルゴリズム決定",
                    "SAのためのハッシュアルゴリズム決定"
                 ]
          }}}}}
    "対向先にHTTP通信(80/443)のみで安全にアクセスしたい" : {
      "SSL-VPN" : {
        "ブラウザアクセスのみをする場合" : {
           "リバースプロキシ方式" : [ 
                "経由するリバースプロキシサーバが必要",
                "リバースプロキシにてURLを変換する"
             ]
           }
           "ブラウザアクセスだけでなく、様々なアプリケーションにてアクセスを行う場合" : {
             "ポートフォワーディング方式" : [
                 "踏み台となる(経由する)サーバが必要",
                 "踏み台サーバにて静的なポート変換が行われる"
               ]
             "L2フォワーディング方式" : [
                 "クライアント側は送信するパケットをHTTP(L7)でカプセル化して通信するため、専用のクライアントソフトが必要になる",
                 "クライアントはアクセス先からダウンロードしたソフトをインストールする必要がある",
                 "クライアントソフトに対応したクライアントが必要"
               ]
  "専用回線を使って通信する場合(クローズドで安全なネットワーク)" : {
    "キャリア回線を使う(docomo/KDDI/Softbank)" : {
      "IP-VPN(L3VPN)" : [
          "MPLS",
          "SRMPLS",
          "SRv6"
       ]
     }
  }
  "有料VPNサービスを使う(Arcstar Universal One)" : {
    "広域イーサーネット(L2VPN)" :  [
        "EVPN",
        "SRMPLS",
        "SRv6"
      ]
    }
  }
}