PacketiX のオープンソース版 UT-VPN で取り上げた UT-VPN ですが、Linux(CentOS5)にインストールしてみました。
UT-VPN オープンソースプロジェクト Web サイト - ダウンロードには、UNIX(Linux)版の導入方法を解説した、UT-VPN_Startup_Guide_for_UNIX.pdfが公開されています。親切丁寧なマニュアルなので、ほぼこの通りに作業すれば簡単に導入できますが、一応インストールと動作メモを下記に書いておきます。
Unix(Linux)版はバイナリが公開されておらす、ソースを取得して自身でコンパイルしないといけません。
このソースはUT-VPN Server,Client共通です。
まず、ソースのダウンロードです。(現時点の最新版の場合です。)
# wget "http://utvpn.tsukuba.ac.jp/files/utvpn/v1.01-7101-public-2010.06.27/Source%20Code%20(Win32%20and%20Unix)/utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz"
そして、ダウンロードしたArchiveを解凍します。
# tar xzvf utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz
そして、ビルドを行います。
# cd utvpn-unix-v101-7101-public/
# ./configure
-------------------------------------------------------------
Copyright (C) 2004-2010 SoftEther Corporation.
Copyright (C) 2004-2010 University of Tsukuba, Japan.
Copyright (C) 2003-2010 Daiyuu Nobori. All Rights Reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
-------------------------------------------------------------
Please select your Operating System below:
1: Linux
2: FreeBSD
3: Solaris
4: Mac OS X
Which is your operating system (1-4): ←1(Linux)を選択。
1
Please select your CPU Bits below:
1: 32-bit
2: 64-bit
Which is the bits of your CPU (1-2): ←1(32bit)を入力。
1
Makefile is generated. Please execute 'make' to build UT-VPN.
(この段階でMakeFileが生成されるようです)
# make
(完了すると output ディレクトリにバイナリファイルができます。)
# make install
これで、/usr/bin 配下に、utvpnserver,utvpnclient,utvpncmd が作成されます。
手動でUT-VPNサーバを起動、停止する場合は下記のようにすればいいようです。
# utvpnserver start
サーバ起動時に自動で動くようにするため、起動スクリプトを /etc/rc.d/init.d/utvpnserver として作成します。
起動スクリプトは謎のブログ CentOS5にUT-VPNを入れてみる(メモ)を参考にさせてもらいました。
#!/bin/sh
# chkconfig: 2345 99 01
# description: utvpnserver
DAEMON=/usr/bin/utvpnserver
LOCK=/var/lock/subsys/utvpnserver
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
作成したスクリプトに実行権限を付与します。
chmod 755 /etc/rc.d/init.d/utvpnserver
chkconfig に登録し、サーバ起動時に自動的にあがるようにします。
# chkconfig utvpnserver on
実際に、init.d の起動スクリプトから起動してみます。
# service utvpnserver start
後はVPNサーバの設定をしていくわけですが、/usr/bin/utvpncmd から設定しようとするとコマンドラインのためちょっと面倒です。(なにせUT-VPNの設定は結構多岐にわたるので。。)
ということで、同じLANの別WindowsPCから、Windows版の UT-VPN Server Manager を使って設定します。
UT-VPN Server Manager は Server 版のパッケージに入ってるのですが、いちいちインストールするのも面倒です。
Exeだけを入れたZIPが公開されているので、それを使った方が手間無くていいかもしれません。
v1.01版のEZE Only ZIPファイルはhttp://utvpn.tsukuba.ac.jp/files/utvpn/v1.01-7101-public-2010.06.27/Binary%20(Win32)/Japanese/UT-VPN%20Server/32bit%20-%20Intel%20x86/ExeOnly/utvpnserver-v1.01-7101-public-2010.06.27-ja-win32_onlyfiles-x86-32bit.zipで公開されています。
utvpnsmgr.exe を起動してUT-VPNサーバに接続するわけですが、最初ポート番号が 443 になっていますが、今回のサーバは既にtomcatがこのポートを使っているので、ポート番号は 5555 にしておきます。
これで接続すると管理者パスワードの設定が促されるので、設定しておきます。
utvpnsmgr.exeのUIですが、SoftEther時代と基本的には一緒だったので、容易に設定ができました。
まずは仮想HUBを選択し、ユーザを作成しておきます。
ユーザ作成時に、認証方法を選べますが、パスワード以外にも証明書認証やドメイン認証が使えるようです。
ちょっと試しに固定証明書認証を使ってみることにしました。
まず、ユーザ用の証明書を作成しないといけないわけですが、UT-VPNインストールした時点でサーバ証明書が作成されるようです。(自身をルートとしたなんちゃって証明書ですが。)
これはサーバ管理マネージャの、「暗号化と通信関係の設定」で、「証明書のエクスポート」を行います(X509証明書と秘密鍵ファイルができます)。
で、ユーザの作成ウィンドウで、「証明書作成ツール」から、エクスポートしたサーバ証明書に基づいて証明書を作成します。
これで設定を保存しようとしたのですが、UT-VPNではダメだと怒られます。
残念ながらあきらめましたが、次期バージョンで実装されるといいですね。
UT-VPNは仮想HUBを複数作れるので、VPNも複数の目的用に構築できるので、便利ですね。
UT-VPN Server は物理LANとブリッジできるので、拠点間通信も簡単にできそうです。
クライアントの方は、Windowsマシンの場合MSIインストーラで提供されているので、それをインストーするすだけです。
Unix(Linux)版の方はServerもClientも共通なので、既に述べたビルドをした時点でClient版もできています。
クライアントの方もサーバ起動時に自動で動くようにするため、起動スクリプトを /etc/rc.d/init.d/utvpnclient として作成します。
上記のスクリプトで、ロックファイルと実行するプログラムだけ変更してみました。
#!/bin/sh
# chkconfig: 2345 99 01
# description: utvpnclient
DAEMON=/usr/bin/utvpnclient
LOCK=/var/lock/subsys/utvpnclient
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
作成したスクリプトに実行権限を付与します。
chmod 755 /etc/rc.d/init.d/utvpnclient
chkconfig に登録し、サーバ起動時に自動的にあがるようにします。
# chkconfig utvpnclient on
実際に、init.d の起動スクリプトから起動してみます。
# service utvpnclient start
クライアント側もここから設定が必要となるわけですが、utvpncmd でいちいちコマンドで設定していくのは非常に面倒です。
で、Windows端末からのリモートでクライアントの設定ができる方法があるわけですが、リモート設定の許可を与えてやらないといけません。
ということで、下記コマンドでリモート設定を有効にします。
# utvpncmd /client localhost
utvpncmd コマンド - SoftEther UT-VPN コマンドライン管理ユーティリティ
SoftEther UT-VPN コマンドライン管理ユーティリティ (utvpncmd コマンド)
Version 1.01 Build 7101 (Japanese)
Compiled 2010/06/27 18:40:28 by yagi at pc25
Copyright (C) 2004-2010 SoftEther Corporation.
Copyright (C) 2004-2010 University of Tsukuba, Japan.
Copyright (C) 2003-2010 Daiyuu Nobori.
All Rights Reserved.
VPN Client "localhost" に接続しました。
VPN Client>RemoteEnable
RemoteEnable コマンド - VPN Client サービスのリモート管理の許可
コマンドは正常に終了しました。
VPN Client>exit
後は、Windows端末側のUT-VPN Client が入ったPCで、スタートメニューの「SoftEther UT-VPN Client」 → 「高度な管理ツール」 → 「別のコンピュータの SoftEther UT-VPN Client の管理」を実行します。
これでLinux上のUT-VPN クライアントも簡単に管理できます。
まずはLANカードを作って、それから新規接続設定を作成します。
と、思って「新しいVPN接続設定の作成」を押下し、仮想LANカードがまだないので作ろうとすると、仮想LANカードはリモートからは作成できないと怒られます。
しかし、クライアント接続マネージャの下側の仮想LANカード一覧のペインから、右クリックで仮想LANカードは作成できるようです。
ただし、一応コマンドで仮想LANカードを作成する方法を下記に書いておきます。
# utvpncmd
utvpncmd コマンド - SoftEther UT-VPN コマンドライン管理ユーティリティ
SoftEther UT-VPN コマンドライン管理ユーティリティ (utvpncmd コマンド)
Version 1.01 Build 7101 (Japanese)
Compiled 2010/06/27 18:40:28 by yagi at pc25
Copyright (C) 2004-2010 SoftEther Corporation.
Copyright (C) 2004-2010 University of Tsukuba, Japan.
Copyright (C) 2003-2010 Daiyuu Nobori.
All Rights Reserved.
utvpncmd プログラムを使って以下のことができます。
1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)
1 - 3 を選択: 2
接続先の VPN Client が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
何も入力せずに Enter を押すと、localhost (このコンピュータ) に接続します。
なお、このコマンドでは SoftEther UT-VPN Client を管理できますが、PacketiX VPN Client は管理できませんのでご注意ください。
接続先のホスト名または IP アドレス:
VPN Client "localhost" に接続しました。
VPN Client>help
下記の 65 個のコマンドが使用できます:
About - バージョン情報の表示
AccountAnonymousSet - 接続設定のユーザー認証の種類を匿名認証に設定
AccountCertGet - 接続設定に用いるクライアント証明書の取得
AccountCertSet - 接続設定のユーザー認証の種類をクライアント証明書認証に設定
AccountCompressDisable - 接続設定の通信時のデータ圧縮の無効化
AccountCompressEnable - 接続設定の通信時のデータ圧縮の有効化
AccountConnect - 接続設定を使用して VPN Server へ接続を開始
AccountCreate - 新しい接続設定の作成
AccountDelete - 接続設定の削除
AccountDetailSet - 接続設定の高度な通信設定の設定
AccountDisconnect - 接続中の接続設定の切断
AccountEncryptDisable - 接続設定の通信時の暗号化の無効化
AccountEncryptEnable - 接続設定の通信時の暗号化の有効化
AccountExport - 接続設定のエクスポート
AccountGet - 接続設定の設定の取得
AccountImport - 接続設定のインポート
AccountList - 接続設定一覧の取得
AccountNicSet - 接続設定で使用する仮想 LAN カードの設定
AccountPasswordSet - 接続設定のユーザー認証の種類をパスワード認証に設定
AccountProxyHttp - 接続設定の接続方法を HTTP プロキシサーバー経由接続に設定
AccountProxyNone - 接続設定の接続方法を直接 TCP/IP 接続に設定
AccountProxySocks - 接続設定の接続方法を SOCKS プロキシサーバー経由接続に設定
AccountRename - 接続設定の名前の変更
AccountRetrySet - 接続設定の接続失敗または切断時の再試行回数と間隔の設定
AccountSecureCertSet - 接続設定のユーザー認証の種類をスマートカード認証に設定
AccountServerCertDelete - 接続設定のサーバー固有証明書の削除
AccountServerCertDisable - 接続設定のサーバー証明書の検証オプションの無効化
AccountServerCertEnable - 接続設定のサーバー証明書の検証オプションの有効化
AccountServerCertGet - 接続設定のサーバー固有証明書の取得
AccountServerCertSet - 接続設定のサーバー固有証明書の設定
AccountSet - 接続設定の接続先の設定
AccountStartupRemove - 接続設定のスタートアップ接続を解除
AccountStartupSet - 接続設定をスタートアップ接続に設定
AccountStatusGet - 接続設定の現在の状態の取得
AccountStatusHide - VPN Server への接続中に接続状況やエラー画面を表示しないよ
うに設定
AccountStatusShow - VPN Server への接続中に接続状況やエラー画面を表示するよう
に設定
AccountUsernameSet - 接続設定の接続に使用するユーザー名の設定
CertAdd - 信頼する証明機関の証明書の追加
CertDelete - 信頼する証明機関の証明書の削除
CertGet - 信頼する証明機関の証明書の取得
CertList - 信頼する証明機関の証明書一覧の取得
Check - SoftEther UT-VPN の動作が可能かどうかチェックする
KeepDisable - インターネット接続の維持機能の無効化
KeepEnable - インターネット接続の維持機能の有効化
KeepGet - インターネット接続の維持機能の取得
KeepSet - インターネット接続の維持機能の設定
MakeCert - 新しい X.509 証明書と秘密鍵の作成
NicCreate - 新規仮想 LAN カードの作成
NicDelete - 仮想 LAN カードの削除
NicDisable - 仮想 LAN カードの無効化
NicEnable - 仮想 LAN カードの有効化
NicGetSetting - 仮想 LAN カードの設定の取得
NicList - 仮想 LAN カード一覧の取得
NicSetSetting - 仮想 LAN カードの設定の変更
NicUpgrade - 仮想 LAN カードのデバイスドライバのアップグレード
PasswordGet - VPN Client サービスに接続するためのパスワードの設定の取得
PasswordSet - VPN Client サービスに接続するためのパスワードの設定
RemoteDisable - VPN Client サービスのリモート管理の禁止
RemoteEnable - VPN Client サービスのリモート管理の許可
SecureGet - 使用するスマートカードの種類の ID の取得
SecureList - 使用できるスマートカードの種類の一覧の取得
SecureSelect - 使用するスマートカードの種類の選択
TrafficClient - 通信スループット測定ツールクライアントの実行
TrafficServer - 通信スループット測定ツールサーバーの実行
VersionGet - VPN Client サービスのバージョン情報の取得
それぞれのコマンドの使用方法については、"コマンド名 /?" と入力するとヘルプが表示されます。
コマンドは正常に終了しました。
VPN Client>NicCreate
NicCreate コマンド - 新規仮想 LAN カードの作成
仮想 LAN カードの名前: utvpnpublic
コマンドは正常に終了しました。
VPN Client>exit