7.3 Linux へのインストールと初期設定 - SoftEther VPN プロジェクト

7.3 Linux へのインストールと初期設定

    ここでは、「SoftEther VPN Server」を Linux オペレーティングシステムにインストールする際の操作方法について解説します。なお、Linux オペレーティングシステムの状態は、システムをクリーンインストールした直後の、余分なアプリケーションソフトウェアなどが一切インストールされていない状態を仮定しています。また、Linux ディストリビューションに含まれているファイアウォールなどの機能が、原則として使用されておらず、外部からの TCP/IP ポートに対する通信のブロック機能 (ファイアウォール機能) が、無効になっている状態を仮定しています。

    7.3.1 推奨システム

    推奨するオペレーティングシステムの構成

    「SoftEther VPN Server」の Linux 版は、Linux カーネル 2.4 以降であれば多くの場合動作しますが、ソフトイーサ株式会社が推奨する環境は下記のディストリビューションによる Linux を使用する環境のみです (マニュアル執筆時の推奨環境であり、推奨環境は今後増える場合があります)。

    • Red Hat Enterprise Linux AS / ES Version 4 / 5 (x86 版または x64 版)
      (カーネルのバージョンを、標準搭載のアップデートユーティリティによって Kernel 2.6.9-22 以降にアップデートしてください。)
    • Turbolinux 10 Server (x86 版または x64 版)
      (カーネルのバージョンを、標準搭載のアップデートユーティリティによって Kernel 2.6.8-5 以降にアップデートしてください。)
    • Fedora Core 4 以降 (x86 版または x64 版)、CentOS 4 以降 (x86 版または x64 版)
      (カーネルのバージョンを、標準搭載のアップデートユーティリティにより、できる限り最新のものにアップデートしてください。)

    なお、システム要件の詳細については 「仕様」 を参照してください。

    この章におけるインストール方法の解説では、上記のいずれかのオペレーティングシステムを使用していることを仮定し、「/usr/local/vpnserver/」ディレクトリを新しく作成し 、そこに VPN Server をインストールすることを仮定しています。

    Red Hat Enterprise Linux AS / ES Version 4 / 5 を使用する場合

    ディストリビューションとして「Red Hat Enterprise Linux AS / ES Version 4 / 5 」を使用する場合は、以下の方法によってシステムをクリーンインストールした後の環境のみサポート対象となっております。

    • Red Hat Enterprise Linux AS / ES Version 4 / 5 は、クリーンインストールしてください。以前のバージョンの Linux からのアップグレードなどによって、ライブラリなどの整合性がとれていない状態はできる限り避けてください。
    • ハードディスクのパーティションを作成する場合は、/usr/ ディレクトリが入るパーティションに、十分な空き容量を割り当ててください。この解説の例では、VPN Server を /usr/local/vpnserver/ にインストールすることを仮定しており、また VPN Server が書き出すログファイルも、同じディレクトリ内に書き出されるため、パーティションには十分な容量を割り当てることを推奨します。
    • インストールするコンポーネントを選択するフェーズでは、少なくとも「開発ツール (コンパイラなど)」、「開発用ライブラリ」などを同時にインストールしてください。VPN Server のインストール時には make や gcc、binutils などのユーティリティと、libc (glibc)、zlib、openssl、readline および ncurses の各開発用ライブラリバージョン (devel と呼ばれる場合もあります) が必要です。
    • オペレーティングシステムのインストール後、Red Hat Network を使用して Linux カーネルのバージョンを最新のもの (少なくとも Kernel 2.6.9-22 以降) にアップデートしてください。Red Hat Enterprise Linux AS / ES Version 4 に初期状態で含まれているカーネルには、並列処理と同期関係の処理に不具合があるため、VPN Server の動作が不安定になる場合があります。必ずカーネルのアップデートを行ってください。
    • ファイアウォール機能や SELinux 機能などは、無効の状態でインストールを完了させてください。これらの機能は、VPN Server が正しくインストールできたことを確認してから必要な場合のみ有効にしてください。

    Turbolinux 10 Server を使用する場合

    「Turbolinux 10 Server」を使用する場合は、以下の方法によって、システムをクリーンインストールした後の環境のみサポート対象となっております。

    • Turbolinux 10 Server は、クリーンインストールしてください。以前のバージョンの Linux からのアップグレードなどによって、ライブラリなどの整合性がとれていない状態はできる限り避けてください。
    • ハードディスクのパーティションを作成する場合は、/usr/ ディレクトリが入るパーティションに、十分な空き容量を割り当ててください。この解説の例では、VPN Server を /usr/local/vpnserver / にインストールすることを仮定しており、また VPN Server が書き出すログファイルも、同じディレクトリ内に書き出されるため、パーティションには十分な容量を割り当てることを推奨します。
    • インストールするコンポーネントを選択するフェーズでは、少なくとも「開発ツール (コンパイラなど)」、「開発用ライブラリ」などを同時にインストールしてください。VPN Server のインストール時には make や gcc、binutils などのユーティリティと、libc (glibc)、zlib、openssl、readline および ncurses の各開発用ライブラリバージョン (devel と呼ばれる場合もあります) が必要です。
    • オペレーティングシステムのインストール後、アップデートユーティリティを使用して Linux カーネルのバージョンを最新のもの (少なくとも Kernel 2.6.8-5 以降) にアップデートしてください。Turbolinux 10 Server に初期状態で含まれているカーネルには並列処理と同期関係の処理に不具合があるため、VPN Server の動作が不安定になる場合があります。必ずカーネルのアップデートを行ってください。
    • ファイアウォール機能や SELinux 機能などは、無効の状態でインストールを完了させてください。これらの機能は、VPN Server が正しくインストールできたことを確認してから、必要な場合のみ有効にしてください。

    Fedora Core 4 を使用する場合

    「Fedora Core 4」を使用する場合は、以下の方法によってシステムをクリーンインストールした後の環境に VPN Server をインストールすることを推奨します。なお、Fedora Core 4 は、VPN Server の製品版のサポートサービスの対象外となっていますのでご注意ください。

    • Fedora Core 4 は、クリーンインストールしてください。以前のバージョンの Linux からのアップグレードなどによって、ライブラリなどの整合性がとれていない状態はできる限り避けてください。
    • ハードディスクのパーティションを作成する場合は、/usr/ ディレクトリが入るパーティションに、十分な空き容量を割り当ててください。この解説の例では、VPN Server を /usr/local/vpnserver / にインストールすることを仮定しており、また VPN Server が書き出すログファイルも、同じディレクトリ内に書き出されるため、パーティションには十分な容量を割り当てることを推奨します。
    • インストールするコンポーネントを選択するフェーズでは、少なくとも「開発ツール (コンパイラなど)」、「開発用ライブラリ」などを同時にインストールしてください。VPN Server のインストール時には make や gcc、binutils などのユーティリティと、libc (glibc)、zlib、openssl、readline および ncurses の各開発用ライブラリバージョン (devel と呼ばれる場合もあります) が必要です。
    • オペレーティングシステムのインストール後、可能であれば Linux カーネルのバージョンを最新のものにアップデートしてください。古いバージョンのカーネルには、並列処理と同期関係の処理に不具合があるため、VPN Server の動作が不安定になる場合があります。カーネルのアップデートを行うことを推奨します。
    • ファイアウォール機能や SELinux 機能などは、無効の状態でインストールを完了させてください。これらの機能は、VPN Server が正しくインストールできたことを確認してから必要な場合のみ有効にしてください。

    7.3.2 インストールモードの選択

    3.1 動作環境」 および 「3.2 動作モード」 で解説したように、SoftEther VPN Server は、「サービスモード」と「ユーザーモード」の 2 種類で動作させることができます。システム管理者が、社内で日常的な業務システムの一部として使用することを目的として VPN Server を構築するような場合には、通常は「サービスモード」でインストールすることを推奨します。Linux では、VPN Server プログラムを「サービスモード」でシステムにインストールするには、Linux の「スタートアップスクリプト」に「vpnserver」プログラムを、デーモンプログラムとして登録する必要があります。

    7.3.3 必要なソフトウェアおよびライブラリの確認

    VPN Server を Linux にインストールするには、以下のようなソフトウェアおよびライブラリが必要です。これらのソフトウェアやライブラリがシステムにインストールされており使用可能なことを確認してください (推奨環境のディストリビューションを 「7.3.1 推奨システム」 で指定された方法でインストールした場合は、これらのライブラリもインストールされています)。

    • gcc ソフトウェア
    • binutils ソフトウェア
    • パッケージファイル展開用の tar や gzip などのソフトウェア
    • chkconfig システムユーティリティ
    • cat や cp などの基本的なファイル操作ユーティリティ
    • 日本語環境で使用するための EUC-JP や UTF-8 などのコードページテーブル
    • libc (glibc) ライブラリ
    • zlib ライブラリ
    • openssl ライブラリ
    • readline ライブラリ
    • ncurses ライブラリ
    • pthread ライブラリ

    7.3.4 パッケージの解凍

    インストール用ファイルの準備

    VPN Server をインストールするには、利用したいシステムに合わせた VPN Server プログラムが格納されているファイル (tar.gz 形式で圧縮された パッケージファイル) を入手する必要があります。

    これらのファイルは SoftEther VPN プロジェクトの Web サイト(http://www.softether.org/)からダウンロードして入手することができます。

    インストール用パッケージファイルの展開

    インストール用のパッケージファイルを、tar コマンドによって展開します。適当なディレクトリに tar.gz ファイルをコピーし、下記のように展開してください。

     

    [root@machine root]# tar xzvf vpnserver-5070-rtm-linux-x86.tar.gz 
    vpnserver/
    vpnserver/vpnserver.a
    vpnserver/vpncmd.a
    vpnserver/hamcore.se2
    vpnserver/libcrypto.a
    vpnserver/Makefile
    vpnserver/libssl.a
    vpnserver/License_ReadMeFirst.txt
    vpnserver/License_ReadMeFirstUtf.txt
    vpnserver/License_ReadMeFirstSjis.txt
    vpnserver/.install.sh 

    パッケージを展開すると、「vpnserver」という新しいディレクトリが作業フォルダに作成され、インストールに必要な各種ファイルが展開されます。

    7.3.5 実行可能ファイルの生成

    make の実行

    VPN Server をインストールするには、make という操作を行って vpnserver 実行可能ファイルを生成する必要があります。

    まず、先ほど展開した「vpnserver」ディレクトリに移動して、「make」と入力します。

    すると、下記のように英語のメッセージで「使用権許諾契約書を読みますか?」という内容の質問が画面に表示されます。ここで「1」を選択してください。

     

    [root@machine vpnserver]# make
    ./.install.sh

    Do you want to read the License Agreement for this software ?
    1. Yes
    2. No
    Please choose one of above number:
    1

     

    すると、画面上に「使用権許諾契約書」が表示されます。この使用権許諾契約書を注意してお読みください。なお、使用権許諾契約書は何画面にも渡って表示されますので、画面スクロール機能のあるターミナルエミュレータ 、または SSH クライアントソフトウェアを使用してください。もし使用権許諾契約書の内容をすべて読むことができない場合は、一度 Ctrl+C キーを押して make を中断し、テキストエディタなどで vpnserver ディレクトリ内の使用権許諾契約書が書かれたテキストファイルを直接開き、内容をご確認ください。

    使用権許諾契約書に続き、英語のメッセージで「使用権許諾契約書を読みましたか?」という内容の質問が画面に表示されますので、読んだ場合は「1」を選択してください。

    EULA

     

    Did you read and understand the License Agreement ?
    (If you couldn't read above text, Please read License_ReadMe.txt
    file with any text editor.)
    1. Yes
    2. No
    Please choose one of above number:
    1

     

    次に、英語のメッセージで「使用権許諾契約書に同意しますか?」という内容の質問が画面に表示されますので、 使用権許諾契約書の内容に同意する場合は「1」を選択してください。

    Did you agree the License Agreement ?
    1. Agree
    2. Do Not Agree
    Please choose one of above number:
    1

     

    使用権許諾契約書に同意すると、自動的に vpnserver プログラムの生成処理が行われます。

    make[1]: Entering directory `/root/vpnserver'
    ranlib libssl.a
    ranlib libcrypto.a
    ranlib vpnserver.a
    gcc vpnserver.a -pthread -lrt -lm -lz libssl.a libcrypto.a -lpthread -ldl
    -lreadline -lcurses -o vpnserver
    strip vpnserver
    ranlib vpncmd.a
    gcc vpncmd.a -pthread -lrt -lm -lz libssl.a libcrypto.a -lpthread
    -ldl -lreadline -lcurses -o vpncmd
    strip vpncmd
    make[1]: Leaving directory `/root/vpnserver'
    
    [root@machine vpnserver]# 

    もしこの処理の過程でエラーが発生した場合は、vpnserver プログラムの生成処理に失敗しています。そのような場合は、「7.3.1 推奨システム」 および 「7.3.3 必要なソフトウェアおよびライブラリの確認」 をもう一度確認し、必要なライブラリなどが不足していないかどうか確認してください。

    7.3.6 VPN Server の配置

    vpnserver プログラムの生成が完了したら、パッケージを解凍した際に作成された vpnserver ディレクトリを、/usr/local/ ディレクトリにそのまま移動することをお勧めします。下記の方法で vpnserver ディレクトリを /usr/local/ に移動してください。 なお、ここからの作業は、「root」ユーザーとして行う必要があります。

    [root@machine vpnserver]# cd ..
    [root@machine root]# mv vpnserver /usr/local
    [root@machine root]# ls -l /usr/local/vpnserver/
    Total 13000
    -rwxrwxrwx 1 root root 20245 12ŒŽ 8 16:14 License_ReadMeFirst.txt*
    -rwxrwxrwx 1 root root 20317 12ŒŽ 8 16:14 License_ReadMeFirstSjis.txt*
    -rwxrwxrwx 1 root root 30210 12ŒŽ 8 16:14 License_ReadMeFirstUtf.txt*
    -rwxrwxrwx 1 root root 609 12ŒŽ 8 16:14 Makefile*
    -rwxrwxrwx 1 root root 4018399 12ŒŽ 8 16:14 hamcore.se2*
    -rwxrwxrwx 1 root root 1942994 12ŒŽ 9 02:23 libcrypto.a*
    -rwxrwxrwx 1 root root 336070 12ŒŽ 9 02:23 libssl.a*
    -rwxr-xr-x 1 root root 1814216 12ŒŽ 9 02:23 vpncmd*
    -rwxrwxrwx 1 root root 1630858 12ŒŽ 9 02:23 vpncmd.a*
    -rwxr-xr-x 1 root root 1814120 12ŒŽ 9 02:23 vpnserver*
    -rwxrwxrwx 1 root root 1630304 12ŒŽ 9 02:23 vpnserver.a*
    [root@machine root]#  

     

    上記のように /usr/local/vpnserver/ ディレクトリにすべてのファイルが移動したことが確認されれば、配置は完了しています。

    次に、この vpnserver ディレクトリ内のファイルを、「root 権限」でなければ読み書きすることができないように、パーミッションを変更して保護します。

    [root@machine root]# cd /usr/local/vpnserver/
    [root@machine vpnserver]# chmod 600 *
    [root@machine vpnserver]# chmod 700 vpncmd
    [root@machine vpnserver]# chmod 700 vpnserver
    [root@machine vpnserver]# ls -l
    Total 13000
    -rw------- 1 root root 20245 12ŒŽ 8 16:14 License_ReadMeFirst.txt
    -rw------- 1 root root 20317 12ŒŽ 8 16:14 License_ReadMeFirstSjis.txt
    -rw------- 1 root root 30210 12ŒŽ 8 16:14 License_ReadMeFirstUtf.txt
    -rw------- 1 root root 609 12ŒŽ 8 16:14 Makefile
    -rw------- 1 root root 4018399 12ŒŽ 8 16:14 hamcore.se2
    -rw------- 1 root root 1942994 12ŒŽ 9 02:23 libcrypto.a
    -rw------- 1 root root 336070 12ŒŽ 9 02:23 libssl.a
    -rwx------ 1 root root 1814216 12ŒŽ 9 02:23 vpncmd*
    -rw------- 1 root root 1630858 12ŒŽ 9 02:23 vpncmd.a
    -rwx------ 1 root root 1814120 12ŒŽ 9 02:23 vpnserver*
    -rw------- 1 root root 1630304 12ŒŽ 9 02:23 vpnserver.a
    [root@machine vpnserver]#  
     

    これで vpnserver プログラムの配置は完了です。

    7.3.7 vpncmd の check コマンドによる動作チェック

    vpnserver の動作を開始する前に、お使いのコンピュータシステム上で VPN Server を正しく動作させることができるかどうかの最終確認を行うことをお勧めします。

    「vpncmd コマンドライン管理ユーティリティ」の「check」コマンドを使用すると、システムが VPN Server を動作させることができる十分な 機能を持っているかどうかを、自動的に検査することが可能です。詳しくは 「6.6 VPN Tools コマンドリファレンス」 を参照してください。

    まず「./vpncmd」と入力して、vpncmd を起動してください。次に「3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)」を選択し、「check」コマンドを実行してください。

    [root@machine vpnserver]# ./vpncmd
    vpncmd command - SoftEther VPN Command Line Management Utility
    SoftEther VPN Command Line Management Utility (vpncmd command)
    
    By using vpncmd program, the following can be achieved.
    
    1. Management of VPN Server or VPN Bridge
    2. Management of VPN Client
    3. Use of VPN Tools (certificate creation and communication speed measurement)
    
    Select 1, 2 or 3: 3
    
    VPN Tools was launched. By inputting HELP, you can view a list of the commands t
    hat can be used.
    
    VPN Tools>check
    Check command - Check if SoftEther VPN Operation is Possible
    ---------------------------------------------------
    SoftEther VPN Operation Environment Check Tool
    
    If this operation environment check tool is run on a system and that system pass
    es, it is highly likely that SoftEther VPN software can operate on that system. T
    his check may take a while. Please wait...
    
    Checking 'Kernel System'...
    [Pass]
    Checking 'Memory Operation System'...
    [Pass]
    Checking 'ANSI / Unicode string processing system'...
    [Pass]
    Checking 'File system'...
    [Pass]
    Checking 'Thread processing system'...
    [Pass]
    Checking 'Network system'...
    [Pass]
    
    All checks passed. It is highly likely that SoftEther VPN Server / Bridge can ope
    rate normally on this system.
    
    The command terminated normally.
    VPN Tools>exit
    [root@machine vpnserver]#  
    
     

    check コマンドを実行した結果、上記のように画面上に「すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。」と表示された場合は、お使いのシステムは VPN Server の動作要件を満たしている可能性が高いため、安心して VPN Server をお使いいただくことができます。

    もし、上記のチェック結果でいずれかのチェック項目に失敗してしまった場合は、「7.3.1 推奨システム」 および 「7.3.3 必要なソフトウェアおよびライブラリの確認」 を、もう一度ご確認いただくことをお勧めします。

    7.3.8 スタートアップスクリプトへの登録

    上記の方法で vpnserver を /usr/local/vpnserver/ ディレクトリにインストールした後は、/usr/local/vpnserver/vpnserver プログラムを、Linux が起動している間は常にバックグラウンドで動作し続けるデーモンプロセスとして登録することによって、vpnserver プログラムは「サービスモード」として動作することができるようになります。

    vpnserver をデーモンプロセスとして Linux に登録するには、下記のような「スタートアップスクリプト」を /etc/init.d/vpnserver という名前で作成してください (下記のスタートアップスクリプトは記述例であり、お使いのシステムによっては、一部を書き換えなければ動作しない場合があります)。

     

    #!/bin/sh
    # chkconfig: 2345 99 01
    # description: SoftEther VPN Server
    DAEMON=/usr/local/vpnserver/vpnserver
    LOCK=/var/lock/subsys/vpnserver
    test -x $DAEMON || exit 0
    case "$1" in
    start)
    $DAEMON start
    touch $LOCK
    ;;
    stop)
    $DAEMON stop
    rm $LOCK
    ;;
    restart)
    $DAEMON stop
    sleep 3
    $DAEMON start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    esac
    exit 0

     

    上記のスクリプトをテキストファイルとして /etc/init.d/vpnserver に書き込むには、テキストエディタを使用することもできますが、cat コマンドを使用することもできます。cat コマンドを使用してスクリプトを作成するには下記のようにし、最後の行の改行の後に Ctrl+D キーを押します。

    [root@machine vpnserver]# cat > /etc/init.d/vpnserver
    #!/bin/sh
    # chkconfig: 2345 99 01
    # description: SoftEther VPN Server
    DAEMON=/usr/local/vpnserver/vpnserver
    LOCK=/var/lock/subsys/vpnserver
    test -x $DAEMON || exit 0
    case "$1" in
    start)
    $DAEMON start
    touch $LOCK
    ;;
    stop)
    $DAEMON stop
    rm $LOCK
    ;;
    restart)
    $DAEMON stop
    sleep 3
    $DAEMON start
    ;;
    *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    esac
    exit 0

     

    /etc/init.d/vpnserver スタートアップスクリプトを作成した後、このスクリプトのパーミッションを変更して、root 権限を持たないユーザーによって書き換えられないようにします。

    [root@machine vpnserver]# chmod 755 /etc/init.d/vpnserver

    最後に、「chkconfig」コマンドを使用して、上記のスタートアップスクリプトが Linux カーネル起動時に、自動的にバックグラウンドで起動するようにします。

     
    [root@machine vpnserver]# /sbin/chkconfig --add vpnserver 

    これで VPN Server を「サービスモード」として動作させる準備が整いました。

    7.3.9 サービスの開始と停止

    サービスモードとして登録された VPN Server は、Linux の起動時に自動的に起動し、また Linux のシャットダウン時に自動的に機能を停止します。管理上の理由があり、VPN Server サービスを一時的に停止したり、後から再開したりしたい場合は、手動でサービスを停止または開始することができます。

    「サービスモード」として登録された VPN Server を開始または停止したい場合は、次のように入力します。

    VPN Server サービスを開始させたい場合

    VPN Server サービスが動作していない状態で、「root 権限」で以下のように入力すると、VPN Server サービスが開始されます。

     

    [root@machine vpnserver]# /etc/init.d/vpnserver start 

    VPN Server サービスを停止させたい場合

    VPN Server サービスが動作している状態で、「root 権限」で以下のように入力すると、VPN Server サービスが停止されます。

    [root@machine vpnserver]# /etc/init.d/vpnserver stop 

     

    VPN Server サービスを停止させる必要がある状況

    VPN Server サービスを、手動で停止させる必要があるのは、下記のような場合です。

    • 手動でコンフィグレーションファイルを編集したり、置き換えたりする場合。
    • VPN Server の新しいバージョンが公開されたため、vpnserver プログラムやその他のファイルなどを、最新版にアップデートする場合 (vpnserver、vpncmd および hamcore.se2 ファイルを置換する場合は、事前に必ずサービスを停止させてください)。
    • 動作中の VPN Server の挙動が不安定になった場合などで、サービスを再起動したい場合。

    vpnserver プロセスの強制終了

    滅多に発生しませんが、コンピュータの物理メモリの障害やソフトウェアのバグなどによって、VPN Server の動作が異常になることがあります。このような場合、上記の方法で VPN Server サービスを停止しようとしても応答がない場合は、vpnserver プロセスを強制終了することによってサービスを停止させることができます。vpnserver プロセスを強制終了させる具体的な方法については、「3.2.2 ユーザーモード」 の 「kill」コマンドの使用方法を参照してください。

    7.3.10 一般ユーザー権限で起動する場合の制限事項

    Linux 版 VPN Server は一般ユーザー権限で起動することもできます。一般ユーザー権限でユーザーモードとして起動する場合、システムのサービスとして登録することはできませんが、一般ユーザーが 「./vpnserver start」と入力して VPN Server プログラムをバックグラウンドで起動した場合は Windows 版と異なりそのユーザーがログアウトした後も vpnserver プロセスは動作を続けることができます。なお、ソフトイーサ株式会社は下記のような理由で VPN Server をユーザーモードで本格的に運用することを推奨していません。

    • 「ローカルブリッジ機能」(詳しくは 「3.6 ローカルブリッジ」 を参照してください) が使用できなくなります。
    • システム起動後、ユーザーがログインして手動で vpnserver プロセスを起動しなければならないため、運用性が低下します。