3.2 動作モード - SoftEther VPN プロジェクト

3.2 動作モード

    ユーザーは SoftEther VPN Server を「サービスモード」と「ユーザーモード」という 2 種類のモードで動作させることができます。以下では、それらの 2 種類のモードについて説明します。

    3.2.1 サービスモード

    「サービスモード」は通常の動作モードです。SoftEther VPN Server を、サービスモードでインストールし動作させると、SoftEther VPN Server はオペレーティングシステムの一部としてバックグラウンドで動作するようになり、オペレーティングシステムの起動時に、ユーザーがログオンする前に起動して VPN サーバーとして VPN セッションの接続を待機する状態になります。また、オペレーティングシステムがシャットダウンする際に、自動的にシャットダウン処理が行われます。

    ここで「サービス」と呼ぶ用語は Windows や一部の UNIX 系オペレーティングシステムにおいて「バックグラウンドシステムサービス」という意味を指しており、他のオペレーティングシステムでは「デーモン」と呼ぶ場合もあります。

    サービスモードで VPN Server が動作している場合、その動作は現在オペレーティングシステムにログオンしているユーザーに依存されません。したがって、多くの場合はサービスモードとして VPN Server を稼動させることを推奨します。

    また、サービスモードで VPN Server を使用する場合、一般的に VPN Server のプロセス (vpnserver という実行可能ファイル名です) はシステム権限または root 権限で動作します。

     

    Windows 版 SoftEther VPN Server については、32 bit 版の実行可能ファイル名は "vpnserver.exe" であり、64 bit 版の実行可能ファイル名は "vpnserver_x64.exe" となっています。本マニュアルでの解説は 32 bit 版の使用を前提としていますので、64 bit 版を使用している場合は該当する部分を読み替えてください。

    サービスモードとして VPN Server をインストールする方法

    サービスモードとして VPN Server をインストールする方法は、Windows 版と他の UNIX 版で異なります。

    • Windows 版 SoftEther VPN Server をインストーラからインストールすると、サービスモードとしてインストールされ自動的にバックグラウンドサービスとして動作が開始されます。詳しくは、「7.2 Windows へのインストールと初期設定」 をお読みください。
    • Linux 版およびその他の UNIX 版 SoftEther VPN Server を、サービスモードとしてインストールするには、システムにデーモンプロセスとして登録する必要があります。詳しくは、「7.3 Linux へのインストールと初期設定」 をお読みください。

    サービスモードは下記のような場合には使用できません。このような場合は、ユーザーモードで VPN Server を使用してください。

    • SoftEther VPN Server を動作させたいシステムの「システム管理者権限」を持っていない場合。
    • SoftEther VPN Server を継続的ではなく「一時的」にインストールして使用したい場合。
    • セキュリティ上の理由により、「一般ユーザー権限」で SoftEther VPN Server を起動したい場合。

    Windows 版 SoftEther VPN Server のサービスモードに関する説明事項

    Windows 版の VPN Server をサービスモードでインストールするには、インストーラから VPN Server をインストールすることを推奨いたします。この場合は、特別な操作を行うことなく自動的に VPN Server がサービスとして起動し、動作を開始します。その後システムを再起動しても、システム起動時に自動的に VPN Server の動作が開始されます。VPN Server はバックグラウンドタスクとして起動するので、VPN Server をインストールしたコンピュータを他の目的で操作する場合でも、VPN Server がインストールされていることを意識する必要はありません。

    また、Windows 版 SoftEther VPN Server の「実行可能ファイル (vpnserver.exe)」にコマンドライン引数を付けることによって、SoftEther VPN Server サービスを開始 / 停止したり、また Windows システムのサービス一覧から SoftEther VPN Server サービスを削除したり、登録し直したりすることが可能です。

    SoftEther VPN Server サービスが Windows システムに登録される短いサービス名は「sevpnserver」です。長いサービス名は、「SoftEther VPN Server」です。

    現在 Windows システムに SoftEther VPN Server サービスがインストールされていない場合、vpnserver.exe をサービスとして登録するには、コマンドプロンプトなどから下記のように入力して vpnserver.exe を実行します (システム管理者権限が必要です)。

    > vpnserver /install 

    すでに Windows システムに SoftEther VPN Server サービスがインストールされており、これを削除したい場合は、コマンドプロンプトなどから下記のように入力して vpnserver.exe を実行します (システム管理者権限が必要です)。

    > vpnserver /uninstall 

    また、vpnserver に 「/start」 または 「/stop」という引数を付けることによって、サービスを開始または停止することができます。その他 vpnserver プログラムに指定可能な引数については、vpnserver.exe を直接実行したときに表示されるメッセージボックスの内容を参照してください。

    また、サービスの開始と停止は Windows の [コントロールパネル] の [管理ツール] にある [サービス] 一覧 (Windows NT 4.0 の場合は [コントロールパネル] にある [サービス] 一覧) から行うことも可能です。この [サービス] 一覧画面を操作して、SoftEther VPN Server サービスの [スタートアップの種類] を [自動] から [手動] に変更することもできます。[手動] に変更したサービスはシステム起動時に自動的に起動せず、後で管理者権限を持つユーザーがサービスを開始するまで動作しません。

    「net」コマンドを用いて、SoftEther VPN Server サービスを開始または停止することも可能です。サービスを開始するには、「net start sevpnserver」と入力します。サービスを停止するには、「nnet stop sevpnserver」と入力します。

    SoftEther VPN Server は古いオペレーティングシステム上で、Windows NT 以降のサービスシステムをエミュレーションしています。ただし、この場合はユーザーがログオフする際にプロセスが終了する場合があるなど、いくつかの制限事項があります。
     

    3-2-1.png

    サービスとして登録された SoftEther VPN Server

    UNIX 版 SoftEther VPN Server のサービスモードに関する説明事項

    Linux 版および、その他の UNIX 版の SoftEther VPN Server を、サービスモードでインストールおよび起動する方法については、「7.3 Linux へのインストールと初期設定」 を参照してください。

    3.2.2 ユーザーモード

    「ユーザーモード」は特殊な動作モードです。SoftEther VPN Server をユーザーモードで動作させると、SoftEther VPN Server はユーザーのプロセスとして、バックグラウンドで動作するようになります。ユーザーモードで SoftEther VPN Server を動作させるには、起動する都度、そのユーザーとしてシステムにログオンして、vpnserver 実行可能ファイルを起動する必要があります。また、オペレーティングシステムによって下記のように動作が異なります。

    • Windows オペレーティングシステムでは、ユーザーモードで起動した VPN Server プロセスは、そのユーザーが「ログオンしている状態」でのみバックグラウンドで稼動し続けますが、ユーザーがログオフすると同時にプロセスは終了します。
    • UNIX 系オペレーティングシステムでは、ユーザーモードが起動した VPN Server プロセスは、その時点で子プロセスを生成し、それをバックグラウンドプロセス化し、ユーザーのセッションから切り離すことができます。したがって、ユーザーがログアウトした場合でも、システム上に VPN Server のプロセスは残り、システムがシャットダウンしたり再起動されるまで VPN Server プロセスはバックグラウンドで稼動し続けます。

    Windows 版 SoftEther VPN Server のユーザーモードに関する説明事項

    Windows 版の VPN Server をユーザーモードで起動するには、vpnserver.exe 実行可能ファイルに 「/usermode」オプションを付けて起動します。

    > vpnserever /usermode

    起動が完了するとタスクトレイ上にアイコンが表示され、VPN Server がユーザーモードで起動したことになります。このモードでは VPN Server のプログラムは他のユーザーモードで動作するアプリケーションプログラム (Word や電卓など) と同じような、一般のユーザー権限で実行することができるプログラムとして動作していることになります。したがって、ユーザーモードで VPN Server を起動するためにシステム管理者権限などは一切不要です。ただし、ユーザーがログオフすると同時に VPN Server プロセスも終了してしまいます。頻繁に VPN Server をユーザーモードで起動するためには、上記の /usermode オプションを付けたコマンドラインをショートカットファイルとしてデスクトップまたは [スタートアップ] フォルダに設置しておくことを推奨します。

    3-2-2.png

    ユーザーモードで起動した SoftEther VPN Server

    また、一度起動したユーザーモードのプロセスを終了するには、タスクトレイのアイコンを右クリックして [SoftEther VPN Server の終了] をクリックします。

    さらに [タスクトレイアイコンを非表示にする] をクリックすると、タスクトレイにアイコンが表示されなくなります。この機能は、常時ユーザーモードで VPN Server を起動していて、アイコン表示が邪魔な場合に使用してください。ただし、タスクトレイアイコンを非表示にした場合は、メニューから VPN Server を終了することができなくなります。そのような場合は、Ctrl + Alt + Del キーを押してタスクマネージャを開き、vpnserver.exe プロセスを終了してください。なお、vpnserver.exe を、次回ユーザーモードで起動する際に「/usermode_showtray」オプションを付けることで、タスクトレイのアイコンを復活させることができます。

    3-2-3.png

    タスクトレイアイコンの非表示メニュー

    SoftEther VPN Server を使用する場合に、システム管理者権限を使用してシステムサービスとして登録し動作させずに、あえて一般ユーザー権限でユーザーモードとして動作させておくことにより、セキュリティを強化することができる場合があります。ただし、ユーザーモードで SoftEther VPN Server を起動している場合は、ローカルブリッジ機能が使用できない場合があります。

    UNIX 版 SoftEther VPN Server のユーザーモードに関する説明事項

    Linux を含む UNIX 版の VPN Server をユーザーモードで起動するには、vpnserver 実行可能ファイルをシステムにデーモンとして登録せずに、通常のアプリケーションコマンド (ls や cat など) を起動するのと同様に、コマンドラインから下記のように「start」引数を付けて vpnserver を起動します。

    $ ./vpnserver start
    SoftEther VPN Server Service Started.
    $ 

    「SoftEther VPN Server Service Started.」というメッセージが出力された後に制御がシェルに戻れば、ユーザーモードで正しく VPN Server を起動することができたことを意味します。なお、一度起動した VPN Server を終了するには、次のように「stop」引数を付けて vpnserver を起動します。

    $ ./vpnserver stop
    SoftEther VPN Server Service Stopped.
    $  

    VPN Server を UNIX 上においてユーザーモードで起動した場合は、そのユーザーの権限でプロセスが動作し、バックグラウンドプロセス化します。したがって、そのユーザーがログアウトしたり、SSH 接続を切断したりした場合でも、vpnserver プロセスは依然として動作し続けます。プロセスは、システムが再起動したり、root によってそのプロセスが強制終了されるまで動作し続けます。

    なお 「7.3 Linux へのインストールと初期設定」 でも解説されていますが、UNIX 系オペレーティングシステムでは、vpnserver プロセスをデーモン化して使用する場合は、オペレーティングシステムのスタートアップスクリプトに、単純に「vpnserver start」の呼び出しを行わせるように指示するよう登録するだけです。もしサービスモードとして VPN Server を稼動させる場合でも、ここでの手順と同等のことが root 権限を持つシステムによって自動的に行われるだけに過ぎないために、本質的な違いはほとんどありません。したがってデーモン化した VPN Server においても、下記で説明する事項は一般的に当てはまります。

    UNIX 版 VPN Server では、下記のように vpnserver プロセスは 2 段階に分けて起動しています。まず execsvc という名前の 1 個目のプロセスがバッグラウンドプロセスとして起動し、次にそのプロセスが子プロセスを fork() システムコールによって生成し、子プロセスが実際の VPN 処理を行います。親プロセス (下記の例ではプロセス ID が 1549) は、子プロセス (下記の例ではプロセス ID が 1550) を常に監視し、万一異常なエラーが発生した場合は、直ちにプロセスを終了してからもう一度プロセスを起動し回復を試みます (詳しくは 「3.3 VPN Server 管理」 をお読みください)。下記の例は Linux の特定のシステムでの実行例であり、別の Linux や他のオペレーティングシステムでは表示が異なる場合があります。また Linux カーネルの古いバージョン (ネイティブスレッドに対応していないバージョン) では、複数のスレッドを複数のプロセスとして表示するため、実際には vpnserver プロセスが下記よりも多く生成されている場合がありますが、それは表示上の問題であり正常な動作です。

    $ ps auxf
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    neko 1549 0.0 0.8 5188 560 ? S< Nov24 0:00 /tmp/vpnserver execsvc
    neko 1550 0.0 4.0 11888 2520 ? S< Nov24 0:08 \_ /tmp/vpnserver execsvc 
    滅多に発生することではありませんが、ハードウェアの故障 (たとえばメモリの不良) などの何らかの原因によって、ユーザーモードで起動した VPN Server プロセスが暴走してしまい、「vpnserver /stop」で停止できなくなった場合は、まず親プロセスである vpnserver プロセス (上記の例ではプロセス ID が 1549) を「kill -KILL」でシグナルを送信することによって強制終了し、次に残りのプロセス (上記の例ではプロセス ID 1550) を「kill -KILL」でシグナルを送信することによって強制終了してください。子プロセスを先に強制終了すると、親プロセスは子プロセスが異常終了したと判断しもう一度子プロセスを起動する場合があります。システムによっては、「killall -KILL vpnserver 」によって、すべての vpnserver プロセスを同時に終了することができる場合もあります。

    また、vpnserver プロセスは、TERM シグナル (通常の終了要求シグナル) を受信すると正常終了処理を行います。

    UNIX 系オペレーティングシステムでは、一般ユーザー権限で動作するプロセスに対して 、1024 番以下の TCP/IP ポートを待機状態にして使用することが許可されていません。したがって、SoftEther VPN Server を使用する場合に、システム管理者権限を使用してシステムサービスとして登録し動作させずに、一般ユーザー権限でユーザーモードとして動作させた場合は、1024 番以下の TCP/IP リスナーポートを開くことができません。SoftEther VPN Server では、デフォルトでは 443 番、992 番、8888 番の 3 つのポートをリスナーポートとして開くように試みますが、これをユーザーモードで動作させると 8888 番のポートのみがリッスン状態となりますのでご注意ください。また、ユーザーモードで SoftEther VPN Server を起動している場合は、ローカルブリッジ機能が使用できない場合があります。