3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

Linux(CentOS5)にUT-VPNを入れてみた

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

-------------------------------------------------------------

SoftEther UT-VPN for Unix

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

SoftEther UT-VPN Server Service Started.

後は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

SoftEther UT-VPN Client Service Started.

クライアント側もここから設定が必要となるわけですが、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