前のトピック: NET - ファイアウォール付きネットワーク出力ゲートウェイ(iptables)

次のトピック: 動的カタログ

VPN - 仮想プライベート ネットワーキング アプライアンス

最新バージョン: 2.0.1-1

VPN アプライアンス

早見表

カタログ

システム

カテゴリ

ゲートウェイ

ユーザ ボリューム

あり

最小 メモリ

96M

OS

Linux

制約

なし

機能の概要

VPN は、IPv4 および IPv6 ネットワークで動作する Virtual Private Networking アプライアンスで、グリッド間通信およびアプリケーションとアプライアンスへのリモート アクセス用の安全で信頼できるトンネルを提供するために設計されています。 また、VPN は VPN トンネルを使用せずに動作できます。その場合は、結合されたクリア テキスト IN/OUT ゲートウェイとして機能します。 VPN を使用して、シームレスに IPv4 と IPv6 の CA 3Tera AppLogic グリッドを相互接続することもできます。 VPN は、OpenVPN、OpenSSH および Racoon オープン ソース ソフトウェア パッケージに基づいています。

VPN には次の 3 つの基本操作モードがあります。server、client、both。

VPN は、IPSec、共有秘密ファイル、SSL 証明書、認証と暗号化用の ssh キー ファイルをサポートします。 通常の OpenVPN/OpenSSH クライアントをリモート ワークステーション上で使用して、VPN に接続できます。接続後は、CA 3Tera AppLogic 上で実行されるアプリケーションの内部コンポーネントへの安全なアクセスが提供されます。 VPN アプライアンスは、共有秘密ファイル、SSL 証明書、および ssh キーの生成をサポートします。

VPN を使用する安全な VPN トンネルを介して、CA 3Tera AppLogic アプリケーションにリモートアクセスするには、OpenVPN クライアント側ソフトウェアまたは OpenSSH をクライアントのマシン上で使用できます(または互換性のあるその他のソフトウェア)。

境界

リソース

リソース

最小

最大

デフォルト

CPU

0.1

16

0.2

メモリ

96 MB

32 GB

96 MB

帯域幅

1 Mbps

2 Gbps

250 Mbps

端子

名前

方向

プロトコル

説明

clt

in

任意

VPN がクライアントとして動作するとき、外部インターフェースを介して転送されるすべての受信トラフィックの共通入力。 トンネルが外部インターフェース上で確立されるように VPN が設定されている場合、clt へ送られるパケットは確立されたトンネルに転送されるか、トンネルが停止している場合はドロップされます。

srv

out

任意

VPN がサーバとして動作するとき、外部インターフェースを介して受信するすべての送信トラフィックの共通出力。 トラフィックはすべて、srv を介して送信される前に、tcp_ports、udp_ports、ssh_ports、aux_protocols プロパティを使用してフィルタされます。

fs

out

NFS

NFS 上での読み取り/書き込みファイル アクセスを提供する、共有ファイル ストレージ用ネットワーク ファイル システムへのアクセス。 このボリュームは /mnt/fs としてアプライアンスのファイルシステム スペース内にマウントされ、暗号化キーと証明書のストレージに使用されます。 接続されたサーバには、/mnt/data という名前の読み取り/書き込み共有が必要です。 VPN がクリアテキスト モードで動作する場合、データ ボリュームも NFS マウント済みボリュームも必要ではありません。 使用しないとき、この端子は接続しておかなくてもかまいません。

log

out

CIFS

アクセスとエラー ログを格納するための CIFS ベースのネットワーク ファイル システムへのアクセス。 接続サーバは匿名ログインを許可し、share という名前の読み取り/書き込み共有が必要です。 使用しないとき、この端子は接続しておかなくてもかまいません。

mon

out

CCE

パフォーマンスとリソースの使用状況統計を送信するために使用されます。 使用しないとき、この端子は接続しておかなくてもかまいません。

プロパティ

一般プロパティ

プロパティ名

タイプ

説明

ip_addr

ip_owned

ゲートウェイの外部インターフェースの IPv4 アドレスを定義します。 VPN が IPv4 のみのモードで動作する場合、このプロパティは必須です。

netmask

IP アドレス

外部インターフェースの IPv4 ネットワーク マスクを定義します。 VPN が IPv4 のみのモードで動作する場合、このプロパティは必須です。

gateway

IP アドレス

外部インターフェース用のデフォルト IPv4 ネットワーク ゲートウェイ(ルータ)を定義します。 空にしておくと、ip_addr/netmask と同じサブネット上のホストにしかアクセスできません。 デフォルト:

ipv6_addr

文字列

ゲートウェイの外部インターフェースの IPv6 アドレスを定義します。 IPv6 アドレスは、4 桁の 16 進数 8 グループからなる標準アドレス記法で指定されます。 1 つまたは任意の数の、値 0 の連続したグループは、2 つのコロン(::)に置き換えることができます。 フォーマットはアドレス/ネットマスクです。たとえば「fc00:1234:5678::12/64」のようになります。 VPN が IPv6 のみのモードで動作する場合、このプロパティは必須です。

ipv6_gateway

文字列

外部インターフェース用のデフォルト IPv6 ネットワーク ゲートウェイ(ルータ)を定義します。 空にしておくと、ipv6_addr と同じサブネット上のホストにしかアクセスできません。 デフォルト:

dns1

IP アドレス

VPN による DNS リクエストの転送先となるプライマリ DNS サーバを定義します。 空にしておくと、VPN はルート DNS サーバを使用します。 デフォルト:

dns2

IP アドレス

プライマリ DNS サーバを使用できない場合に、VPN による DNS リクエストの転送先となるバックアップ DNS サーバを定義します。 空にしておくと、VPN はバックアップ DNS サーバを使用しません。 デフォルト:

重要: 少なくとも 1 ペアのアドレス(IPv4 または IPv6)を定義する必要があります。

VPN プロパティ

プロパティ名

タイプ

説明

mode

文字列

動作モード。 有効な値は以下のとおりです。
server - VPN はサーバ モードで動作し、外部インターフェース上の確立されたトンネルから受信トラフィックを受け付け、それを srv 端子へ送信します。
client - VPN はクライアント モードで動作し、clt 端子上で受信トラフィックを受け付け、外部インターフェース上の確立されたトンネルへ送信します。
both - VPN はクライアント モードとサーバ モードの両方で動作します。
デフォルト: server

tunnel

文字列

確立するトンネルのタイプ。 有効な値は以下のとおりです。
certificate - OpenVPN との認証および暗号化に SSL クライアントおよびサーバ証明書を使用して、VPN トンネルが確立されます。 サーバ証明書がない場合は、自動的に生成されます。クライアント証明書は、VPN サーバにある /appliance/security.sh スクリプトによって手動で生成し、データ ボリュームまたは nfs マウント済みボリューム上の /client/ サブディレクトリへコピーする必要があります。 このモードは IPv4 と IPv6 で動作します。
shared secret - OpenVPN との間に共有秘密ファイルを使用して、VPN トンネルが確立されます。 このファイルがない場合は、VPN サーバ上に自動で生成され、データ ボリュームまたは nfs マウント済みボリュームの /server/ サブディレクトリ内に配置されて secret.key と命名されます。 このファイルはクライアント VPN アプライアンス上で /client/ サブディレクトリにコピーする必要があります。 このモードは IPv4 と IPv6 で動作します。
SSH key - 認証に OpenSSH キーファイルを使用して SSH トンネルが確立されます。 キーファイルは /appliance/security.sh サーバ側スクリプトで生成されます。 クライアント キーファイルは、nfs マウント済みストレージのデータ ボリュームの /client/ サブディレクトリにコピーする必要があります。 このモードは IPv4 と IPv6 で動作します。
ipsec shared secret - IPSec トンネルは VPN のインスタンス間で確立されます。 auth_path プロパティによって指定されるファイルの最初の行は、共有キーとして使用されます。 このモードは IPv4 のみで動作します。
ipsec certificate - 証明書を使用する IPSec トンネルは、VPN のインスタンス間で確立されます。 サーバ証明書がない場合は、自動的に生成されます。また、/appliance/security.sh スクリプトを使って生成することもできます。クライアント証明書は、VPN サーバにある /appliance/security.sh スクリプトによって手動で生成し、データ ボリュームまたは nfs マウント済みボリューム上の /client/ サブディレクトリへコピーする必要があります。 このモードは IPv4 のみで動作します。 どちらの操作モードの場合も、すべての証明書は同じアプライアンスによって生成され、その ca.crt 証明書とともに配布される必要があります。
cleartext - トンネルは確立されません。VPN アプライアンスは、結合された IN/OUT ゲートウェイとして動作し、clt 端子上のトラフィックを受け付けてから外部インターフェースを介して転送し、外部インターフェース上のトラフィックを受け付けてから srv 端子を介して転送します。 このモードは IPv4 と IPv6 で動作します。 IPv6 モードの場合は、remote_host プロパティにピアのアドレスが含まれる必要があります。
デフォルト: cleartext

auth_path

文字列

トンネルの認証情報。 共有秘密モードの操作では、これはデータ ボリューム上の共有秘密ファイルへの相対パスになります(例: 「client/secret.key」ファイルの場合は 「secret.key」)。 証明書モードの場合は、これは証明書/キー ファイルのペアへの相対パスで、拡張子なしのファイル名を含めます。 たとえば、証明書ファイル client1-2009.crt および client1-2009.key がデータ ボリュームの /client サブディレクトリ内にある場合、ここでは client1-2009 を指定する必要があります。 トンネルがクリアテキストである場合、このプロパティは無視されます。 トンネルが SSH キーである場合、このプロパティは、SSH 公開キー ファイル(VPN サーバの場合)、または秘密キー ファイル(VPN クライアントの場合)へのパスになります。パスにはファイル名も含まれます(例: /client/1/ssh.key 公開キー ファイルの場合は /1/ssh.key)。
デフォルト: 空

log_level

文字列

VPN ロギング レベル。 有効な値は以下のとおりです。
none - 何もログ記録されません。
emerg - VPN によって検出されたエラーのみがログ記録されます。
warn - 警告とエラーの両方をログ記録します。
notice - 警告、エラーおよび通知をログ記録します。
debug - 警告、通知およびエラーに加えて、追加のデバッグ情報をログ記録します。
デフォルト: log 端子が接続されていない場合は none、log 端子が接続されている場合は emerg。

サーバ プロパティ

allowed_hosts

文字列

接続できるホストまたはサブネット、あるいはその両方のリスト。 スペースまたはカンマで複数のエントリを区切ります。 サポートされている形式の例: 192.168.1.2 192.168.1.0/24 192.168.2.0/255.255.255.0 fc00:1234::12/64。
デフォルト: 0.0.0.0/0 (IPv4 と IPv6 の両方ですべて許可されます)

tcp_ports

文字列

srv 端子上で許可されるポート番号またはポート範囲。 カンマまたはスペースで区切られた値の文字列を受け付けます。 ポート範囲は、区切り記号としてコロンまたはダッシュを使用し、lower_port:higher_port として指定する必要があります(たとえば、80,81,82:85 86-90)。 0 は特殊な値で、すべての tcp ポートが受け入れられることを意味します。
デフォルト: 空

udp_ports

文字列

tcp_ports と同じですが、UDP プロトコルを対象とします。
デフォルト: 空

aux_protocols

文字列

カンマまたはスペースで区切られた、追加で許可される IP プロトコル番号の文字列(たとえば、TCP は 6、GRE は 47)。 個別のプロトコルは、それぞれの名前によって指定してもかまいません(たとえば、「47」の代わりに「gre」など)。 割り当てについては、http://www.iana.org/assignments/protocol-numbers を参照してください。
デフォルト: 空(無効)

クライアント プロパティ

remote_host

文字列

すべてのトラフィックの転送先となるリモート ホストを定義します。 これは、ホストの DNS 名か、「ドット」記法によるホストの IPv4 または IPv6 アドレスです。 このプロパティは必須です。
デフォルト: 空

dns_poll

整数

remote_host の DNS 名から IP アドレスへのマッピングを確認するときに VPN が使用する、秒単位のポーリング間隔(remote_host が DNS 名として指定される場合にのみ使用されます)。 0 に設定すると、ポーリングは無効になり、変更の検出を試みません。
デフォルト: 3600 秒 (1 時間)

ssh_ports

文字列

SSH キー モードのクライアント側プロパティで、どの tcp ポートを VPN サーバへ転送するかを指定します。 ポート範囲はサポートしていませんが、ポートはスペースまたはカンマで区切ることができます。
デフォルト: 空

ボリューム

名前

説明

data

環境設定ファイルおよび証明書ファイルが含まれる読み取り/書き込みデータ ボリューム(プレースホルダ)。 fs 端子が接続されている場合、このボリュームは必要ありません。 fs が接続され、データ ボリュームが提供されている場合、VPN は起動せず、エラー メッセージをログ記録します。 VPN サーバ動作に必要なファイルはすべて、データ ストレージの /server/ サブディレクトリ内に格納されます。 VPN クライアント動作に必要なファイルはすべて、/client/ サブディレクトリ内に格納されます。

カスタム カウンタ

VPN アプライアンスは、mon 端子を介して以下のカスタム カウンタをレポートします。

カウンタ名

説明

server_bytes_in

VPN が受信した総バイト数。

server_bytes_out

VPN が送信した総バイト数。

client_bytes_in

クライアント トンネルから受信した総バイト数。

client_bytes_out

クライアント トンネルに送信した総バイト数。

clients

VPN に接続されたクライアント数。

パフォーマンス

2 つのテスト アプリケーションが同じ CA 3Tera AppLogic グリッド上に存在していました。 100mbit 帯域幅は、両方の VPN アプライアンス(クライアントとサーバ)、およびサーバとクライアントのアプライアンスに割り当てられました。 サイズが各 1 メガバイトの複数のオブジェクトを取得。60 秒間で 10 のオブジェクトを並行して取得しました。

モード

帯域幅、Mbit/秒

オブジェクト サイズ

リクエスト数/秒

転送レート、MB/秒

証明書

100

1MB

12.5667

12.56

共有秘密

100

1MB

12.5166

12.51

SSH キー

100

1MB

12.7667

12.76

クリアテキスト

100

1MB

13.0329

13.03

エラー メッセージ

アプライアンスの起動に失敗した場合、以下の内容のエラーがシステム ログにログ記録される場合があります。

エラー メッセージ

説明

データ ボリュームをマウントできませんでした

VPN がデータ ボリュームのマウントに失敗しました。 ボリュームがフォーマットされ使用可能であることを確認してください。

server_key を生成できませんでした

VPN が共有秘密ファイルの生成に失敗しました。 データ ボリュームが小さすぎるか、読み取り専用でマウントされたためと思われます。

OpenVPN サーバを起動できませんでした

VPN が OpenVPN サーバの起動に失敗しました。 CA Technologies のサポートにお問い合わせください。

証明書を生成できませんでした

VPN が証明機関の作成に失敗し、証明書サーバの操作モードに必要な証明書の生成に失敗しました。 データ ボリュームが小さすぎるか、読み取り専用でマウントされたためと思われます。

DH ファイルを生成できませんでした。

VPN が Diffie-Hellman キー ファイルの生成に失敗しました。 データ ボリュームが小さすぎるか、読み取り専用でマウントされたためと思われます。

秘密ファイル client_auth が存在しません

認証プロパティ中で指定されたファイル client_auth が存在しません。 ファイルのパスと名前を確認してください。

リモート サーバ アドレスが空です

トンネル X 用のリモート VPN サーバ アドレスが空です。

clientX トンネル用の OpenVPN を起動できませんでした

VPN が、クライアント トンネル X 用の OpenVPN ソフトウェアの起動に失敗しました。 いくつかのプロパティまたはキー ファイルが無効な可能性があります。

証明書ファイル client_auth.crt が存在しません

VPN が証明書ファイルを見つけられませんでした。 証明書クライアント モード操作の認証プロパティで、無効なパスまたはファイル名が指定されています。

キー ファイル client_auth.key が存在しません

VPN がキー ファイルを見つけられませんでした。 証明書クライアント モード操作の認証プロパティで、無効なパスまたはファイル名が指定されています。

証明機関の証明書 ca_cert がありません

VPN が証明機関の証明書を見つけられませんでした。 証明書はデータ ボリューム上の /CA/ca.crt ファイルに存在する必要があります。

トンネルのタイプ

クリアテキスト

このモードは、単一サーバと複数クライアントのシナリオをサポートします。複数の場所から VPN サーバへのアクセスを許可します。 このモードでは VPN トンネルが確立されず、データ ストアも必要ではありません(データ ボリュームと NAS アプライアンスのどちらも fs 端子に接続されていません)。 このモードは IPv4 と IPv6 で動作します。

サーバ VPN アプライアンスでは、外部インターフェース上で受信したトラフィックは、tcp_ports、udp_ports、aux_protocols プロパティによってフィルタされ、srv インターフェースへ転送されます。

クライアント VPN アプライアンスでは、clt インターフェース上で受信したすべてのトラフィックは、remote_host プロパティで指定されたリモート VPN サーバへ転送されます。

サーバ側で設定する必要があるプロパティは、ip_addr、netmask、gateway、mode、tunnel、allowed_hosts、tcp_ports、udp_ports、aux_protocols です。

クライアント側で設定する必要があるプロパティは、ip_addr、netmask、gateway、mode、tunnel、remote_host です。

IPv6 モードが使用されている場合、サーバ側のプロパティ remote_host はクライアントのアドレスで設定する必要があります。

証明書

このモードは、単一サーバと複数クライアントのシナリオをサポートします。複数の場所から VPN サーバへのアクセスを許可します。 データ ストアが必要です(データ ボリュームか NAS アプライアンスのいずれかが fs 端子に接続されています)。 このモードは IPv4 と IPv6 の両方で動作します。

起動時に、必要な証明書およびキー ファイルが存在していない場合、サーバ アプライアンスがこれらのファイルを生成します。 これらのファイルは、/appliance/ ディレクトリ内で、security.sh スクリプトによって再生成することができます。 どの VPN クライアントも、設定する前にそのクライアント用の証明書を生成しておく必要があります。 ユーザは、実行されている VPN サーバ アプライアンスへログインし、以下のようにクライアント キー ペアを生成することができます。

grid> comp login VPN-1:main.VPN
CentOS release 5 (Final)

[VPN-1:main.VPN ~]# /appliance/security.sh generate_client
Generated client SSL certificate and key file.
==============================================
These files, with CA certificate file, should be copied to VPN server into
データ ボリュームまたは fs マウント ボリュームの /client/ サブディレクトリにコピーされる必要があります。
Path to client files (client.829de5afcac564b3) should be specified in auth_path property.
ファイルの場所:
client certificate: /mnt/fs/server/client.829de5afcac564b3.crt
client key file: /mnt/fs/server/client.829de5afcac564b3.key
CA certificate file located at /mnt/fs/server/ca.crt

クライアント証明書およびキー ファイルは、データ ストアの /client/ サブディレクトリへのクライアント VPN アプライアンスにコピーする必要があります。また、auth_path を適切な値に設定する必要があります(この場合は client.829de5afcac564b3)。 VPN サーバ(/mnt/fs/server/ca.crt)からの CA 証明書は、クライアント アプライアンス上の /client/ サブディレクトリにコピーし、「ca.crt」と命名する必要があります。 すべてのクライアント VPN アプライアンスに、それぞれの証明書が必要です。

サーバ VPN アプライアンスでは、外部インターフェース上で受信したトラフィックは復号化され、tcp_ports、udp_ports、aux_protocols プロパティによってフィルタされた後、srv インターフェースへ転送されます。

クライアント VPN アプライアンスでは、clt インターフェース上で受信したすべてのトラフィックは暗号化され、remote_host プロパティで指定されたリモート VPN サーバへ転送されます。

サーバ側で設定する必要があるプロパティは、ip_addr、netmask、gateway(または対応する IPv6 プロパティ)、mode、tunnel、allowed_hosts、tcp_ports、udp_ports、aux_protocols です。

クライアント側で設定する必要があるプロパティは、ip_addr、netmask、gateway(または対応する IPv6 プロパティ)、mode、tunnel、remote_host、auth_path です。

共有秘密ファイル

このモードは、単一サーバと単一クライアントのシナリオのみをサポートします。一度に 1 つのクライアントから VPN サーバへのアクセスのみを許可します。 データ ストアが必要です(データ ボリュームか NAS アプライアンスのいずれかが fs 端子に接続されています)。 このモードは IPv4 と IPv6 の両方で動作します。

起動時に共有秘密ファイル /server/secret.key が存在していない場合、サーバ アプライアンスがこのファイルを生成します。 このファイルは、/appliance/ ディレクトリ内で、security.sh スクリプトによって再生成することができます。 どの VPN クライアントを設定する前にも、この共有秘密ファイルを /client/ サブディレクトリ内のデータ ストアにコピーする必要があります。 共有秘密ファイルを新規に生成するには、実行する VPN サーバ アプライアンスへユーザがログインし、以下のコマンドを発行します。

[VPN-1:main.VPN server]# /appliance/security.sh generate_secret
Generated OpenVPN shared secrets file.
======================================
This file should be copied to VPN server into /server/ subdirectory of data volume or fs-mounted volume,
and to the VPN client into /client/ subdirectory of data volume or fs-mounted volume.
Path to it should be specified in auth_path property of the VPN client.
Location of file: /mnt/fs/server/secret.key

古い秘密ファイルがある場合、新規に生成された秘密ファイルが古いファイルを上書きします。 この共有秘密ファイル /mnt/fs/server/secret.key は、データ ストアの /client/ サブディレクトリ中のクライアント VPN アプライアンスにコピーする必要があります。また、auth_path プロパティを適切な値(この場合は secret.key)に設定します。 複数のクライアント VPN アプライアンスを設定できますが、接続できるのは常に 1 つのみです。

サーバ VPN アプライアンスでは、外部インターフェース上で受信したトラフィックは復号化され、tcp_ports、udp_ports、aux_protocols プロパティによってフィルタされた後、srv インターフェースへ転送されます。

クライアント VPN アプライアンスでは、clt インターフェース上で受信したすべてのトラフィックは暗号化され、remote_host プロパティで指定されたリモート VPN サーバへ転送されます。

サーバ側で設定する必要があるプロパティは、ip_addr、netmask、gateway (または対応する IPv6 プロパティ)、mode、tunnel、allowed_hosts、tcp_ports、udp_ports、aux_protocols です。

クライアント側で設定する必要があるプロパティは、ip_addr、netmask、gateway (または対応する IPv6 プロパティ)、mode、tunnel、remote_host、auth_path です。

SSH キー

このモードは、単一サーバと複数クライアントのシナリオをサポートします。複数の場所から VPN サーバへのアクセスを許可します。 データ ストアが必要です(データ ボリュームか NAS アプライアンスのいずれかが fs 端子に接続されています)。 ssh トンネルを介してトンネルできるのは tcp トラフィックのみです。したがって、サーバ側では tcp_ports プロパティのみが使用されます。 ポート範囲はサポートしていません。転送するすべてのポートは、ssh_ports のクライアント側プロパティで明示的に指定する必要があります。 このモードは IPv4 と IPv6 の両方で動作します。

vpn サーバは、起動時にデフォルトの ssh キーペアを生成します。デフォルト キーは、次の場所にあります。サーバ キー(公開キー)、server/ssh-server.pub クライアント キー(秘密キー)、server/ssh-client.key。追加のキーは、security.sh スクリプトを使用して手動で生成することができます。

[VPN-1:main.VPN ~]# /appliance/security.sh generate_ssh
Generated SSH keypair.
======================
Public key should be copied to VPN server into /server/ subdirectory of data volume or fs-mounted volume.
Private key should be copied to VPN client into /client/ subdirectory of data volume or fs-mounted volume.
Path to key files should be specified in auth_path property on both VPN client and server.
Location of files:
Public key: /mnt/fs/server/ssh.11179ebbfa3f6852.pub
Private key: /mnt/fs/server/ssh.11179ebbfa3f6852.key

公開キーは VPN サーバの /server/ サブディレクトリにコピーし、秘密キーはクライアントの /client/ サブディレクトリにコピーします。 auth_path プロパティは、クライアントとサーバの両方で設定する必要があります。 auth_path がサーバ上で空の場合、デフォルトの SSH キーが使用されます。

サーバ VPN アプライアンスでは、外部インターフェース上で受信したトラフィックは復号化され、ssh_ports プロパティによってフィルタされた後、srv インターフェースへ転送されます。 tcp ポート転送のみがサポートされています。 auth_path プロパティは、使用する SSH 公開キーを定義します。 アプライアンスがクライアント モードとサーバ モードの両方で動作しているとき、公開キーと秘密キーはどちらも同じ名前に命名し、/server/ および /client/ サブディレクトリに置く必要があります。 ssh_ports プロパティは同様に、サーバとクライアントの両方で設定する必要があります。

クライアント VPN アプライアンスでは、clt インターフェース上で受信したすべてのトラフィックは暗号化され、remote_host プロパティで指定されたリモート VPN サーバへ転送されます。

サーバ側で設定する必要があるプロパティは、ip_addr、netmask、gateway (または対応する IPv6 プロパティ)、mode、tunnel、allowed_hosts、auth_path、tcp_ports です。

クライアント側で設定する必要があるプロパティは、ip_addr、netmask、gateway(または対応する IPv6 プロパティ)、mode、tunnel、remote_host、auth_path、ssh_ports です。

重要: SSH サーバ - サーバ モードについて。 2 つの VPN アプライアンスを両方のモードで設定し、互いに接続することができます。 このモードを使用するには、以下のように特別な方法でアプライアンスを設定する必要があります。

VPN1 と VPN2 という名前の 2 つのアプライアンスがあると仮定します。1. 2 セットの公開/秘密キー ファイル(「/appliance/security.sh generate_ssh」スクリプトを使用する 1.key/1.pub、2. key/2.pub) を作成します。2. 「ssh.key」への両方のアプライアンス上の auth_path プロパティを設定します。3. 2.pub を VPN1:/mnt/data/server/ssh.key(または NAS ドライブの /server/ サブディレクトリ内の ssh.key ファイル)へコピーします(公開キーは /server/ サブディレクトリに移動します)。4. 2.key を VPN2:/mnt/data/client/ssh.key へコピーします(秘密キーは /client/ サブディレクトリに移動します)。5. 1.pub を VPN2:/mnt/data/server/ssh.key へコピーします(公開キーは /server/ サブディレクトリに移動します)。6. 1.key を VPN1:/mnt/data/client/ssh.key へコピーします(秘密キーは /client/ サブディレクトリに移動します)。

IPSec 証明書

このモードは、単一サーバと複数クライアントのシナリオをサポートします。複数の場所から VPN サーバへのアクセスを許可します。 データ ストアが必要です(データ ボリュームか NAS アプライアンスのいずれかが fs 端子に接続されています)。 このモードは IPv4 のみで動作します。

起動時に、必要な証明書およびキー ファイルが存在していない場合、サーバ アプライアンスがこれらのファイルを生成します。 これらのファイルは、/appliance/ ディレクトリ内で、security.sh スクリプトによって再生成することができます。 どの VPN クライアントも、設定する前にそのクライアント用の証明書を生成しておく必要があります。 ユーザは、実行されている VPN サーバ アプライアンスへログインし、以下のようにクライアント キー ペアを生成することができます。

grid> comp login VPN-1:main.VPN
CentOS release 5 (Final)

[VPN-1:main.VPN ~]# /appliance/security.sh generate_client
Generated client SSL cerfiticate and key file.
==============================================
These files, with CA certificate file, should be copied to VPN server into
データ ボリュームまたは fs マウント ボリュームの /client/ サブディレクトリにコピーされる必要があります。
Path to client files (client.829de5afcac564b3) should be specified in auth_path property.
ファイルの場所:
client certificate: /mnt/fs/server/client.829de5afcac564b3.crt
client key file: /mnt/fs/server/client.829de5afcac564b3.key
CA certificate file located at /mnt/fs/server/ca.crt

クライアント証明書およびキー ファイルは、データ ストアの /client/ サブディレクトリへのクライアント VPN アプライアンスにコピーする必要があります。また、auth_path を適切な値に設定する必要があります(この場合は client.829de5afcac564b3)。 VPN サーバ(/mnt/fs/server/ca.crt)からの CA 証明書は、クライアント アプライアンス上の /client/ サブディレクトリにコピーし、「ca.crt」と命名する必要があります。 すべてのクライアント VPN アプライアンスに、それぞれの証明書が必要です。

重要: VPN が both モードで使用される場合、例外が存在します。 この場合、クライアントとサーバのすべての証明書は、同じ VPN インスタンスによって生成し、他のインスタンスへの ca.crt 証明書と共に生成する必要があります。

サーバ VPN アプライアンスでは、外部インターフェース上で受信したトラフィックは復号化され、tcp_ports、udp_ports、aux_protocols プロパティによってフィルタされた後、srv インターフェースへ転送されます。

クライアント VPN アプライアンスでは、clt インターフェース上で受信したすべてのトラフィックは暗号化され、remote_host プロパティで指定されたリモート VPN サーバへ転送されます。

サーバ側で設定する必要があるプロパティは、ip_addr、netmask、gateway(または対応する IPv6 プロパティ)、mode、tunnel、allowed_hosts、tcp_ports、udp_ports、aux_protocols です。

クライアント側で設定する必要があるプロパティは、ip_addr、netmask、gateway(または対応する IPv6 プロパティ)、mode、tunnel、remote_host、auth_path です。

IPSec 共有秘密

このモードは、単一サーバと複数クライアントのシナリオをサポートします。複数の場所から VPN サーバへのアクセスを許可します。 データ ストアが必要です(データ ボリュームか NAS アプライアンスのいずれかが fs 端子に接続されています)。 このモードは IPv4 のみで動作します。

起動時に、サーバ アプライアンスは auth_path プロパティによって指定されるファイルの最初の行を抽出し、共有キーとして使用します。 このファイルは両方のパーティ上に存在する必要があります。 どの VPN クライアントを設定する前にも、この共有秘密ファイルを /client/ サブディレクトリ内のデータ ストアにコピーする必要があります。

サーバ VPN アプライアンスでは、外部インターフェース上で受信したトラフィックは復号化され、tcp_ports、udp_ports、aux_protocols プロパティによってフィルタされた後、srv インターフェースへ転送されます。

クライアント VPN アプライアンスでは、clt インターフェース上で受信したすべてのトラフィックは暗号化され、remote_host プロパティで指定されたリモート VPN サーバへ転送されます。

サーバ側で設定する必要があるプロパティは、ip_addr、netmask、gateway(または対応する IPv6 プロパティ)、mode、tunnel、allowed_hosts、tcp_ports、udp_ports、aux_protocols です。

クライアント側で設定する必要があるプロパティは、ip_addr、netmask、gateway(または対応する IPv6 プロパティ)、mode、tunnel、remote_host、auth_path です。

典型的な使用状況

外部サービスへのリモート アクセス

以下の図は、外部サービスのリモート アクセスの設定方法の例を示しています。

例: グリッド A 上で実行され、安全な VPN トンネルを介してグリッド B 上で実行されるリモート MySQL データベースにアクセスする Web アプライアンス

この例では、グリッド A 上で実行される Web アプライアンスで、安全な VPN トンネルを介してグリッド B 上で実行されるリモート MySQL データベースにアクセスします。

グリッド A 上の vpn1 は、グリッド B 上の vpn2 に割り当てられた IP アドレスに接続するように設定されます。 vpn1 の srv 端子、および vpn2 の clt 端子は、未接続のままです。 vpn1 と vpn2 の外部インターフェースは、適切なルーティング可能 IP アドレスで設定されます。

プロパティ設定の例:

vpn1:

プロパティ名

ip_addr

25.74.63.87

vpn1 に使用される外部 IP

netmask

255.255.255.0

ネットマスク

gateway

25.74.63.1

ゲートウェイ

mode

client

クライアント操作モード

tunnel

ipsec certificate

トラフィックは IPSec を使用して暗号化されます

auth_path

client-7575

証明書/キー ファイル ペアの名前

remote_host

12.12.12.12

vpn2 の外部インターフェースに割り当てられた外部 IP

vpn2:

プロパティ名

ip_addr

12.12.12.12

vpn2 に使用される外部 IP

netmask

255.255.255.0

ネットマスク

gateway

12.12.12.1

ゲートウェイ

mode

server

サーバ操作モード

tunnel

ipsec certificate

トラフィックは IPSec を使用して暗号化されます

allowed_hosts

25.74.63.87

vpn1 からの接続のみを許可します

tcp_ports

3306

MySQL サーバ用のデフォルト ポート

内部 CA 3Tera AppLogic アプライアンスへのリモート アクセス

以下の図は、内部 CA 3Tera AppLogic アプライアンスへのリモート アクセスの設定方法の例を示しています。

例: OpenVPN クライアントを使用し、安全な VPN 接続を通じて、自分の PC から異なる複数のアプライアンスにアクセスする必要があるユーザ

この例の場合、ユーザは、自分の PC から OpenVPN クライアントを使用し、安全な VPN 接続を通じて、異なる複数のアプライアンスにアクセスする必要があります。 OpenVPN は vpn に割り当てられた IP アドレスに接続するために使用されます。 Vpn は、ユーザの PC で VPN トンネルを確立し、アプリケーション内の 4 つの異なるアプライアンスにトラフィックを配信するように設定された sw ポート スイッチにすべての受信トラフィックを転送します。

OpenVPN は、この例で説明されているように、VPN アプライアンスを使用する CA 3Tera AppLogic アプリケーションにアクセスする前にユーザの PC にインストールする必要があります。 以下の手順では、このアプリケーションがどのように設定されるか、および安全な VPN トンネルを介してアプリケーションにアクセスするには、ユーザが何を実行する必要があるかを説明します。

  1. ユーザは自分の PC に OpenVPN をインストールする必要があります。 OpenVPN は、さまざまな場所から取得できる可能性があります(Windows Vista 上では動作しない OpenVPN についてレポートされています)。 インストール後に、CA 3Tera AppLogic アプリケーションにアクセスするために、ユーザが使用する OpenVPN トンネルのプロパティを定義する個別の設定ファイルを作成する必要があります。 以下の手順では、その方法について説明します。
  2. VPN アプライアンスの共有秘密操作モードを使用することを強くお勧めします。 以下のように vpn を設定します。

vpn:

プロパティ名

メモ

ip_addr

28.36.85.21

VPN アプライアンスに割り当てられた IP アドレス

mode

server

サーバ操作モード

tunnel

shared secret

共有秘密ファイルの使用

allowed_hosts

26.42.56.72

クライアント PC の IP アドレス

tcp_ports

0

ポートがすべて許可されます

udp_ports

0

ポートがすべて許可されます

3. sw アプライアンスを介して転送する必要がある目的のプロトコルおよびポートを割り当てます。 この場合は、4 つのポート(122、422、522、822)が sw に接続されたアプライアンスの ssh ポートへ転送されます。

プロパティ名

メモ

out1_protocol

tcp

TCP プロトコル

out1_in_port

122

受信ポート 122

out1_out_port

22

送信ポート 22

out4_protocol

tcp

TCP プロトコル

out4_in_port

422

受信ポート 422

out4_out_port

22

送信ポート 22

out5_protocol

tcp

TCP プロトコル

out5_in_port

522

受信ポート 522

out5_out_port

22

送信ポート 22

out8_protocol

tcp

TCP プロトコル

out8_in_port

822

受信ポート 822

out8_out_port

22

送信ポート 22

4. アプリケーションを起動します。 アプリケーションが起動されたら、vpn アプライアンスから共有秘密ファイルを抽出します。

grid> comp ssh APPLICATION:main.VPN
vpn> cat /mnt/data/server/secret.key
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
431e845f2ca67f2a31649b20e3ba3291
...
fe991cdbfe82525a9367b9afbfd0f922
-----END OpenVPN Static key V1-----

5. 上記の secret.key の内容をユーザの PC 上の新しいファイルに貼り付けて、ファイルを保存します。 これは認証に使用される共有秘密ファイルです。

6. クライアント OpenVPN 設定ファイルを準備します。 以下の行をユーザの PC 上の新しいファイルにコピーします(手順 5 とは異なるファイル)。

dev tun
proto udp
resolv-retry infinite
persist-key
persist-tun
cipher AES-128-CBC
comp-lzo
keepalive 10 120
remote 11.22.33.44 1194
secret "C:¥¥Program Files¥¥OpenVPN¥¥sample-config¥¥secret.key"
nobind
ifconfig 169.254.215.101 169.254.215.102

ifconfig 行内の IP アドレスは、a) 169.254.0.0/16 ネットワーク ブロックに基づいている、b) 同じ /30 サブネットにある、および c) /30 サブネット内の最初または最後のアドレスでない限り、任意に指定できます。 B および C は、Windows プラットフォーム上で実行される OpenVPN クライアントの制限です。

7. リモート IP アドレスを vpn アプライアンスに割り当てられる IP アドレスに置き換えます。 秘密行内の共有秘密ファイルへのパスを、手順 5 で作成したキー ファイルへのパスに置き換えます。 OpenVPN がインストールされたユーザ PC 上で Microsoft Windows オペレーティング システムを使用している場合は、すべての行を引用符で囲み、すべてのスラッシュをダブルスラッシュに置き換えます。

8. 以下のように OpenVPN クライアントを起動します。

c:¥program files¥OpenVPN¥bin¥openvpn.exe --config "c:¥client.ovpn"

:「c:¥client.ovpn」を手順 6 で作成した設定ファイルへのパスに置き換えてください。

9. 数秒後、OpenVPN から以下のメッセージが表示されます。

Wed Jul 01 09:41:12 2009 Peer Connection Initiated with XX.XX.XX.XX:1194
Wed Jul 01 09:41:12 2009 Initialization Sequence Completed

これで、設定ファイル(ここでは 169.254.215.102)内に定義された IP アドレスを使用して、CA 3Tera AppLogic アプリケーションのアプライアンスにアクセスできます。 ポート 169.254.215.102:122 はソフトウェアによって srv1 アプライアンスのポート 22 に転送されます。同様に、ポート 169.254.215.102:422 は srv4 アプライアンスへ転送されます。 たとえば、

ssh -p 122 root@169.254.215.102
を実行して、最初のアプライアンスにアクセスします。

MySQL レプリケーション用の安全な VPN トンネルの提供

以下の図は、ユーザが MySQL レプリケーション用の安全な VPN トンネルを提供する方法の一例を示します。

例: グリッド A およびグリッド B 上で 2 つのアプリケーションが個別に実行され、その両方のアプリケーションで安全な VPN トンネルを介してレプリケートされる同じ MySQL データベースを使用する。

この例では、グリッド A およびグリッド B の異なるグリッド上で 2 つのアプリケーションが実行されています。どちらのアプリケーションも、安全な VPN トンネルを介してレプリケートされるものと同じ MySQL データベースを使用します。

vpn1 と vpn2 は、外部インターフェース上のルーティング可能な IP アドレスで設定されます。 vpn1 は vpn2 へのトンネルを確立するように設定され、vpn2 は vpn1 へのトンネルを確立するように設定されます。

グリッド A からの db1 は、レプリケーションのために vpn1 へトラフィックを送信します。そこでトラフィックは暗号化されて vpn2 に転送された後、復号化されてグリッド B 上の db2 のリング ターミナルへ送信されます。 グリッド B 上の db2 からグリッド A 上の db1 へのレプリケーションも、同じ仕組みで動作します。

vpn1:

プロパティ名

ip_addr

82.56.42.25

外部インターフェースに割り当てられるアドレス。

mode

both

サーバ操作モード。

tunnel

ssh key

SSH キー ファイルの使用。

auth_path

"/keys/vpn21.ssh.key"

SSH キー ファイルへのパス。

remote_host

92.72.57.95

vpn2 の外部インターフェースに割り当てられるアドレス。

tcp_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

ssh_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

vpn2:

プロパティ名

ip_addr

92.72.57.95

外部インターフェースに割り当てられるアドレス。

mode

both

サーバの操作モード。

tunnel

ssh key

SSH キー ファイルの使用。

auth_path

"/keys/vpn21.ssh.key"

SSH キー ファイルへのパス。

remote_host

82.56.42.25

vpn1 の外部インターフェースに割り当てられるアドレス。

tcp_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

ssh_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

または、IPSec 共有秘密モードを使用してもかまいません。
vpn1:

プロパティ名

ip_addr

82.56.42.25

外部インターフェースに割り当てられるアドレス。

mode

both

サーバおよびクライアントとして機能し、2 方向レプリケーションを可能にします。

tunnel

ipsec shared secret

IPSec を使用したトラフィックの暗号化。

auth_path

"/keys/ipsec.key"

ipsec 共有秘密ファイルへのパス。

remote_host

92.72.57.95

vpn2 の外部インターフェースに割り当てられるアドレス。

tcp_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

vpn2:

プロパティ名

ip_addr

92.72.57.95

外部インターフェースに割り当てられるアドレス。

mode

both

サーバおよびクライアントとして機能し、2 方向レプリケーションを可能にします。

tunnel

ipsec shared secret

IPSec を使用したトラフィックの暗号化。

auth_path

"/keys/server/ipsec.key"

ipsec 共有秘密ファイルへのパス。

remote_host

82.56.42.25

vpn1 の外部インターフェースに割り当てられるアドレス。

tcp_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

MySQL レプリケーション用の安全な IPv6 VPN トンネルの提供

以下の図は、ユーザが MySQL レプリケーション用の安全な IPv6 VPN トンネルを提供する方法の一例を示しています。

MySQL レプリケーション用の安全な IPv6 VPN トンネルの提供

ここでは、前の例から同じ 2 つの適用例を使用しますが、IPv6 ネットワーク上で実行される点が異なります。

vpn1 と vpn2 は、外部インターフェース上のルーティング可能な IP アドレスで設定されます。 vpn1 は vpn2 へのトンネルを確立するように設定され、vpn2 は vpn1 へのトンネルを確立するように設定されます。

グリッド A からの db1 は、レプリケーションのために vpn1 へトラフィックを送信します。そこでトラフィックは暗号化されて vpn2 に転送された後、復号化されてグリッド B 上の db2 のリング ターミナルへ送信されます。 グリッド B 上の db2 からグリッド A 上の db1 へのレプリケーションも、同じ仕組みで動作します。

vpn1:

プロパティ名

ipv6_addr

fc00:1111:1111::10/64

外部インターフェースに割り当てられるアドレス。

ipv6_gateway

fc00:1111:1111::99

ゲートウェイ アドレス。

mode

both

サーバおよびクライアントとして機能し、2 方向レプリケーションを可能にします。

tunnel

ssh key

SSH キー ファイルの使用。

auth_path

"/keys/vpn21.ssh.key"

SSH キー ファイルへのパス。

remote_host

fc00:1111:2222::10

vpn2 の外部インターフェースに割り当てられるアドレス。

tcp_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

ssh_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

vpn2:

プロパティ名

ipv6_addr

fc00:1111:2222::10/64

外部インターフェースに割り当てられるアドレス。

ipv6_gateway

fc00:1111:2222::99

ゲートウェイ アドレス。

mode

both

サーバおよびクライアントとして機能し、2 方向レプリケーションを可能にします。

tunnel

ssh key

ssh キー ファイルの使用。

auth_path

"/keys/vpn21.ssh.key"

ssh キー ファイルへのパス。

remote_host

fc00:1111:1111::10

vpn1 の外部インターフェースに割り当てられるアドレス。

tcp_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

ssh_ports

3306,22

MySQL Server および SSH 用のデフォルト ポート。

VPN アプライアンスによって提供される安全な VPN トンネルにアクセスするには、クライアントのマシン上で OpenVPN を使用する必要があります。

アプライアンスの内部で使用されるサードパーティ オープンソース ソフトウェア

VPN では、そのベース クラス LUX5 によって使用されるサードパーティのオープン ソース パッケージに加えて、以下のサードパーティ オープン ソース パッケージを使用します。

ソフトウェア

バージョン

変更

ライセンス

IPsec-Tools

0.6.5-13.el5_3.1

なし

BSD

ホームページ

iptables

1.3.5-5.3.el5_4.1

なし

GPLv2

該当なし

iptables-ipv6

1.3.5-5.3.el5_4.1

なし

GPLv2

該当なし

LZO

2.03 のインストール

なし

GPLv2

ホームページ

OpenVPN

2.1.4

なし

GPLv2

ホームページ

samba-client

3.0.33-3.15.el5_4

なし

GPLv2

該当なし

samba-common

3.0.33-3.15.el5_4

なし

GPLv2

該当なし

iproute2

2.6.29-1

なし

GPLv2

ホームページ

autossh

1.4b

なし

BSD

ホームページ