はじめに
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" ] } } }