SoftEtherのVPN

Openvpnがんばってやろうとしたけど... AWSはサーバー側の穴にうまくサービスが待機してくれないんだよねぇ... iptablesやufwもいまいち、AWSコンソールの中では機能してくれない... でも SoftEtherっていうVPNアプリがあるみたい。openvpnに比べるとめっちゃ簡単。筑波大でやってるプロジェクトみたいだよ。ありがたいねぇ すっごく立派なマニュアルあるのだけど、いろいろとそのままじゃ行ってくれないので備忘。基本的にはQiitaさんの情報

make gcc sysv-rc-conf nmap を install していないならInstall
$ sudo apt-get install make gcc sysv-rc-conf nmap
SoftEherのパッケージをwgetしてmake
$ sudo su -
# cd
# wget http://jp.softether-download.com/files/softether/v4.20-9608-rtm-2016.04.17-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.20-9608-rtm-2016.04.17-linux-x64-64bit.tar.gz
# tar -zxvf ./softether-vpnserver-v4.20-9608-rtm-2016.04.17-linux-x64-64bit.tar.gz
# cd ./vpnserver
# make
ライセンスの承認を聞いてくる 1 を三連打。/usr/local へsudoで移動して、オーナー・権限変更
# cd ../
# mv ./vpnserver /usr/local/
# cd /usr/local/
# chmod 600 ./vpnserver/*
# chmod 700 ./vpnserver/vpncmd
# chmod 700 ./vpnserver/vpnserver
テスト実施
$ ./vpnserver/vpncmd
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定) を選択
VPN Tools> check
6つの pass が並べばOK
VPN Tools> exit
お次は /etc/init.d/ に vpnserver を作成
$ cd /etc/init.d
$ vi ./vpnserver
で、以下を書き込んで 保存
#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
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
権限変更
# chmod 755 /etc/init.d/vpnserver
vpnserverのRunレベルを設定。マニュアルだと、chkconfig --add vpnserver で起動テストするとなっているが、ubuntu14.04では、 /sbin/chkconfig: No such file or directory となり、うごかない。そのため、
# sysv-rc-conf
で vpnserverの 2~5 に X (Space などで)いれて q で出る。いよいよ起動なんだけど
sudo /etc/init.d/vpnserver start
とすると、cannot touch ‘/var/lock/subsys/vpnserver’: No such file or directory となった。他のなにかで、subsys が できてたら良いみたいだけど。まっさらなインスタンスに構築したらたぶん出る。なので、
# mkdir /var/lock/subsys
とすると、エラーがでなくなった。なんやら rootからでるのには、exit いっぱい連打したw

AWSでは、重要なポート開放確認
$ nmap localhost
なになに・・・
PORT     STATE SERVICE
22/tcp   open  ssh
443/tcp  open  https
992/tcp  open  telnets
5555/tcp open  freeciv
よーわからんくみあわせやな。。。 あとからクライアントでやってみたけど 5555あたりを AWSのセキュリティで開放しといたらいいみたい。

443番は、apacheのsslとぶつかってしまうので、
VPN Server>ListenerDelete 443
で消したほうがよいかもしれない。 初期設定しないと殺すみたいな脅迫文がマニュアルにあるけど、結構くろうするw
sudo /usr/local/vpnserver/vpncmd
とすると、vpnserverのコマンドコンソールが起動はじめて、1.VPN Server または VPN Bridge の管理モードを選択。→ Hostname of IP Address of Destination: については localhost と入れるのがよいと思う。次は、Hub選択なので、そのままエンター
VPN Server> ServerPasswordSet
とすると、パスワード聞いてくる(小文字だけでも通る)。これでとりあえずサーバーの土台が完成。ふぅー コンソールでるには
VPN Server> exit
でOK

お次は、Hub (Default)をパスワード認証でつくってみますか?

vpnserverコンソールにはいる
$ sudo /usr/local/vpnserver/vpncmd
1.VPN Server または VPN Bridge の管理モード を選択 → Hostname of IP Address of Destination: (初回はパブリックIPを入力かな? その後は localhostでいけるかな) → Specify Virtual Hub Name:Default と入力していく
まずは、グループ、ユーザーを登録していく
VPN Server/Default>groupcreate
Group Name: グループ名
Group Full Name: グループフルネーム(説明の一種 空欄でもいいかな)
Group Description: グループ説明(空欄でもいいかな)
The command completed successfully. と出たらOK。おつきはユーザー
VPN Server/Default>usercreate
User Name: ユーザー名
Assigned Group Name: (上記でつくった)グループ名
User Full Name: ユーザーフルネーム(説明の一種。空欄でもいいかな)
User Description: ユーザー説明(空欄でもいいかな)
The command completed successfully. となればOK。このUserのpasswordを設定
VPN Server/Default> UserPasswordSet
でパスワード入れる。各User は UserName と このパスワードでVPNに入る。

続いて、
VPN Server/Default> SecureNatEnable
としとくみたい。続いて、vpnserverを有効にする。コマンド一覧は ココなので、詳しくはここをがんばって読むとかかな。。。

このサーバーを有効化する
VPN Server/Default> HUB
VPN Server>IPsecEnable
Enable L2TP over IPsec Server Function (yes / no): yes
Enable Raw L2TP Server Function (yes / no): no
Enable EtherIP / L2TPv3 over IPsec Server Function (yes / no): no
Pre Shared Key for IPsec (Recommended: 9 letters at maximum): ********
(このKeyがどこで必要になるかいまだに不明 9文字以下推奨 アンドロイドだと9文字までじゃないとだめみたい)
Default Virtual HUB in a case of omitting the HUB on the Username: Default  (Hub名が省略されたときのグループ名)
The command completed successfully. と出たらOK。として、めでたく VPN接続できるようになった(はず。。。)
VPN Server>exit
でコンソールを出る

VPN Clientを取得して、PCから、VPN接続

ココから クライアントダウンロード
もしくは、windowsのVPN設定からやる方法: ココ
Androidなら、ココ
iphoneなら、ココ