豚吐露@wiki

install

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

UT-VPN導入

環境
Ubuntu 10.04LTS Server x86-32bit版
Ubuntu 10.10 amd64版


  • Download
取得はココから。
http://utvpn.tsukuba.ac.jp/ja/download/download.aspx
※メアド入れてdownloadへ進んでください。


とりあえずlinux用のをいただくことにする。
/files/utvpn/
└v1.01-7101-public-2010.06.27
 └Source Code (Win32 and Unix)
  └utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz

$ 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"
正直、pathに『(』『)』やら半角スペースやらやめていただきたい...(´・ω・`)

  • 解凍
tarで解凍。
$ tar zxvf utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz
$ cd utvpn-unix-v101-7101-public/

  • library確認
で中にあるinstallマニュアルを読むと、いっぱいライブラリが必要な事が分かる。
表記の仕方から静的ライブラリをご所望のようなので、必要なライブラリがあるか調べてみる。
$ locate libm.a
$ locate libpthread.a
$ locate libcrypto.a
$ locate libssl.a
$ locate libiconv.a
$ locate libreadline.a
$ locate libncurses.a
上2つ以外全部無かった...orz
と言う訳で、片っ端からライブラリ突っ込まんといけんらしい。あ、buildするときに静的ライブラリ出力のオプション忘れんようにせんとな。

  • library導入(自動)
apt-getで必要なlibraryを取得する。
一応、pkg名変わってたらどうにもならんので、pkgの検索コマンドと導入コマンドを記載。

【OpenSSL】
検索。
$ apt-cache search libssl
導入。
$ sudo apt-get install libssl-dev
【iconv】
検索。
$ apt-cache search libiconv
導入。
何かみつからんので、この子は手動の方が良いかな?
【readline】
検索。
$ apt-cache search libreadline
導入。
$ sudo apt-get install libreadline-dev
【ncurses】
検索。
$ apt-cache search libncurses
導入。
$ sudo apt-get install libncurses5-dev

  • library導入(手動)
自動でダメだったら手動って流れで良いと思う。

【OpenSSL 32bit】
言わずと知れたOpenSSLですね。
OpenSSLのlibcrypto.aとlibssl.aが必要なので、まずsrcの取得。
ver指定ないんで、とりあえず現時点で一番新しい1.0.0を持って来てみよう。
$ wget http://www.openssl.org/source/openssl-1.0.0c.tar.gz
で、解凍
$ tar zxvf openssl-1.0.0c.tar.gz
$ cd openssl-1.0.0c/
静的ライブラリ作成のオプション『shared』を付けてmake。
$ ./config shared
$ make
$ make test
$ sudo paco -D make install
4行目のコマンドはpaco使って管理してるんでそうなってるだけで、paco導入してないって無い人は普通に
$ sudo make install
ってして下さい。以後、色々pacoが出てくるカモ。
んで、一連のコマンドでエラー出なければinstall完了。
$ locate libssl.a
/usr/lib/libssl.a
$ locate libcrypto.a
/usr/lib/libcrypto.a
こんな感じに出たらok。
※何かopenssl導入後のlocateも見つからんことあったんで、そん時は『sudo updatedb』やるかfind使ってくださいな。

【OpenSSL 64bit】
64bit環境でOpenSSLのbuildを32bit環境と同じようにしたら...
/usr/local/ssl/lib/libssl.a
/usr/local/ssl/lib/libcrypto.a
に入った...いただけない...当然、UT-VPNのbuildでlibssl.aとlibcrypto.aが見つからんって怒られるわな。
仕方が無いので64bit環境の場合はlibのpathを指定してmakefileを作ってやることにする。
基本32bit環境と変わらんのではしょりますと...
$ wget http://www.openssl.org/source/openssl-1.0.0c.tar.gz

$ tar zxvf openssl-1.0.0c.tar.gz
$ cd openssl-1.0.0c/

$ ./config --prefix=/usr/local shared
$ make
$ make test
$ sudo paco -D make install

$ locate libssl.a
$ locate libcrypto.a
で確認できたらokと、思ったら...その後UT-VPNの導入までは行けたんじゃが、実行させると『segmentation fault』って...Σ(´Д`;)
64bit環境では1.0.0が芳しくないんじゃろうか?
かなりハマったんじゃが、結局解決方法は...
$ sudo apt-get install libssl-dev
aptで取得。(ノ∀`)
コレでUT-VPNをrebuildしたらちゃんと動くようになった。w
64bit環境でダメっちゅぅことは無いんじゃろうが...暇できたらまた試してみますか。(´Д`)

【iconv】
文字コードの相互変換行ってくれるライブラリらしい。
こいつのlibiconv.aをご所望です。
と言う訳で、早速取得。
$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
解凍。
$ tar zxvf libiconv-1.13.1.tar.gz
$ cd libiconv-1.13.1/
んで、make。静的ライブラリが必要な場合は『--enable-static=yes』ってしてやらんといけんらしい。
$ ./configure --enable-static=yes
$ make
$ sudo paco -D make install
んで、検索してみると...
$ locate libiconv.a
出ない...
き、きっとdbが更新されてないだけだ...(゜∀゜;)
$ sudo updatedb
$ locate libiconv.a
/usr/local/lib/libiconv.a
出た...危ない危ない。w

【readline】
bashとかでtab補完ができたり、↑↓キーで履歴見れたりするのはこの子のおかげらしい。
コイツをmakeして『libreadline.a』を作らなければなりません。
取得。
$ wget ftp://ftp.cwru.edu/pub/bash/readline-6.1.tar.gz
解凍。
$ tar zxvf readline-6.1.tar.gz
$ cd readline-6.1/ 
make install。readlineはデフォでstatic library作ってくれるみたい。
$ ./configure
$ make
$ sudo paco -D make install
で、確認。
$ sudo updatedb
$ locate libreadline.a
/usr/local/lib/libreadline.a
とりあえず、入ったが、なんかpatch提供されてるっぽぃんよなぁ...
ftp://ftp.cwru.edu/pub/bash/readline-6.1-patches
コレって自分でsourceいじって再makeしろってことなんよなぁ?

って訳で、修正箇所一覧。
◆readline61-001
complete.c
before after
2139
2140
2141
2142
if (filename_len == 0)
{
  if (_rl_match_hidden_files == 0 && HIDDEN_FILE (entry->d_name))
    continue;
if (filename_len == 0)
{
  if (_rl_match_hidden_files == 0 && HIDDEN_FILE (convfn))
    continue;
2220
2221
2222
2223
2224
    }

  strcpy (temp + dirlen, entry->d_name);
}
else
    }

  strcpy (temp + dirlen, convfn);
}
else
patchlevel
before after
1
2
3
# Do not edit -- exists only for use by patch

0
# Do not edit -- exists only for use by patch

1
◆readline61-002
readline.h
before after
40
41
42
43
44
45
/* Hex-encoded Readline version number. */
#define RL_READLINE_VERSION 0x0600 /* Readline 6.0 */
#define RL_VERSION_MAJOR 6
#define RL_VERSION_MINOR 0

/* Readline data structures. */
/* Hex-encoded Readline version number. */
#define RL_READLINE_VERSION 0x0601 /* Readline 6.1 */
#define RL_VERSION_MAJOR 6
#define RL_VERSION_MINOR 1

/* Readline data structures. */
patchlevel
before after
1
2
3
# Do not edit -- exists only for use by patch

1
# Do not edit -- exists only for use by patch

2
patch適応したら、もっかいmake。
$ make
$ sudo paco -D make install
ちゃんと入ってたらokです。

【ncurses】
最後。テキストユーザインターフェースを提供するためのライブラリらしい。
BSD Curses(カーシス)の代替え品なんですとよ。
んじゃ、libncurses.a作るために、まずは取得。
$ wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.7.tar.gz
解凍。
$ tar zxvf ncurses-5.7.tar.gz
$ cd ncurses-5.7/
make install。こいつもデフォで静的ライブラリ作ってくれるみたい。
$ ./configure
$ make
$ sudo paco -D make install
ちゃんと入ったか確認。
$ sudo updatedb
$ locate libncurses.a
/usr/lib/libncurses.a

と言う訳で無事必要なライブラリが入った訳だ。
/usr/lib/libssl.a
/usr/lib/libcrypto.a
/usr/local/lib/libiconv.a
/usr/local/lib/libreadline.a
/usr/lib/libncurses.a
ここら辺ならpathも通ってるだろうから大丈夫でしょう。

  • build環境
次はBuild Toolが必要とか書いてあるが、gccとgmakeが必要とのことなのでUbuntuなら問題無いと思うが...
一応gcc環境だけはちゃんとしとく。
$ sudo apt-get install build-essential

  • make install
先ほど解凍したUT-VPNのdir『utvpn-unix-v101-7101-public』へ移動。
config実行。
$ ./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

Please select your CPU Bits below:
1: 32-bit
2: 64-bit

Which is the bits of your CPU (1-2):
1

Makefile is generated. Please execute 'make' to build UT-VPN.
対話式らしい。OSとx86かamd64かを選択。
今回はUbuntuの32bit環境なので両方共『1』を選択。
で、make。
$ make
ライブラリが全部入ってたら正常終了するハズ。正常終了したら『output』ってdirができるんですとよ。
中覗いてみたら実行形式のファイルがいくつかありますね。
出来そこないができる可能性もあるので、installする前にこの中の実行ファイルを実行してみて、動くか確かめると良いかもしれません。
$ sudo output/utvpnserver/utvpnserver start
$ sudo output/utvpnserver/utvpnserver stop
$ sudo output/utvpnclient/utvpnclient start
$ sudo output/utvpnclient/utvpnclient stop
で、ちゃんと動いてたらinstall。
※ちなみに、できそこないを実行するとセグメンテーションフォルトで落ちたりする。
$ sudo paco -D make install
ココでもpaco使います。paco使って無い人は、
$ sudo make install
ですね。

pacoを使って入ったfileを確認してみる。
$ paco -f utvpn-unix-v101-7101-public
utvpn-unix-v101-7101-public:
/usr/bin/utvpnclient
/usr/bin/utvpncmd
/usr/bin/utvpnserver
/usr/utvpnclient/hamcore.utvpn
/usr/utvpnclient/utvpnclient
/usr/utvpncmd/hamcore.utvpn
/usr/utvpncmd/utvpncmd
/usr/utvpnserver/hamcore.utvpn
/usr/utvpnserver/utvpnserver

  • utvpnserver起動設定
コレでクライアントもサーバーも無事導入完了って事ですが...
起動スクリプトとか突っ込んでくれんらしいので、server動かしたい場合は、自分で起動スクリプト書かなきゃなりません。(´・ω・`)
色々参考にしながら書いてみる...こんな感じかな?
$ vi utvpnserver
  1. #!/bin/sh
  2. # chkconfig: 2345 99 01
  3. # description: UT-VPN Server 1.01-7101
  4.  
  5. DAEMON=/usr/bin/utvpnserver
  6. LOCK=/var/lock/utvpnserver
  7.  
  8. test -x $DAEMON || exit 0
  9.  
  10. case "$1" in
  11. start)
  12. $DAEMON start
  13. touch $LOCK
  14. ;;
  15. stop)
  16. $DAEMON stop
  17. rm $LOCK
  18. ;;
  19. restart)
  20. $DAEMON stop
  21. sleep 5
  22. $DAEMON start
  23. ;;
  24. *)
  25. echo "Usage: $0 {start|stop|restart}"
  26. esac
  27. }
  28.  
できたら、権限と所有者変更。rootじゃないと動かんからrootしかなんも出来んようにして、init.dへ放り込む。
$ chmod 744 vpnserver
$ sudo chown root:root vpnserver
$ sudo cp utvpnserver /etc/init.d/
次は起動スクリプトの管理。
手動でやるのはせつないので、sysv-rc-confを使う。
$ sudo sysv-rc-conf
起動させ、ページを移動させると『utvpnserver』の項目を見つけられる。

とりあえず、ランレベル2~5にチェック付けて終了。
lsで順番に見ていってみると、
$ ls /etc/rc0.d/*utvpn*
ls: cannot access /etc/rc0.d/*utvpn*: No such file or directory
$ ls /etc/rc1.d/*utvpn*
ls: cannot access /etc/rc1.d/*utvpn*: No such file or directory
$ ls /etc/rc2.d/*utvpn*
/etc/rc2.d/S20utvpnserver@
$ ls /etc/rc3.d/*utvpn*
/etc/rc3.d/S20utvpnserver@
$ ls /etc/rc4.d/*utvpn*
/etc/rc4.d/S20utvpnserver@
$ ls /etc/rc5.d/*utvpn*
/etc/rc5.d/S20utvpnserver@
$ ls /etc/rc6.d/*utvpn*
ls: cannot access /etc/rc6.d/*utvpn*: No such file or directory
2~5にSymbolicLinkが作成されていることがわかる。
プロセス確認してみるとちゃんと動いてるっぽぃ。
$ ps -aux | grep utvpn
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
root 749 0.0 0.1 4884 1036 ? S<s 13:20 0:00 /usr/utvpnserver/utvpnserver execsvc
root 750 0.5 0.9 16968 9740 ? S<l 13:20 0:00 /usr/utvpnserver/utvpnserver execsvc

UT-VPNの導入って結構手間ですねぇ...(´・ω・`)



更新日: 2011年02月10日 (木) 14時03分14秒

名前:
コメント:

すべてのコメントを見る
添付ファイル
記事メニュー
ウィキ募集バナー