PacketiX VPN 2.0 Server (vpnserver-5280-rtm-linux-x86) on Fedora Core 6 (FC6)

31/Dec/2006 tested on Fedora Core 6

PacketiX VPN は Layer 2 VPN over the TCP/IP network を簡単に確立でき、プロキシー経由でも接続をすることが出来るすばらしいソフトウエアです。サーバーの設定方法は詳しくヘルプファイルに書いてありますが、補足説明や自分が変更した方法などを記述します。まずはここからダウンロード。Softether.

本当はopenSUSE10.2で使いたかったのですが、インストールはMakefileを修正することでコンパイル出来たのですが、CPU100%になったあと、うんともすんとも言わずに動作させる事は出来ませんでした。CentOS4.4でもインストール出来ましたが、いろんなソフトが豊富なFedora Core 6で運用することにしました。

インストール

  • コンパイルする前にこれがインストールされていることを確認する。
    1. openssl-devel
    2. zlib-devel
    3. readline-devel
    4. ncurses-devel
  • Linuxバージョンのサーバーをここからダウンロード。 http://www.softether.com/jp/download/
  • コンパイル
    # cp .tar.gz /usr/local/src
    # cd /usr/local/src
    # tar zxvf vpnserver-5280-rtm-linux-x86.tar.gz
    # cd vpnserver/
    # ./.install.sh
    
    コンパイルが始まる前に"1"と"Enter"を3回押してライセンスを確認する。ターミナルで日本語が読めない場合(teraterm等)はEUCに変更すると読めると思います。
  • コンパイルが成功すると以下のメッセージが出ます。
    ranlib libssl.a
    ranlib libcrypto.a
    ranlib vpnserver.a
    gcc vpnserver.a -pthread -lrt -lm -lz libssl.a libcrypto.a -lpthread -ldl -lreadline -lncurses  -o vpnserver
    ranlib vpncmd.a
    gcc vpncmd.a -pthread -lrt -lm -lz libssl.a libcrypto.a -lpthread -ldl -lreadline -lncurses  -o vpncmd
    
  • openSUSE10.2の場合

  • ちなみにopenSUSE10.2では以下のエラーが出てコンパイル出来ない。
    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 vpnclient
    /usr/lib/gcc/i586-suse-linux/4.1.2/../../../../i586-suse-linux/bin/ld: cannot find -lcurses
    collect2: ld returned 1 exit status
    make: *** [vpnclient] Error 1
    
  • openSUSE10.2でコンパイルするためにはMakefileの -lcurses を -lncurses に変更するとコンパイルすることが出来る。
    ...
                            gcc vpnserver.a -pthread -lrt -lm -lz lib
    ssl.a libcrypto.a -lpthread -ldl -lreadline -lncurses  -o vpnclie
    nt
    
    vpncmd:         vpncmd.a
                            -ranlib vpncmd.a
                            gcc vpncmd.a -pthread -lrt -lm -lz libssl
    .a libcrypto.a -lpthread -ldl -lreadline -lncurses  -o vpncmd
    ...
    
  • しかしコンパイルに成功してもopenSUSE10.2で、vpncmdを起動すると、CPU使用率が100%になって反応は何時間待っても返ってきません。なのであきらめてFC6で使用することにしました。もし誰かopenSUSEで使用することが出来たら教えてください。
  • vpnserver をサービスとして起動

  • コンパイルしたバイナリーを丸ごとコピー
    # cp /usr/local/src/vpnserver /usr/local/ -R
    # cd /usr/local/vpnserver
    # chmod 600 *
    # chmod 700 vpncmd vpnserver
    
  • 動作を確認する
    # ./vpncmd
    vpncmd コマンド - PacketiX VPN コマンドライン管理ユーティリティ
    PacketiX VPN コマンドライン管理ユーティリティ (vpncmd コマンド)
    Version 2.20 Build 5280
    Compiled Nov 25 2006 11:08:25 by yagi at ILC308
    Copyright (C) 2004-2006 SoftEther Corporation. All Rights Reserved.
    
    vpncmd プログラムを使って以下のことができます。
    
    1. VPN Server または VPN Bridge の管理
    2. VPN Client の管理
    3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)
    
    1 - 3 を選択: 3
    
    VPN Tools を起動しました。HELP と入力すると、使用できるコマンド一覧が表示できます。
    
    VPN Tools>check
    Check コマンド - PacketiX VPN の動作が可能かどうかチェックする
    ---------------------------------------------------
    PacketiX VPN 動作環境チェックツール
    
    Copyright (C) 2004-2006 SoftEther Corporation.
    All Rights Reserved.
    
    この動作環境チェックツールを実行したシステムがテストに合格した場合は、PacketiX VPN ソフトウェアが動作する可能性が高いです。チェックにはしばらく時間がかかる場合があります。そのままお待ちください...
    
    'カーネル系' のチェック中...
                  [合格] ○
    'メモリ操作系' のチェック中...
                  [合格] ○
    'ANSI / Unicode 文字列処理系' のチェック中...
                  [合格] ○
    'ファイルシステム' のチェック中...
                  [合格] ○
    'スレッド処理システム' のチェック中...
                  [合格] ○
    'ネットワークシステム' のチェック中...
                  [合格] ○
    
    すべてのチェックに合格しました。このシステム上で PacketiX VPN Server / Bridge が正しく動作する可能性が高いと思われます。
    
    コマンドは正常に終了しました。
    
    VPN Tools>exit
    
  • スタートアップスクリプト /etc/init.d/vpnserver を作成
    #!/bin/sh
    # chkconfig: 35 99 00
    # description: PacketiX VPN Server 2.0
    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
    
    オンラインマニュアルに書いてあるサンプルスクリプトだと、NICの後にシャットダウンするようになているので、サービスがストップするのに15分?くらいかかる。上の変更したスクリプトはNICの前にシャットダウンするのですぐシャットダウンすることが出来ます。
  • 実行権限を追加して、自動起動に設定
    # chmod 755 vpnserver
    # chkconfig vpnserver on
    # chkconfig --list | grep vpnserver
    vpnserver       0:off   1:off   2:off   3:on    4:off   5:on    6:off
    
  • VPN Server を起動
    # /etc/init.d/vpnserver start
    PacketiX VPN Server Service Started.
    

    設定

  • 設定はvpncmdコマンドからできますが、「PacketiX VPNサーバー管理」を使って制御する方が簡単です。なので、VPN Serverをインストールしてあるほかのマシンから設定することになります。

  • まずは、「新しい接続設定」からサーバーを登録して「接続」ボタンで接続する。

  • 一番最初に接続したときは「PacketiX VPN Server / Bridge簡易セットアップ」画面が表示される。サーバーをセットアップするので「リモートアクセスVPNサーバー」を選択。

  • 初期化画面で「Yes」を選択。

  • 仮想HUB名を決定

  • ユーザーを作成し、ローカルブリッジの設定をして「閉じる」

  • ここの画面でライセンスを登録する。体験版のライセンスを取得する場合は ここ (http://www.softether.com/jp/vpn2/trial/)から取得できる。

  • ライセンスを確認。

  • ここがメイン画面。

  • 「仮想HUBの管理」をクリックするとこの画面が表示される。

  • 「ユーザーの管理」ボタンでユーザー管理。

  • ゲストと管理者のグループを作成すると良い

  • この例はゲスト用のグループポリシー

  • ローカルブリッジの設定。LAN側のカードにブリッジする。

  • 上記設定で、ローカルLANに接続することが出来た。しかし、そのローカルLANから今度はインターネットに接続することがなぜか出来なかった。自分の環境では、VPNサーバーがローカルLANのインターネットのゲートウェイとして、NATとDHCPも動作しているのですが。
  • ここでOKを押す。

  • そこで、仮想NATと仮想DHCPを利用することにより、ローカルLANとインターネットにも接続することが出来るようになった。この機能を有効にすると、新たなネットワークに接続することになります。

  • ここよりVPNの状態を確認する


  • Back Support & License Agreement

    Dynamic DNSサービスの登録

    ISPからサーバーへのアドレスがDHCPのため変わる事があるので、Dynamic DNSサービスに登録して、常に外部から同一FQDNでアクセスできるようにする。

    Dynamic DO!.jp(https://ddo.jp/)で、無料でドメインを登録することができる。ここで登録してから、以下のようなスクリプトを作成する。URLは無料版の場合。 /etc/cron.d/ddo.jp

    33 3 * * * root wget -O - 'http://free.ddo.jp/dnsupdate.php?dn=domain&pw=pass'
    

    Google
    Web www.grape-info.com