飽き性
以前にRaspberry PiをL2TP/IPSecなサーバに仕立てて使っていたが、なんかつまらない。安定している。たまには障害の一つでも起こってくれれば面白いのに。
そんなつまらない毎日を過ごしていたところ、SoftEther VPNなるソフトがあるとの話を聞きつけ入れてみることにしました。
準備
とりあえずRaspbianをddして、X Window関連のパッケージ消してaptでパッケージを更新。
ネットワーク設定
普通にeth0をVPNの口にすると、VPNでつないだ時にRaspberry Piへつなげなかった。理由は知らないけどそんなものらしい。
仮想ブリッジ作ってeth0とSoftEtherのtapデバイスをつなげば良いみたいなのでブリッジを作る。
余談。SoftEtherにtap作らせるとSoftEhterのプロセスが上がらなければtapデバイスが作られず、ブリッジへの接続とかめんどい。でも事前にip tuntap add…でtapデバイス作ってSoftEtherのローカルブリッジに指定してみたがうまく動かんかった。作り方のお作法でもあるのだろうか。
閑話休題。まずはbridge-utilsを入れる。
# apt-get install bridge-utils
続いて/etc/network/interfacesを編集。
auto lo br0
iface lo inet loopback
iface br0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
bridge_ports all
SoftEther VPNのビルド
ダウンロードして展開してmakeするだけ。特にパッケージを追加しなくてもビルドできた。終わるとvpnserverというディレクトリができる。
SoftEther VPNのインストール
ビルドしてできたvpnserverディレクトリをsoftetherという名前に変更し、/usr/local/appに移動する。ついでにアクセス権も変える。
# mkdir /usr/local/app
# mv vpnserver softether
# mv softether /usr/local/app
# cd /usr/local/app/softether
# chmod 600 *
# chmod u+x vpn*
まあ、このへんは好みで。
つづいて、起動時にプロセスを上げるため起動スクリプトを作る。以下内容を/etc/init.d/vpnserverに作る。ロックファイルぐらい作ったほうがいいのかな。。。
#! /bin/sh
### BEGIN INIT INFO
# Provides: vpnserver
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: SoftEther VPN 2.0
# Description: Start SoftEther VPN service.
### END INIT INFO
DAEMON=/usr/local/app/softether/vpnserver
[ -x "$DAEMON" ] || exit 0
case "$1" in
start)
$DAEMON start
sleep 10
tapdev=`/sbin/ip tuntap | awk -F ":" '{print $1}'`
/sbin/brctl addif br0 $tapdev
;;
stop)
$DAEMON stop
;;
esac
:
実行権限つけて登録してやる。
# chmod +x /etc/init.d/vpnserver
# update-rc.d vpnserver defaults
ここらで再起動してブリッジが作られることとSoftEtherが自動で上がることを確認する。
SoftEther VPNの設定
SoftEther VPN Server Manager for Windowsを利用して設定します。Windows?無いな。でもWineで動くので問題はない。
とりあえず起動します。起動したら新しい接続設定を押下します。
それっぽいことを入力してOKを押下します。管理パスワードは空で大丈夫。
追加した接続先へ接続すると管理パスワードを聞いてくるので好きなパスワードを入れる。
ウィザードが表示されるので、[リモートアクセスVPNサーバー]を有効に。
仮想HUB名を指定。
DDNSを設定。
L2TPを有効にし、事前共有キーを指定する。
VPN Azureクラウドは使わない。アジュールでクラウドっていうとWindows Azureを連想してしまうが無関係。ってかこの機能、企業の管理者は嫌だろうな。
ユーザーを追加する。追加の仕方は画面を見りゃわかるので割愛。ローカルブリッジはとりあえずeth0を選ぶ。
VPNサーバー管理マネージャが表示されたら、ローカルブリッジ設定を押下してローカルブリッジ設定画面を表示させる。画面が表示されたら既存のローカルブリッジをすべて削除する。
引き続き、仮想HUBがVPN、新しいtapデバイス名をvpnとしてローカルブリッジを追加する。
tapデバイス”tap_vpn”が作られたことを確認し、仮想ブリッジbr0へ追加する。
# ip tuntap
tap_vpn: tap
# brctl addif br0 tap_vpn
# brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.00ac214c5656 no eth0
tap_vpn
動作確認
Android(ISW11K)で接続できることを確認。つなぎ方はマニュアルに記載。
感想
インストールも簡単だし、まあ便利なのかな。単に携帯から繋ぎたいだけならopenswanとxl2tpd使ったほうがパッケージで入るぶん管理・保守が楽かも。
ただSoftEtherは能書きを読むとすごく高機能なソフトみたいなので、その高機能が必要な人にとってはインストールが楽ってのはありがたいのでしょう。