PacketiX VPN の管理
PacketiX VPN Server を管理する操作には大きく分けて 2 種類があります。1 つは VPN Server
全体を管理することであり、もう 1 つは VPN Server 内の仮想 HUB を選択し、その仮想 HUB
について管理することです。ここではまず、VPN Server 全体を管理する際に必要となる知識および操作方法について解説します。
なお、以下では具体的な操作方法を示す箇所においては、「PacketiX VPN サーバー管理マネージャ」における操作方法と、対応する
VPN コマンドライン管理ユーティリティ (vpncmd) 内のコマンド名について解説します。vpncmd
の各コマンドの詳細な使用方法については、「第6章 コマンドライン管理ユーティリティマニュアル」 をお読みください。
システムを停止する必要が無い管理
PacketiX VPN Server は非常に優れたソフトウェアプログラム構成になっており、VPN Server
のほぼすべての設定を変更したり、新しいオブジェクトを作成・削除したりする際に、VPN Server
プロセスの再起動などは一切必要ありません。したがって、24 時間 365
日間動作し続けなければならないような高信頼性・高安定性が要求される環境において十分に使用することができます。
旧来の VPN を実現するためのソフトウェアや専用ハードウェアなどは、VPN
サーバー機能のコンフィグレーションを書き換える際に、どのような変更でも一旦 VPN
サーバーシステム自体の再起動が必要なものが多くありました。また VPN に限らず、その他の特に UNIX
で動作するサーバープログラムの一部には、設定を変更した場合にプロセスの再起動が必要になるものがあります。このように、設定変更を行うたびにサーバーの再起動を行うと、すでにそのサーバーに接続してサーバー機能を使用しているクライアント接続が切断されてしまうことになります。
PacketiX VPN Server ではプログラム全体の構造が慎重に設計されており、どのような設定変更を行っても VPN Server
のプロセス自体の再起動は一切不要です。唯一 VPN Server のプロセスの再起動が必要になるのは、下記のような 4 種類の場合のみです。
- オペレーティングシステム自体を再起動する場合。
- VPN Server のプログラム自体をアップデートする場合。
- VPN Server プロセスがハードウェアその他の不具合によって暴走したためこれを再起動しなければならない場合。
- VPN Server のコンフィグレーションファイルを手動で変更したり、古いバージョンにロールバックしたりする場合。
また、下記のような設定変更を行う場合は、VPN Server プロセスの再起動は不要ですが、VPN Server
内のサーバーモジュールの内部状態を初期化する作業が行われますので、その際に接続している VPN
セッションは一時的に切断され、しばらくして再接続されます。
- VPN Server Enterprise Edition または Carrier Edition
を使用している場合で、サーバーのクラスタリング設定を変更する場合。
上記の場合を除いたすべての設定変更では、原則として VPN Server
プロセスの再起動も、サーバー機能の再起動も不要です。上記のような設定は一般的にごく稀にしか行わない設定変更作業であり、日常的な設定および管理項目を処理する上では
VPN サーバー機能の再起動は一切不要であり、常に稼動を続けることができる VPN サーバーとして信頼して使用することができます。
VPN Server と仮想 HUB
VPN Server には複数個の仮想 HUB を作成することができます。それぞれの仮想 HUB は独立したレイヤ 2
セグメントを持ち、互いに通信することはできないようになっています。また、ユーザー認証に使用するためのユーザー認証データベースやアクセスリスト、信頼する証明書リスト、Radius
サーバーの設定、SecureNAT の設定およびカスケード接続の設定などの設定項目は仮想 HUB
単位で管理され、互いに完全に独立しています。それぞれの仮想 HUB の設定変更が、別の仮想 HUB の動作に影響を与えることはありません。
VPN Server と仮想 HUB および仮想 HUB ごとに保持することができる設定データ |
管理ツールおよびリモート管理
VPN Server を管理するためには、「2.4 VPN サーバー管理マネージャ」 で解説した「PacketiX VPN サーバー管理マネージャ」または
「2.6 VPN コマンドライン管理ユーティリティ (vpncmd)」
で解説した「VPN コマンドライン管理ユーティリティ (vpncmd)」を使用します。VPN Server
にはローカルまたはリモートコンピュータから管理セッションとして接続することができ、理論上はインターネットに接続されている VPN Server
であれば世界中どこにいてもその VPN Server に対して管理接続しリモート管理することができます。
「PacketiX VPN サーバー管理マネージャ」は GUI での管理、VPN コマンドライン管理ユーティリティ (vpncmd)」は
CUI での管理を行うのに適しています。これら 2 つのユーティリティ以外に、VPN Server
を日常的に管理するために必要なユーティリティはありません。これら 2
つのユーティリティは、管理用端末に常にインストールしておくことをお勧めします。詳しくは
「2.4.4 VPN サーバー管理マネージャのみのインストール」 をお読みください。
VPN Server と VPN Bridge の管理方法 |
管理権限
VPN Server に管理モードで接続して管理するには 2 種類の管理権限があります。
VPN Server 全体の管理権限
VPN Server 全体の管理権限は、VPN Server
のサーバーコンピュータを管理する担当者が持っておくべき権限です。この権限があれば、VPN Server
内のすべての項目の設定を変更したり、新しい仮想 HUB を作成したり、既存の仮想 HUB を管理したり、また既存のすべての仮想 HUB
やその中のオブジェクトを削除したりすることができます。したがって、VPN Server
全体の管理者権限は非常に重要であり、一般的なコンピュータにおける root 権限 / Administrators
権限と同等程度に慎重に取り扱ってください。VPN Server
をサーバーコンピュータにインストールする場合は、そのサーバーコンピュータのオペレーティングシステムの管理者権限を持っている管理担当者が VPN
Server 全体の管理権限を持つのが最適です。
VPN Server 全体の管理権限は、パスワードによって保護されています。このパスワードは初期状態では空ですので、VPN Server
をインストールした直後に変更されることをお勧めします
(現在のインストーラではインストール中にパスワードを設定する画面は表示されません)。幸い、VPN サーバー管理マネージャで VPN Server
に接続した際に管理者パスワードが設定されていない場合は、すぐにパスワードを設定するように促すメッセージボックスが表示されますので、[はい]
をクリックしてパスワードを直ちに設定してください。VPN Server に設定すべきパスワードは、一般的な Windows や UNIX
サーバーにおける管理者パスワードと同等程度の安全性を持ったものにしてください。VPN Server
の管理者パスワードはハッシュ化されて保存され、平文の形で復元することはできませんので安心してください。
VPN Server 全体のパスワードを変更するには、VPN サーバー管理マネージャで [暗号化と通信関係の設定] をクリックし、次に
[管理者パスワード] をクリックして、表示される入力ボックスに新しいパスワードを 2 回入力してください。vpncmd では、ServerPasswordSet
コマンドによってパスワードを設定することが可能です。
VPN Server のパスワードの変更画面 |
仮想 HUB の管理権限
VPN Server 全体の管理者は複数個の仮想 HUB を VPN Server に作成することができます。また、新しい仮想 HUB
を作成する際にその仮想 HUB の管理パスワードを設定し、そのパスワードを仮想 HUB の管理を担当させたい人に渡すことにより、仮想 HUB
単位で管理権限を委譲することができます。なお、仮想 HUB を作成する際に仮想 HUB の管理パスワードを指定しなかった場合は、その仮想 HUB
にリモートから仮想 HUB 管理モードで接続することはできませんのでご安心ください。仮想 HUB に関して、詳しくは
「3.4 仮想 HUB の機能」 および
「3.5 仮想 HUB のセキュリティ」 をお読みください。
コンフィグレーションファイル
PacketiX VPN Server
はすべての設定内容をメモリ中に保持すると共に、この内容を同時にディスク上の設定ファイルに書き込みます。この設定ファイルを「Config
ファイル」または「コンフィグレーションファイル」と呼びます。
コンフィグレーションファイルは、Windows のレジストリや UNIX の設定ファイルによく似ています。Windows
のレジストリファイルのような木構造型のデータ構造と、UNIX の設定ファイルのようなテキストエディタで容易に直接編集することができる構造という
2 種類の特徴を持っている、非常に優れた構成データフォーマットです。
コンフィグレーションファイルの役割
コンフィグレーションファイルは、VPN Server のプロセスの実行可能ファイルが設置されているディレクトリと同じディレクトリ上に
vpn_server.config というファイル名で生成されます。コンフィグレーションファイルは VPN Server
で設定変更を行ったり、内部の構成データが変化した場合は必ず保存されます
(ただし、ディスクアクセスの回数を軽減させるための書き込みキャッシュが働いているため、直ちに保存されない場合があります)。VPN Server
が一度停止し、次に VPN Server を起動した場合は、起動時に vpn_server.config
ファイルの内容を読み込み、その内容に基づいて VPN サーバーを終了前の状態に戻します。コンフィグレーションファイルがあることによって、VPN
Server をいつシャットダウンしても、次に VPN Server
が起動された際には前の構成データを復元することができるようになっています。もし、VPN Server
が起動する際にコンフィグレーションファイルがディスク上に存在しない場合は、デフォルトの設定が適用されます。デフォルトの設定とは、下記のとおりです。
- "DEFAULT" という名前の仮想 HUB が作成されます。仮想 HUB
内のユーザーオブジェクト、グループオブジェクト、その他のオブジェクトは存在せず、また設定はすべてデフォルト状態 (仮想 HUB
を新に作成した状態) となっています。
- リスナーポートとして 443 番、992 番、8888 番の 3 つが登録されます。
- ローカルブリッジおよび仮想レイヤ 3 スイッチの定義は登録されません。
- サーバー証明書としては、乱数によって自動的に生成されます。
- インターネット接続の維持機能はデフォルト値が設定されます。
なお、PacketiX VPN Bridge の場合は、コンフィグレーションファイル名は vpn_bridge.config
という名前になります。また、デフォルトで作成される仮想 HUB 名は "BRIDGE" になります。
コンフィグレーションファイルの保護
コンフィグレーションファイルの内部には、VPN Server や仮想 HUB
が使用する構成データがすべて書き込まれています。この中には、暗号化されたパスワードや別の VPN Server
へカスケードするための接続設定、証明書の秘密鍵などが含まれています。
したがって、コンピュータに複数のユーザーがローカルまたはリモートからログインすることができるような場合は、コンフィグレーションファイル自体を適切なセキュリティ機能によって保護してください。コンフィグレーションファイルは、VPN
Server のシステム管理者以外のユーザーによって改変されることはもちろん、参照 (読み取り) をされてもいけません。
- Windows 版 PacketiX VPN Server をインストールすると、コンフィグレーションファイルは自動的に
Administrators グループのユーザーおよび SYSTEM (ローカルシステム権限) でのみ読み書きが可能に設定されます。
- Linux 版を含む UNIX 版の PacketiX VPN Server
は、コンフィグレーションファイルを作成する際にパーミッションを 700 (オーナーのみ読み書き可能) に設定します。
-
手動でファイルのパーミッションを変更したい場合は、オペレーティングシステムのファイルシステムの機能を使用してください。Windows
ではエクスプローラのプロパティや cacls コマンドなどが利用可能です。UNIX では chmod
コマンドが利用可能です。
- FAT や FAT32
などのパーミッション概念がないファイルシステムの使用は避けてください。どうしてもこれらのファイルシステムを使用しなければならない場合は、サーバーコンピュータを物理的およびネットワークを経由しても触れないような場所に設置する必要があります。
コンフィグレーションファイルの形式
コンフィグレーションファイル (vpn_server.config) は UTF-8
形式で保存されます。したがって、一般的なテキストエディタで自由に内容を編集することが可能です。ただし、コンフィグレーションファイルの内容を直接編集することは推奨されていません
(VPN Server の設定変更は、VPN サーバー管理マネージャまたは vpncmd コマンドによって行うことが推奨されています)。
コンフィグレーションファイルを直接編集しなければならない場合は、下記のような場合のみです。
- すべての TCP/IP リスナーポートを削除してしまった場合。
- VPN Server 全体の管理者パスワードを忘れてしまい、パスワードをリセットしたい場合。
- ごく一部の特殊な設定を行うためにコンフィグレーションファイルを直接編集する場合
(本マニュアルで、明示的にコンフィグレーションファイルを編集するように指定されているような設定のみ)。
- 管理上の理由で、別のソフトウェアを用いてコンフィグレーションファイルを自動処理したい場合。
デフォルトではコンフィグレーションファイルはテキスト形式で保存されます。しかし、大量の仮想 HUB
やユーザーを登録するなどの処理を行うと、設定データの量が膨大となります。大量の設定データを書き出す処理を行うには文字列処理という CPU
時間を消費する処理が必要になりますので、設定データが大きくなるとパフォーマンスが低下します。
このような場合は、コンフィグレーションファイルの書き出し形式をバイナリファイルにすることができます。バイナリファイルは CPU
が直接扱うことができる形式のファイルであり、高速に処理することができます。コンフィグレーションファイルのサイズが数十 Mbytes
程度を超える場合は、バイナリファイルとしてコンフィグレーションファイルを扱ったほうが効率的です。ただし、バイナリファイル化した場合はこのファイルを直接テキストエディタで編集することは困難になります。
コンフィグレーションファイルをバイナリ形式で保存するには、save_binary
というファイル名の内容が空のファイルをコンフィグレーションファイルと同じディレクトリに作成してください。このファイルが存在する状態であれば、次回
VPN Server がコンフィグレーションファイルに書き込む際に自動的にファイルをバイナリ形式に変換します。また、save_binary
ファイルを削除すると、次回 VPN Server がコンフィグレーションファイルに書き込む際に自動的にファイルをテキスト形式に戻します。
バイナリ形式のコンフィグレーションファイルは、バイナリエディタなどを用いて書き換えることも行わないでください。 |
コンフィグレーションファイルの例
実際の VPN Server のコンフィグレーションファイルの例は、下記のようなものになります。このように "root"
という木構造の頂点から順番に木構造的なデータをテキスト形式で管理しています。
# SoftEther Software Configuration File
# Copyright (C) 2004-2006 SoftEther Corporation. All Rights Reserved.
#
# You can edit this file when the program is not working.
#
# http://www2.softether.jp/
declare root
{
uint ConfigRevision 1
declare LicenseManager
{
}
declare ListenerList
{
declare Listener0
{
bool Enabled true
uint Port 443
}
declare Listener1
{
bool Enabled true
uint Port 992
}
declare Listener2
{
bool Enabled true
uint Port 8888
}
}
declare LocalBridgeList
{
}
declare ServerConfiguration
{
uint64 AutoDeleteCheckDiskFreeSpaceMin 104857600
uint AutoSaveConfigSpan 300
string CipherName RC4-MD5
bool DisableDosProction false
byte HashedPassword +WzqGYrR3VYXrAhKPZLGEHcIwO8=
string KeepConnectHost keepalive.se2.softether.com
uint KeepConnectInterval 50
uint KeepConnectPort 80
uint KeepConnectProtocol 0
byte ServerCert ***
byte ServerKey *** uint ServerType 0
bool UseKeepConnect true
declare ServerTraffic
{
declare RecvTraffic
{
uint64 BroadcastBytes 0
uint64 BroadcastCount 0
uint64 UnicastBytes 0
uint64 UnicastCount 0
}
declare SendTraffic
{
uint64 BroadcastBytes 0
uint64 BroadcastCount 0
uint64 UnicastBytes 0
uint64 UnicastCount 0
}
}
}
declare VirtualHUB
{
declare DEFAULT
{
byte HashedPassword +WzqGYrR3VYXrAhKPZLGEHcIwO8=
uint64 LastCommTime 1133735260692
uint64 LastLoginTime 1133735260692
uint NumLogin 0
bool Online true
uint RadiusServerPort 1812
byte SecurePassword bpw3X/O5E8a6G6ccnl4uXmDtkwI=
uint Type 0
declare AccessList
{
}
declare AdminOption
{
uint allow_hub_admin_change_option 0
uint deny_bridge 0
uint deny_change_user_password 0
uint deny_empty_password 0
uint deny_routing 0
uint max_accesslists 0
uint max_bitrates_download 0
uint max_bitrates_upload 0
uint max_groups 0
uint max_sessions 0
uint max_users 0
uint no_cascade 0
uint no_change_access_control_list 0
uint no_change_access_list 0
uint no_change_admin_password 0
uint no_change_cert_list 0
uint no_change_crl_list 0
uint no_change_groups 0
uint no_change_log_config 0
uint no_change_log_switch_type 0
uint no_change_users 0
uint no_delete_iptable 0
uint no_delete_mactable 0
uint no_disconnect_session 0
uint no_enum_session 0
uint no_offline 0
uint no_online 0
uint no_query_session 0
uint no_read_log_file 0
uint no_securenat 0
}
declare CascadeList
{
}
declare LogSetting
{
uint PacketLogSwitchType 4
uint PACKET_LOG_ARP 0
uint PACKET_LOG_DHCP 1
uint PACKET_LOG_ETHERNET 0
uint PACKET_LOG_ICMP 0
uint PACKET_LOG_IP 0
uint PACKET_LOG_TCP 0
uint PACKET_LOG_TCP_CONN 1
uint PACKET_LOG_UDP 0
bool SavePacketLog true
bool SaveSecurityLog true
uint SecurityLogSwitchType 4
}
declare Option
{
uint MaxSession 0
bool NoArpPolling false
bool NoEnum false
}
declare SecureNAT
{
bool Disabled true
bool SaveLog true
declare VirtualDhcpServer
{
string DhcpDnsServerAddress 192.168.30.1
string DhcpDomainName $
bool DhcpEnabled true
uint DhcpExpireTimeSpan 7200
string DhcpGatewayAddress 192.168.30.1
string DhcpLeaseIPEnd 192.168.30.200
string DhcpLeaseIPStart 192.168.30.10
string DhcpSubnetMask 255.255.255.0
}
declare VirtualHost
{
string VirtualHostIp 192.168.30.1
string VirtualHostIpSubnetMask 255.255.255.0
string VirtualHostMacAddress 00-AC-80-C3-BA-5E
}
declare VirtualRouter
{
bool NatEnabled true
uint NatMtu 1500
uint NatTcpTimeout 7200
uint NatUdpTimeout 60
}
}
declare SecurityAccountDatabase
{
declare CertList
{
}
declare CrlList
{
}
declare GroupList
{
}
declare IPAccessControlList
{
}
declare UserList
{
}
}
declare Traffic
{
declare RecvTraffic
{
uint64 BroadcastBytes 0
uint64 BroadcastCount 0
uint64 UnicastBytes 0
uint64 UnicastCount 0
}
declare SendTraffic
{
uint64 BroadcastBytes 0
uint64 BroadcastCount 0
uint64 UnicastBytes 0
uint64 UnicastCount 0
}
}
}
}
declare VirtualLayer3SwitchList
{
}
}
|
コンフィグレーションファイルのデータ構造
コンフィグレーションファイルは、declare
で囲まれた部分で新しいノードを定義し、その中にいくつかのデータ型およびノードを格納することができるようになっています。存在すべきノード名およびデータ一覧のスキーマは決められており、それに適合しないデータ構造は無視されます。また無視されたデータ構造は自動的にコンフィグレーションファイルから削除されるため、直接コンフィグレーションファイルを操作する場合は
1
文字タイプミスをした場合のみでもコンフィグレーションファイルの内容が大きく損なわれてしまう可能性があります。したがって、どうしてもコンフィグレーションファイルを直接編集したい場合は、事前に必ず内容をバックアップしておいてください。
コンフィグレーションファイル内のデータ型一覧は、次のとおりです。
データ型名 |
内容 |
データ構造上のサイズ |
uint |
符号無し 32 ビット整数型 |
32 bit |
uint64 |
符号無し 64 ビット整数型 |
64 bit |
bool |
ブール型 |
1 bit |
string |
Unicode 文字列型 (UTF-8 エンコード) |
0bit ~ 無制限 |
byte |
バイナリ型 (Base 64 エンコード) |
0bit ~ 無制限 |
なお、上記の表で「無制限」となっている部分は「アーキテクチャおよびメモリの限界を超えない範囲」という意味です。
ソフトイーサ株式会社ではコンフィグレーションファイルの内容を直接書き換えた場合について、その動作を一切保証しておりません。したがって、コンフィグレーションファイルの内容をテキストエディタなどで直接書き換えることは推奨されません。これは、Windows
においてシステムレジストリの内容を直接エディタで書き換えることが推奨されないのと同様の理由です。 |
コンフィグレーションファイルの置換
ある時点でのコンフィグレーションファイルの内容を手動でバックアップしておき、あとから復元したいような場合は、vpn_server.config
ファイルを復元する際に、下記の手順を行う必要があります。
- 現在 VPN Server
プログラムが動作している場合は、プログラムを完全に停止します。完全に停止するというのは、vpnserver
プロセスを動作していない状態にするという意味です。
- vpn_server.config ファイルを置換します。
- VPN Server プログラムを開始します。
- 正しくコンフィグレーションが置換されているかどうかを確認します。
別のコンピュータへのコンフィグレーションファイルの移動
あるコンピュータの VPN Server
でコンフィグレーションファイルが生成された場合、そのコンフィグレーションファイルの内容をそのまま別のコンピュータにコピーすることで、コピー先のコンピュータの
VPN Server でも同等の構成情報で起動させることが可能です。
- コピー元の VPN Server とコピー先の VPN Server が別のオペレーティングシステムや CPU
用のものであっても、基本的には構成情報はそのままコピーされ、両者の間でコンフィグレーションファイルに関する互換性はあります。ただし、コピー元のシステムでしかサポートされていない機能は、たとえコンフィグレーションファイルをコピーしたとしても、新しいシステムではサポートされません。
-
コンフィグレーションファイルがバイナリ形式の場合でも、コンピュータ間の移動が可能です。バイナリ形式のコンフィグレーションファイルは、CPU
の種類やオペレーティングシステムに依存しないように正しくエンディアン変換されているため、システムやマシンのアーキテクチャによって動作したり動作しなかったりすることは原則としてありません。
- コンフィグレーションファイルにはライセンス情報 (ライセンスキーの一覧)
が含まれる場合があります。コンフィグレーションファイルのコピー元とコピー先のシステムの両方でそのまま VPN Server
を稼動させると、同一のライセンスキーが両方のコンピュータで動作することになり、PacketiX VPN Server
使用権許諾契約に違反してしまいます。このようなことを避けるため、どちらかのシステムを先に起動して VPN サーバー管理マネージャまたは
vpncmd
を用いてライセンスキーを削除してください。その後、そのサーバーコンピュータ用に取得したライセンスキーを登録することで、ライセンス違反を避けることができます。
コンフィグレーションファイル内容のリモートからの参照および書き換え
コンフィグレーションファイルの内容 (vpn_server.config) は、通常では VPN Server
が動作しているコンピュータにログオンしてテキストエディタで開いたり、またはファイル共有などで接続しそのファイルを直接ダウンロードしたりアップロードしたりしなければ、取得または変更することはできません。
しかし、PacketiX VPN Server では VPN Server
全体の管理者であればいつでもコンフィグレーションファイルをリモートから参照したり、変更したりすることができます。
VPN サーバー管理マネージャの [Config の編集] をクリックすると、現在の VPN Server
上のコンフィグレーションファイル内容が表示されます。ファイルを UTF-8
形式で保存することも可能です。また、同機能から管理者のクライアント端末側で用意したコンフィグレーションファイルをアップロードすることが可能です。コンフィグレーションファイルをアップロードして書き込んだ場合、VPN
Server のサーバー機能が自動的に再起動して新しいコンフィグレーションファイルの内容を読み込みます (手動での再起動や、VPN Server
のプロセス自体の再起動は不要です)。再起動とコンフィグレーションファイルの再読み込みが完了すると、VPN Server
は新しいコンフィグレーションの内容に基づいて動作を開始します。
vpncmd では、ConfigGet コマンドおよび ConfigSet コマンドで同様の操作が可能です。
リモート管理でコンフィグレーションファイルを取得するよう VPN Server
に要求した場合、取得されるコンフィグレーションファイルの内容はたとえ save_binary オプションが有効な場合でも常に
UTF-8 形式のテキストデータです。また、実際にはこの要求を発行すると VPN Server がローカルディスク上の
vpn_server.config ファイルを読み取るのではなく、その要求処理を VPN Server が受け取った瞬間の
VPN Server
の内部状態を瞬時にテキストデータ化し、それを管理端末に返送しています。したがって、いかなる場合でも常に最新のコンフィグレーションファイルデータが取得可能です。 |
コンフィグレーション履歴
コンフィグレーションファイルの内容は VPN Server や仮想 HUB
の管理者が時間をかけて構成したものであり、大変貴重なものです。もしコンフィグレーションファイルがハードウェアやソフトウェアのバグなどによって破損してしまったり、誤った設定変更を行ってしまい元に戻せなくなってしまった場合は、同じ設定を復元するために大変な労力を消費する必要があります。
そこで、VPN Server
は一定時間おきにコンフィグレーションファイルの内容の履歴をとり、これを自動的にバックアップしています。コンフィグレーション履歴のバックアップは、コンフィグレーションファイルが設置されているディレクトリの
backup.vpn_server.config ディレクトリ内に、ファイル名に日時を付けて保存されています。
もし、VPN Server の設定情報が破損したり、誤った設定 (たとえば重要な仮想 HUB を削除してしまうなど)
を行った場合は、直前のコンフィグレーションファイルに手動で復元してください。コンフィグレーションファイルの復元方法については、「コンフィグレーションファイルの置換」をお読みください。
なお、バックアップは 60 分に 1
回作成されます。ただし、原則としてコンフィグレーションファイルの内容が変化していない場合は、バックアップは取られません。バックアップフォルダは、デフォルトではコンフィグレーションファイルと同様のパーミッション設定によって自動的に保護されています。
この自動バックアップ機能が不要な場合は、backup.vpn_server.config
ディレクトリを誰に対してもアクセス拒否するようなパーミッション設定にすることで、バックアップ機能を停止させることができます。 |
自動保存されたコンフィグレーション履歴 |
統計情報の管理
統計情報とは
VPN Server の管理する構成データは、VPN Server 全体の設定、仮想 HUB
やユーザー・グループの設定などの設定項目の他に、それぞれのオブジェクトごとの統計情報が記録されています。統計情報とは、次のようなデータです
(記録の対象となるオブジェクトによって異なります)。
- 送信ユニキャストパケット数
- 送信ユニキャスト合計サイズ
- 送信ブロードキャストパケット数
- 送信ブロードキャスト合計サイズ
- 受信ユニキャストパケット数
- 受信ユニキャスト合計サイズ
- 受信ブロードキャストパケット数
- 受信ブロードキャスト合計サイズ
- 最終ログイン日時
- 最終通信日時
- ログイン回数
統計情報が管理されるオブジェクトは下記のようになっています。
- VPN Server 全体
- 仮想 HUB
- ユーザーオブジェクト
- グループオブジェクト
上記の情報は、VPN Server によって自動的に統計処理され、コンフィグレーションファイルの一部として書き込まれます
(前述のように、統計情報のみが変更されても、ConfigRevision の値は増加しません)。
VPN Server 全体の統計情報は、VPN Server 全体の管理者および仮想 HUB の管理者であれば読み取ることが可能です。仮想
HUB および仮想 HUB 内の個々のオブジェクトの統計情報は、その仮想 HUB の管理権限を持っている管理者 (VPN Server
全体の管理者を含む) でなければ読み取ることはできません。
これらの情報は基本的に読み取り専用であり、VPN サーバー管理マネージャや vpncmd
を用いて書き換えることはできません。ただし、コンフィグレーションファイルを直接テキストエディタによって書き換えることは技術的に可能です。
統計情報の利用目的
統計情報は、VPN Server 全体や個々の仮想 HUB、ユーザーなどがどれくらいの通信を行ったのか、何度 VPN
サーバーに接続したか、最後に接続したり通信したりしたのはいつか、というような情報をシステム管理者に対して提供します。
これにより、下記のようなことができます。
- 各仮想 HUB やユーザーがどれくらいの頻度やデータ量で VPN Server
を使用しているかどうかといった情報の取得と統計処理。
- 一定期間利用していないユーザーの削除・無効化などの管理作業。
- インターネットサービスプロバイダなどによる仮想 HUB ホスティングサービスにおける接続回数や通信データ量などに応じた課金。
-
明らかにログイン回数が多いユーザーについて、そのユーザーのパスワードが盗まれて第三者が勝手に侵入して使用しているのではないかと疑い始めること。
- 統計情報の差分を自動的に取得するプログラムを vpncmd を使用して作成することによる、VPN Server
の利用情報レポートの自動的な生成。
- 苦労して設置した VPN Server が多くのユーザーによって大量の通信に使用されていることを認識することによる満足感の生成。
リアルタイム統計データ
すべての統計データは、VPN Server によってリアルタイムで更新されています。つまり、VPN サーバー管理マネージャや vpncmd
から統計データを取得する要求が発生したら、その時点での最新の統計データが得られます。VPN サーバー管理マネージャの GUI で
[最新の状態に更新] をマウスで連打すると、その対象となるオブジェクトが通信中であれば、刻々と値が更新される様子がよくわかります。
統計情報の取得
統計情報は、VPN サーバー管理マネージャを用いて VPN Server、仮想
HUB、ユーザーオブジェクトおよびグループオブジェクトを選択して GUI
画面中に表示することができます。また、コンフィグレーションファイルを取得してそれを機械処理することも簡単です。vpncmd
で統計情報を取得するには、ServerStatusGet コマンド、StatusGet コマンド、UserGet
コマンド、GroupGet コマンドを使用します。
仮想 HUB の統計情報画面 |
クラスタ構成時のクラスタ全体の統計情報の取得
複数台の VPN Server
でクラスタを構成している場合は、クラスタ全体のリアルタイムの統計情報は定期的にクラスタコントローラとなっている VPN Server
に集約されます。したがって、クラスタ構成時にクラスタ全体の通信量を知りたい場合などは、クラスタコントローラに管理接続し各種統計情報を取得してください。クラスタ環境でも、各仮想
HUB やユーザーおよびグループごとの統計情報はすべて合計された値が正しく表示されます。
ディスク容量不足時の自動調整機能
PacketiX VPN Server が書き出すログファイルの内容
VPN Server は動作中に下記のようなファイルを vpnserver
実行可能ファイルと同じディレクトリまたはそのサブディレクトリに次々に書き出します。
- VPN Server のログファイル
- 仮想 HUB ごとのセキュリティログおよびパケットログファイル
- コンフィグレーション履歴バックアップファイル
これらのログファイルや履歴ファイルは、VPN Server
を長期間運用していると大量のディスクスペースを消費することになります。しかしながら、VPN Server のログや仮想 HUB
のパケットログ、セキュリティログなどのデータは後から不正アクセスやトラブルの原因の監査などのために非常に重要であるため、VPN Server
が生成したログファイルを無差別に削除する訳にはいりません。
このような場合、VPN Server の管理者は自動的にログファイルを古いものから順に外部メディア (DVD-R やテープなど)
にバックアップして保管し、ディスク上から削除するべきです。または、そういった処理を自動化することもできます。
空きディスク容量が不足することによるセキュリティ上の危険性
しかしながら、それらの処理を行わない場合やバックアップおよび古いログデータの削除を忘れていたような場合では、ディスク容量が圧迫され最後には空き容量が
0 バイトになります。ディスクの空き容量が 0 バイトとなった場合は、VPN Server
は新しいログデータをディスクに書き出すことができなくなります。この状態はセキュリティ的に大変危険です。なぜならば、攻撃者は VPN Server
が新しいログデータをディスクに書き出すことができない状態であればどのような攻撃を行ってもログに残らず、後から攻撃があったことを VPN
Server の管理者が知ることができないからです。
そこで、PacketiX VPN Server
ではログファイルや履歴ファイルが大量に保存された結果、ディスク容量が圧迫されてきて、ついに事前に設定された容量よりも空き容量が下回るようになった場合、VPN
Server
が書き出したすべてのログファイルおよびコンフィグレーションファイルを自動的に削除するような機能が組み込まれています。これにより古くて重要度の低いログファイルを削除することにより空き容量を常に一定以上確保することによって、新しいログファイルを書き出せるような状態をできる限り維持します。これにより、古いログファイルをバックアップして削除するという管理作業を行わない場合でも、自動的にできる限り古いログファイルから削除していき常に空き容量を一定以上保ち続ける機能が動作し、メンテナンスフリーが実現されます。
この機能は、ハードディスクの空き容量が不足したために VPN Server
が新しいログファイルを書き出すことができないという最悪の事態を回避するために設けられている、一種の「fail safe
機能」です。この機能にかかわらず、重要な VPN サーバーコンピュータでは常に PacketiX VPN Server
が書き出すすべてのログファイルを外部メディアなどの安全な場所にバックアップしておくことを推奨します。 |
最小空き容量の設定値
VPN Server では、デフォルトではログファイルが書かれるディスクドライブの空き容量が 100 Mbytes (正確には
104,857,600 Bytes) 以下になると、その空き容量を回復するまで、VPN Server
が書き出したログファイルを古いものから順番に削除します。
この値は、コンフィグレーションファイル内の ServerConfiguration ノード内の
AutoDeleteCheckDiskFreeSpaceMin 値を書き換えることによって、任意の値に変更できます。ただし、最小の値は
1 Mbytes (正確には 1,048,576 Bytes) であり、それを下回る値は設定できません。具体的には、下記の部分を変更します。
declare ServerConfiguration
{
uint64 AutoDeleteCheckDiskFreeSpaceMin 104857600
uint AutoSaveConfigSpan 300
string CipherName RC4-MD5
bool DisableDosProction false
:
:
|
- VPN Server はログファイルの保存場所のディスクの空き容量をオペレーティングシステムの API
を呼び出すことによって取得します。
- Windows 2000 以降のオペレーティングシステムで VPN Server
を動作させているアカウントに対するディスククォータが設定されている場合は、ディスクの空き容量としてディスククォータの空き容量が使用されます。Linux
およびその他の UNIX システムでは、ディスククォータの空き容量は使用されません。したがって UNIX
系システムでディスククォータが設定されている場合は「ディスク容量不足時の自動調整機能」は正常に動作しない可能性が高いことに注意してください。
障害回復
PacketiX VPN Server は VPN
サーバー機能の動作時に発生した障害を、下記のような方法で可能な限り自動的に回避しようと試みます。
プログラムエラー発生時の障害回復
PacketiX VPN Server プログラムや VPN Server が依存する Windows や Linux
などのオペレーティングシステムは高い信頼性と安定性を実現するために慎重に設計し実装されたものであり、プログラム内に存在するエラー数は非常に少ないものになっています。しかしながら、ある程度以上の規模のどのようなプログラムにも絶対にエラーが存在しないことが証明されることは不可能であり、システム管理者としては常にソフトウェア内に深刻なエラーがあった場合のことについても考慮すべきです。また、ソフトウェアに問題がなくても、ハードウェアで不具合が発生することも多くあります。たとえばメモリモジュールにエラーがあったり、CPU
が計算を間違えたりする可能性もあります。
このようなソフトウェアまたはハードウェアの不具合によって、多くの場合「メモリアクセス違反」、「不明な命令の呼び出し」および「不正な割り込みの発生」などの修復が困難または不可能なエラーが発生することがあります。
VPN Server はこれらのプログラエラーが発生した場合は、直ちに VPN Server
のプロセスを終了し、プロセス空間メモリを破棄します。その後もう一度プロセスを再起動し、コンフィグレーションファイルの内容を再読み込みして動作を継続させようと試行します。これらの処理は通常は一瞬
(数ミリ秒から数秒) で行われるので、大抵の場合は VPN
サービスの提供において大きな障害になることはありません。したがって、ユーザーメモリ空間上で修復不能なエラーが発生しても、VPN Server
の管理者がそれに気付いて VPN Server プロセスを再起動したりする必要は通常は無く、自動的に VPN Server
プログラムが障害回復を試行します。
ただし、プログラムエラーの内容が非常に深刻で VPN Server
プロセスを再起動させる部分のコードを破損してしまった場合、およびエラーの発生原因が現在の VPN Server
のコンフィグレーション内容に起因するものであり次回プロセス起動時にも同様の原因でプログラムエラーが発生してしまうような特殊な場合
(特に手動でコンフィグレーションファイルを書き換えた場合に発生する可能性があります)
は、自己修復は正しく働かない場合があります。また VPN Server
が呼び出しているカーネルモードコード内で深刻なエラーが発生してしまった場合は、それの修復は不可能であり、Windows
の場合はブルースクリーン、UNIX の場合は Kernel Panic
などを発生させてコンピュータシステム全体を再起動させることがあります。プログラムエラー発生時の障害回復はユーザー空間で発生する深刻なエラー状態を回復することが可能な場合がある機能であり、外部のサーバー動作状態監視システムが不必要になるという性質の機能ではありません。 |
なお、この機能は Windows 版 PacketiX VPN Server
がサービスモードで起動していない場合は動作しない場合があります。
ハードウェア障害発生時の構成データ保護と障害回復
VPN Server プログラムがコンフィグレーションファイルに物理的にデータを書き込もうとした瞬間にハードウェア障害 (突然の停電など)
が発生した場合は、コンフィグレーションファイルの物理的な内容が破損する可能性があります。そのような場合に備えて、VPN Server
がコンフィグレーションファイルを書き出す際には常に 2 重の手続きが行われています。
まず、現在のコンフィグレーションファイルの内容はディスク上に物理的に残しておき、次に新しいコンフィグレーションファイルの内容をディスクに対して書き出します。その後書き出し処理が完了すると、オペレーティングシステムの書き込みバッファをフラッシュさせ、データの書き込みが物理的なディスクに対してコミットされるまで待機します。物理的なコミットが完了した後に古いコンフィグレーションデータを削除します。これらの処理は、ユーザーによって一切意識されない場所で行われています。
次回システム起動時にコンフィグレーションファイルが破損している可能性がある場合は、その破損したコンフィグレーションファイルを書き出す直前にログとしてバックアップした
1
つ手前のコンフィグレーションデータを用いてコンフィグレーションの内容を復元しようと試みます。ほとんどの場合、それは成功してコンフィグレーションの内容が復活します。これらの処理は次回システム復旧時に自動的に行われるため、システム管理者が手動で行う必要はありません。
なお、この自動障害回復機能が正常に動作しなかった場合は、VPN Server
の管理者はコンフィグレーションファイルのバックアップディレクトリから少し前のコンフィグレーションファイルを手動でロールバックする必要があります。またオペレーティングシステムやファイルシステムの仕様によっては、この機能が動作しない場合もあります。
コンフィグレーションファイルの自動保存
VPN Server はコンフィグレーションファイルを自動保存します
(ただし、コンフィグレーションファイルの内容に統計情報を含めた一切の情報の変更がない場合は、自動保存しない場合もあります)。これにより、VPN
Server プロセスが突然正常にシャットダウンされずに異常終了した場合でも、前回の自動保存時の構成に必ず復元することができます。
DoS 攻撃からの自動防衛
VPN Server がネットワークに対して公開する TCP/IP ポート (リスナーポート) は、インターネットなどの公共 IP
ネットワークに接続される場合は常にインターネット上のホストからの攻撃を受ける可能性があります。特に、DoS アタック (サービス拒否攻撃)
の一種である SYN Flood と呼ばれる、TCP/IP のポートに対して大量の接続要求を送信するという攻撃が最も危険です。
多くのオペレーティングシステムでは SYN Flood 攻撃に対する防衛策が実装されている場合があります。また、ファイアウォールや IDP
などによって SYN Flood
攻撃がネットワーク上で遮断される場合もあります。しかし、これらの仕組みが正しく動作しなかったり、設定の閾値が大きすぎたりする場合は、VPN
Server に対して TCP/IP の接続要求が到達してしまいます。
VPN Server が大量に届いた TCP/IP
接続要求をすべて処理しようとすると、大量のシステムリソースが必要になります。そこで、VPN Server は同一の接続元を発信源とする SYN
パケットが TCP/IP
リスナーポートに届いた場合は、それを検出して接続を受け付ける処理を開始する前にそのコネクションを直ちに破棄することができるようになっています。これが
VPN Server が持つ DoS 攻撃からの自動防衛機能です。この機能はデフォルトで有効になっています。
この機能を無効にしたい場合は、コンフィグレーションファイルの ServerConfiguration ノード内の
DisableDosProction 値を true
に書き換えることによって無効化することができます。具体的には下記のように設定します。
declare ServerConfiguration
{
uint64 AutoDeleteCheckDiskFreeSpaceMin 104857600
uint AutoSaveConfigSpan 300
string CipherName RC4-MD5
bool DisableDosProction true
:
:
|
インターネット接続の維持機能
VPN Server をインストールしたコンピュータがいつでもインターネット側からの VPN
接続要求に応答するとができるようにするため、VPN Server
が起動中は常にインターネットに対して定期的にパケットを送信する機能が組み込まれています。この機能により、一部の ISDN、PHS および
ADSL
回線などをインターネット接続に使用している環境で、一定時間無通信状態が続いた場合に回線が切断されるような環境でも、回線が切断されることなく常にサーバーコンピュータがインターネットに接続されている状態になり、インターネットからの
VPN クライアントコンピュータが VPN Server に必ず接続できるようになります。
インターネット接続の維持機能では、指定されたホストのポート番号に対して一定時間ごとに TCP/IP または UDP/IP
のパケットを送信することができます。送信するパケットのデータサイズは非常に小さく、また送信するパケットのペイロードの内容は乱数によって生成されます。
インターネット接続の維持機能はデフォルトで有効になっており、下記の設定値が使用されます。
項目名 |
初期設定値 |
ホスト名 |
keepalive.se2.softether.com |
ポート番号 |
80 |
パケット送出間隔 |
50 秒 |
プロトコル |
TCP/IP プロトコル |
インターネット接続の維持機能の設定を変更するには、VPN サーバー管理マネージャの [暗号化と通信関係の設定]
を開き、[インターネット接続の維持機能] ボックス内の設定項目を入力してください。vpncmd では、同様の操作を KeepEnable
コマンド、KeepDisable コマンド、KeepSet コマンドおよび KeepGet
コマンドによって行うことが可能です。
インターネット接続の維持機能の設定画面 |
サーバー情報の取得
サーバー状態の取得
VPN サーバー管理マネージャの [サーバー状態の表示] をクリックすると、VPN Server の現在の動的な状態を取得することができます。vpncmd
では ServerStatusGet コマンドを使用してください。
サーバー状態の表示画面 |
表示される項目は次のとおりです。
項目名 |
内容 |
サーバーの種類 |
通常は [スタンドアロンサーバー] です。クラスタ機能を使用している場合は、[クラスタコントローラ] または
[クラスタメンバサーバー] のいずれかになります。 |
TCP コネクション数 |
VPN Server に VPN セッションおよび管理セッションとして接続されているすべての TCP
コネクション数の合計値が表示されます。なお、クラスタコントローラの場合は他のすべてのクラスタメンバの TCP
コネクション数を合計した値が表示され、その他に [このサーバーの TCP コネクション数] および
[他のクラスタメンバサーバーの TCP コネクション数] の 2 項目が表示されます。 |
仮想 HUB 数 |
VPN Server で動作している仮想 HUB
の合計数が表示されます。クラスタコントローラの場合は、クラスタ内に定義されている仮想 HUB
の合計数が表示されます。クラスタメンバサーバーの場合は、現在そのサーバー内でインスタンスが存在する仮想 HUB
の個数が表示されます。また、クラスタ環境の場合はそれぞれ [スタティック仮想 HUB 数] と [ダイナミック仮想
HUB 数] が表示されます。 |
セッション数 |
現在 VPN Server に対して接続している VPN
セッション数が表示されます。なお、クラスタコントローラの場合はクラスタ全体に接続されているセッション数が合計して表示され、また
[このサーバーのセッション数] と [他のクラスタメンバサーバーのセッション数] が表示されます。 |
MAC アドレステーブル数 |
VPN Server が管理しているすべての仮想 HUB 内の MAC
アドレステーブル数の合計が表示されます。なお、クラスタコントローラの場合はすべてのクラスタ内の VPN Server
の管理する MAC アドレステーブル数の合計値が表示されます。 |
IP アドレステーブル数 |
VPN Server が管理しているすべての仮想 HUB 内の IP
アドレステーブル数の合計が表示されます。なお、クラスタコントローラの場合はすべてのクラスタ内の VPN Server
の管理する IP アドレステーブル数の合計値が表示されます。 |
ユーザー数 |
すべての仮想 HUB
に定義されているユーザーオブジェクトの合計数が表示されます。なお、クラスタメンバサーバーはユーザーデータベースを保有しないため、常に
0 が表示されます。 |
グループ数 |
すべての仮想 HUB
に定義されているグループオブジェクトの合計数が表示されます。なお、クラスタメンバサーバーはグループデータベースを保有しないため、常に
0 が表示されます。 |
消費クライアント接続ライセンス数 |
VPN Server が現在消費している (ライセンスが必要な接続であるとカウントしている)
クライアント接続ライセンス数が表示されます。接続ライセンスについては、「1.3 PacketiX VPN
3.0 の製品構成およびライセンス」
を参照してください。なお、クラスタコントローラの場合はクラスタ全体で消費しているライセンス数と、自分自身のコンピュータだけで消費しているライセンス数の
2 種類が表示されます。 |
消費ブリッジ接続ライセンス数 |
VPN Server が現在消費している (ライセンスが必要な接続であるとカウントしている)
ブリッジ接続ライセンス数が表示されます。接続ライセンスについては、「1.3 PacketiX VPN
3.0 の製品構成およびライセンス」
を参照してください。なお、クラスタコントローラの場合はクラスタ全体で消費しているライセンス数と、自分自身のコンピュータだけで消費しているライセンス数の
2 種類が表示されます。 |
統計情報 |
これまでの通信量の統計情報が表示されます。 |
サーバー起動時刻 |
VPN Server が起動した時刻が表示されます。 |
現在時刻 |
VPN Server コンピュータの現在の時刻が表示されます。表示する際には、現地時間に変換されます。 |
64 bit 高精度論理システム時刻 |
VPN Server 内部で管理されている 64 bit の時刻データが表示されます。 |
メモリ使用状況 |
VPN Server
が動作しているコンピュータの物理メモリおよび仮想メモリの使用状況が表示されます。なお、Windows
オペレーティングシステム以外では表示されません。 |
VPN Server に関する情報
VPN サーバー管理マネージャの [PacketiX VPN Server に関する情報] をクリックすると、VPN Server
に関する静的な情報を取得することができます。vpncmd では ServerInfoGet コマンドを使用してください。
VPN Server に関する静的な情報としては、VPN Server
のバージョン情報や製品名、オペレーティングシステムに関する情報および VPN Server
において現在利用することができる機能の一覧と仕様の一覧が表示されます。たとえば、最大同時接続数などの値もここで表示されます。
図3-3-10 VPN Server に関する情報の表示画面 |
SSL 通信で使用する暗号化アルゴリズムの選択
VPN Server はデフォルトで RC4-MD5 アルゴリズムを SSL
通信で使用する暗号化と電子署名アルゴリズムとして選択しています。このアルゴリズムは別のものを選択することも可能です。
VPN サーバー管理マネージャの [暗号化と通信関係の設定] で [暗号化アルゴリズム名]
を指定可能な任意の値に設定してください。指定可能なアルゴリズム名はドロップダウンリスト内に表示されています。vpncmd では、ServerCipherSet
コマンドを使用して設定できます。
SSL SSL 通信で使用する暗号化アルゴリズムの選択画面 |
VPN Server サービスの再起動および構成情報の初期化
VPN Server 機能をリモートから再起動することができます。ただし、リモートから VPN Server を再起動するためには
vpncmd から Reboot コマンドを使用する必要があります。VPN サーバー管理マネージャでは Reboot
コマンドに相当するコマンドはありません。
なお Reboot /RESETCONFIG:YES
と指定すると、再起動時に現在のコンフィグレーションファイルの内容を消去し、再起動によって初期状態の VPN Server が起動します。
|