外部から自宅内のLANにアクセスする必要が生じたので、VPNを構成することにしました。今回構成するVPNの条件は、自宅のルータに穴を開けないで実現するのが前提です。
以前、同じ目的のものをOpenVPNで実現していたのですが、今回いろいろと調べてみると、SoftEther VPN の VPN Azure を使えば簡単にこれが実現できることがわかりました。そこで、作業時のメモをまとめておきます。
リモートアクセスVPNの設定 (1/4) - SoftEther VPN Server のインストール← ここ
リモートアクセスVPNの設定 (3/4) - SoftEther VPN Server の設定
リモートアクセスVPNの設定 (4/4) - VPNクライアントの設定
サーバーのセットアップ
サーバーは、Ubuntu 12.04.3 Server (64bit)にして、VMware ESXi 4.1 上で動作させました。
OSのインストールは特に問題ないと思いますので、省略します。なお、インストール時には、Open SSH Server のみを選択しておきました。
SoftEther VPN Serverのインストール
下記の資料などにインストールの詳細が載っていたので、これらを参考にして行いました。重複する部分も多いですが、自分がやった手順をまとめておきます。
(参考)
Ubuntu ServerにSoftEther VPN Serverを入れてみる
プロバイダにVPNの口をふさがれたっぽいので、SSL-VPNを導入する
1. 追加パッケージのインストール
前述のドキュメントを参考にして、必要となるパッケージをインストールしておきます。
mor@t105vpn:~$ sudo apt-get install gcc make binutils
上記以外に必要とされている各種ライブラリは既にインストール済みでした。また、chkconfigはサービス登録に使わないので入れませんでした。
2. ダウンロード
ダウンロードページから最新版をダウンロードします(作業時点で、SoftEther VPN Server v2.00)。
mor@t105vpn:~$ mor@t105vpn:~$ wget http://jp.softether-download.com/files/softether/v2.00-9387-rtm-2013.09.16-tree/Linux/SoftEther%20VPN%20Server/64bit%20-%20Intel%20x64%20or%20AMD64/softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x64-64bit.tar.gz --2013-11-25 15:15:57-- http://jp.softether-download.com/files/softether/v2.00-9387-rtm-2013.09.16-tree/Linux/SoftEther%20VPN%20Server/64bit%20-%20Intel%20x64%20or%20AMD64/softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x64-64bit.tar.gz jp.softether-download.com (jp.softether-download.com) をDNSに問いあわせています... 130.158.75.49 jp.softether-download.com (jp.softether-download.com)|130.158.75.49|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 5331678 (5.1M) [application/x-gzip] `softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x64-64bit.tar.gz' に保存中 100%[==========================================================================================================================================>] 5,331,678 1.81M/s 時間 2.8s 2013-11-25 15:16:00 (1.81 MB/s) - `softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x64-64bit.tar.gz' へ保存完了 [5331678/5331678] mor@t105vpn:~$
3. 解凍
ダウンロードしたファイルを解凍します。
mor@t105vpn:~$ tar zxvf softether-vpnserver-v2.00-9387-rtm-2013.09.16-linux-x64-64bit.tar.gz
vpnserver ディレクトリができていればOKです。
4. バイナリの作成
vpnserver ディレクトリに移動して、makeを実行します。
mor@t105vpn:~$ cd vpnserver
mor@t105vpn:~$ make
ライセンスに関する確認を求めるメッセージがでてきますので、SoftEther VPNのインストール方法にあるように確認してください。
問題がなければ、実行ファイルが作成されます。
5. VPN Serverの配置
ここまでの作業はユーザーディレクトリで行っていたので、システムのディレクトリに移動します。また合わせて、所有者、パーミッションを修正しておきます。
mor@t105vpn:~$ sudo mv vpnserver /usr/local/vpnserver mor@t105vpn:~$ cd /usr/local mor@t105vpn:/usr/local$ sudo chown -R root:root vpnserver mor@t105vpn:/usr/local$ cd vpnserver mor@t105vpn:/usr/local/vpnserver$ sudo chmod 600 * mor@t105vpn:/usr/local/vpnserver$ sudo chmod 700 vpncmd mor@t105vpn:/usr/local/vpnserver$ sudo chmod 700 vpnserver
6. 起動スクリプト作成
Ubuntuの場合は、/etc/init.dに起動スクリプトを書けばよいので、これを作成します。vpnserverという名前で作成し、内容は下記のとおりです。
mor@t105vpn:/etc/init.d$ cat vpnserver #! /bin/sh ### BEGIN INIT INFO # Provides: vpnserver # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: SoftEther VPN Server # Description: This file start SoftEther VPN Server as daemon. ### END INIT INFO # Author: Junichi MORI # 2013/11/25 # Do NOT "set -e" # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="SoftEther VPN Server" NAME=vpnserver DAEMON=/usr/local/vpnserver/$NAME DAEMON_START_ARGS="start" DAEMON_STOP_ARGS="stop" SCRIPTNAME=/etc/init.d/$NAME # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Define LSB log_* functions. # Depend on lsb-base (>= 3.2-14) to ensure that this file is present # and status_of_proc is working. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # other if daemon could not be started $DAEMON $DAEMON_START_ARGS return "$?" } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # other if daemon could not be stopped $DAEMON $DAEMON_STOP_ARGS return "$?" } case "$1" in start) log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0) log_end_msg 0 ;; *) log_end_msg 1 ;; esac ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0) log_end_msg 0 ;; *) log_end_msg 1 ;; esac ;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0) sleep 3 do_start case "$?" in 0) log_end_msg 0 ;; *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac : mor@t105vpn:/etc/init.d$
これは、/etc/init.d/skeltonを元に、不要な処理を削除し、常にログ出力を有効とするように変更した形になっています。また、SoftEther VPN Serverのドキュメントでは、一種のロックファイルを使っているのですが、Ubuntuだと特に使わないようなので省略しました(問題があるようなら修正します)。なお、ロックファイルについてはこちらが詳しく解説してくれてます。
完成したら、パーミッションを変更しておきます。
sudo chmod 755 vpnserver
7. 起動スクリプト登録
サーバー起動時に、作成したスクリプトを呼び出して自動的にSoftEther VPN Server が起動するようにします。
mor@t105vpn:/etc/init.d$ sudo update-rc.d vpnserver defaults 99 Adding system startup for /etc/init.d/vpnserver ... /etc/rc0.d/K99vpnserver -> ../init.d/vpnserver /etc/rc1.d/K99vpnserver -> ../init.d/vpnserver /etc/rc6.d/K99vpnserver -> ../init.d/vpnserver /etc/rc2.d/S99vpnserver -> ../init.d/vpnserver /etc/rc3.d/S99vpnserver -> ../init.d/vpnserver /etc/rc4.d/S99vpnserver -> ../init.d/vpnserver /etc/rc5.d/S99vpnserver -> ../init.d/vpnserver mor@t105vpn:/etc/init.d$
8. 確認
サーバーを再起動して、スタートアップ画面でvpnserverが起動していることを確認します。とはいえ、表示がすぐに消えてしまうので、
mor@t105vpn:~$ view /var/log/boot.log
として確認します。または、
mor@t105vpn:~$ ps aux | grep vpnserver
のようにしてプロセスが動いていることを確かめればよいと思います。
次は、『NICの追加』を行います。