プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

リモートアクセスVPNの設定 (1/4) - SoftEther VPN Server のインストール

外部から自宅内のLANにアクセスする必要が生じたので、VPNを構成することにしました。今回構成するVPNの条件は、自宅のルータに穴を開けないで実現するのが前提です。

 

以前、同じ目的のものをOpenVPNで実現していたのですが、今回いろいろと調べてみると、SoftEther VPNVPN Azure を使えば簡単にこれが実現できることがわかりました。そこで、作業時のメモをまとめておきます。
 

リモートアクセスVPNの設定 (1/4) - SoftEther VPN Server のインストール← ここ

リモートアクセスVPNの設定 (2/4) - NICの追加

リモートアクセス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のインストール

下記の資料などにインストールの詳細が載っていたので、これらを参考にして行いました。重複する部分も多いですが、自分がやった手順をまとめておきます。

 

(参考)

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の追加』を行います。