Raspberry PiにSoftether VPNサーバーをセットする


Raspberry PiにRASPBIAN STRETCH LITE OSをセットし、Softether VPNサーバーをセットするまでを簡潔に説明無しでメモとして残す。

コマンドを全て順番どおりにターミナルにコピーペーストすれば40分弱で全て完了するように記載できたら良いと思う。コマンドの箇所を別のテキストファイルにコピーし、そこからターミナルへペーストして作業すれば、ダウンロードにかかる時間や、Raspberry Piのパワーにもよるが40分程度で完了できると思われる。

Raspberry Pi公式ページから、
RASPBIAN STRETCH LITE
Minimal image based on Debian Stretch
をダウンロードする。

Etcherなどを使ってダウンロードしたRASPBIAN STRETCH LITEの.imgファイルを用意したSDカードに書き込む。

Raspberry PiにSDカードを挿しこみ、電源投入し、起動させる。
有線LANでRaspberry Piを接続し、他のネットワーク接続機器からRaspberry PiのIPアドレスを探す。
PCからsshで接続する。ただし、これは可能であればであって、デフォルトでsshがenableになっている場合は、ssh接続が可能だが、そうでない場合は、SDカードにsshをenableにする書き込みを事前にしておく必要がある。

PCターミナル
$ sudo ssh pi@192.168.0.4

など、LAN内のローカルアドレスは、Raspberry Piに割りふられたIPに適時書き換えてほしい。
入力すると、sudoの為、rootアカウントのパスワードが求められる。

その後、Raspberry Piのpiユーザーのパスワードが求められる。つまりこれは、初期値でユーザーpi パスワードraspberryになっている。

パスワードが通ると、プロンプトが

PCターミナル
pi@raspberrypi:~ $

となる。

ターミナル用日本語フォント

日本語フォントをインストールしておく。ただし、これはロケールを日本語にする場合に、文字化けがひどく色々な処理が非常に確認しづらくなるためであって、日本語に特にこだわりがなければ必要があるわけではない。

pi@raspberrypi
 $ sudo apt-get install fonts-ipafont fonts-ipaexfont 
pi@raspberrypi
 $ sudo raspi-config 

無線接続をしない場合は、以上の箇所の設定が済めば、一度RASPBIANを再起動する。

pi@raspberrypi
$ sudo reboot

rebootされRASPBIANが起動したら(モニターレスでは確認できないが、なんとなく起動された頃合いをみはからって)、

PCターミナル
 $ sudo ssh pi@192.168.0.4

などとして、Raspberry Piに接続を試みて無事接続されたら以下のコマンドで、後ほどダウンロードするSoftetherのMakeに使うbuild-essentialと、ローカルブリッジをつくるためのbridge-utilsをインストールする。

pi@raspberrypi
$ sudo apt-get install build-essential
$ sudo apt-get install bridge-utils

interfaces編集

/etc/network/interfacesを編集する。Nanoを使う。
ただし、これはローカルブリッジ接続を前提としている。ローカルブリッジしなくても、VPNとして機能させることはできるようだが。

pi@raspberrypi
$ cd /etc/network/
$ sudo nano ./interfaces
/etc/network/interfaces
# loopback
auto lo
iface lo inet loopback

# Ethernet
auto eth0
iface eth0 inet manual

# Bridge
auto br0
iface br0 inet dhcp
bridge_ports eth0

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

nanoで以上をコピーしてペースト。そして、interfacesを上書き保存する。

Softetherダウンロード

RASPBIANにsshで接続しているPCのブラウザでSoftEther VPNダウンロードページからたどって、
OS: Linux, CPU: ARM EABI (32bit)のビルド版のダウンロードアドレスをコピーする。ターミナル内にペーストするのは、ssh接続しているRASPBIANのコマンドプロンプトでwgetコマンドの後にCtrl+Shift+vでペーストされる。
下記では、リリース日: 2017-12-21のSoftEther VPN Server (Ver 4.24, Build 9652, beta)をダウンロードし、Makeしている。

$ wget http://jp.softether-download.com/files/softether/v4.24-9652-beta-2017.12.21-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.24-9652-beta-2017.12.21-linux-arm_eabi-32bit.tar.gz

make

ダウンロードしたSoftetherのファイルをtarで解凍し、解凍してできたvpnserverを、/usr/local/へ移動し、makeする。

pi@raspberrypi
$ tar -zxvf softether-vpnserver-v4.24-9652-beta-2017.12.21-linux-arm_eabi-32bit.tar.gz

$ rm -v softether-vpnserver-v4.24-9652-beta-2017.12.21-linux-arm_eabi-32bit.tar.gz

$ sudo mv vpnserver /usr/local/
$ cd /usr/local/vpnserver
$ make
pi@raspberrypi
cd /usr/local/vpnserver
chmod 600 *
chmod 700 vpncmd
chmod 700 vpnserver
pi@raspberrypi
$ cd /etc/init.d/
$ sudo nano ./vpnserver

起動スクリプト

以下のスクリプトをコピーして、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 RTM
# Description:              Start vpnserver daemon SoftEther VPN Server
### END INIT INFO

DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver

# tun/tapモジュールのロード
sudo modprobe tun

. /lib/lsb/init-functions
test -x $DAEMON || exit 0

case "$1" in
start)
sleep 3
log_daemon_msg "Starting SoftEther VPN Server" "vpnserver"
$DAEMON start >/dev/null 2>&1
touch $LOCK
log_end_msg 0
sleep 3

# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;

stop)
log_daemon_msg "Stopping SoftEther VPN Server" "vpnserver"
$DAEMON stop >/dev/null 2>&1
rm $LOCK
log_end_msg 0
sleep 2
;;

restart)
$DAEMON stop
sleep 2

$DAEMON start
sleep 5
# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;

status)
    if [ -e $LOCK ]
    then
        echo "vpnserver is running."
    else
        echo "vpnserver is not running."
    fi
;;
*)

echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0

実行権限を与えてデーモンとして登録。

pi@raspberrypi
sudo chmod +x /etc/init.d/vpnserver
sudo update-rc.d vpnserver defaults
sudo reboot

ここまでで、RASPBIANでSoftether VPNサーバーが起動できるようになりました。

Raspberry Piで使えそうなプロミスキャスのusb wifi cardを探しています。