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

5.2 動作モード

    ユーザーは SoftEther VPN Bridge を、「サービスモード」と「ユーザーモード」の、2 種類のモードで動作させることができます。

    5.2.1 サービスモード

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

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

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

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

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

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

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

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

     

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

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

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

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

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

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

    > vpnbridge /install

     

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

    > vpnbridge /uninstall

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

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

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

    Windows における「サービス」という概念は、Windows NT 以降のオペレーティングシステムにのみ導入されています。SoftEther VPN Bridge は Windows のサービスシステムに依存しています。しかし、サービスシステムのない「古い Windows」(Windows 98、Windows 98 Second Edition、Windows Millennium Edition) 上に、SoftEther VPN Bridge をサービスモードでインストールし、バックグラウンドタスクとして起動させておくことができるようになっています。この場合、SoftEther VPN Bridge は、これらの古いオペレーティングシステム上で、Windows NT 以降のサービスシステムを「エミュレーション」しています。ただし、この場合はユーザーがログオフする際に、プロセスが終了する場合があるなど、いくつかの制限事項があります。

    5-2-1.png
    サービスとして登録された SoftEther VPN Bridge

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

    Linux を含む UNIX 版の VPN Bridge を、「サービスモード」でインストールおよび起動する方法の詳細に関しては、「9.3 Linux へのインストールと初期設定」 を参照してください。

    5.2.2 ユーザーモード

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

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

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

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

     

    > vpnbridge /usermode

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

    5-2-2.png

    ユーザーモードとして起動した SoftEther VPN Bridge のタスクトレイアイコン

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

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

    5-2-3.png

    タスクトレイアイコンを非表示にするためのメニュー

     
    大変便利なことに、Windows オペレーティングシステムでは、一般ユーザー権限で動作するプロセスに対して、すべての TCP/IP ポートを待機状態にして使用することが許可されています。したがって、SoftEther VPN Bridge を使用する場合に、システム管理者権限を使用してシステムサービスとして登録し動作させずに、あえて一般ユーザー権限でユーザーモードとして動作させておくことにより、セキュリティを強化することができる場合があります。ただし、ユーザーモードで SoftEther VPN Bridge を起動している場合は、ローカルブリッジ機能が使用できない場合があります。

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

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

    $ ./vpnbridge start
    PacketiX VPN Bridge Service Started.
    $ 

     

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

    $ ./vpnbridge stop
    PacketiX VPN Bridge Service Stopped.
    $ 

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

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

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

    $ 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/vpnbridge execsvc
    neko      1550  0.0  4.0 11888 2520 ?        S<   Nov24   0:08  \_ /tmp/vpnbeidge execsvc

    滅多に発生することではありませんが、ハードウェアのトラブル (たとえばメモリの不良) などの何らかの原因によって、ユーザーモードで起動した VPN Bridge プロセスが暴走してしまい、「vpnbridge /stop」でも停止できなくなってしまった場合は、まず親プロセスである 「vpnbridge」プロセス (上記の例では、プロセス ID が 1549) を「kill -KILL」でシグナルを送信することによって強制終了し、次に残りのプロセス (上記の例では 、プロセス ID 1550) を「kill -KILL」でシグナルを送信することによって強制終了してください。子プロセスを先に強制終了すると、親プロセスは子プロセスが異常終了したと判断し 、もう一度子プロセスを起動する場合があります。システムによっては、「killall -KILL vpnbridge」によって、すべての vpnbridge プロセスを同時に終了することができる場合もあります。

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


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