ガジェット

Raspberry PiとSoftEtherでVPN接続(Raspbian Jessie)

投稿日:2016年4月13日

2年ほど前にもラズパイにSoftEther VPNを使ってVPNサーバーを作りましたが、今回また初代ラズパイを使ってVPNサーバーを作りました。

OS Raspbian Jessie
ラズパイ 初代ModelB

準備

初代なのでいろいろ最初に作業しておきます。

$ sudo apt-get update
$ sudo apt-get upgrade

ファームウエアもアップデートして再起動しておきます。

$ sudo rpi-update
$ sudo reboot

ブリッジユーティリティをインストール

Linuxの残念な仕様としてVPNで接続した場合、接続したマシンの内部にアクセスすることができないとかなんとか。
なので物理NICと仮想NICをブリッジする必要があるようです。

sudo apt-get install bridge-utils

Raspbian Jessieで固定IPを設定している場合、/etc/dhcpcd.confを元に戻しておくかコメントアウトしておきます。

sudo nano /etc/dhcpcd.conf
 
#interface eth0
#static ip_address=192.168.1.11/24
#static routers=192.168.1.1
#static domain_name_servers=192.168.1.1

/etc/network/interfacesを以下のように編集しました。

sudo nano /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual

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

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

auto br0
iface br0 inet static
address 192.168.1.11
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0
bridge_maxwait 10

ネットワークアドレスなどはルータの状態を見れば載っていると思います。
ラズパイのIPアドレスから計算したいという場合は以下のサイトでできます。
ネットワークアドレス計算フォーム

SoftEtherインストール

なお、ここからいちおうrootで作業しました。

$ su -

SoftEtherのサイトからVPNサーバーをダウンロードします。

SoftEtherダウンロードサイト

以下のような感じで選択します。
01

私は今回β版をダウンロードしましたが、安定版の方が安心かと思います。
下記は2016年4月13日現在最新の安定版Ver.4.18(ビルド9570)です。

wget http://jp.softether-download.com/files/softether/v4.18-9570-rtm-2015.07.26-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.18-9570-rtm-2015.07.26-linux-arm_eabi-32bit.tar.gz

解凍します。

tar zxvf softether-vpnserver-v4.18-9570-rtm-2015.07.26-linux-arm_eabi-32bit.tar.gz

ディレクトリvpnserverができるので移動してmakeを実行します。

cd vpnserver
make

同意するかとか動作チェックなどが行われた後、vpnserverディレクトリを/usr/local/へ移動します。

cd ..
mv vpnserver /usr/local/

ディレクトリ/usr/local/vpnserverへ移動して、パーミッションを変更します。

cd /usr/local/vpnserver
chmod 600 *
chmod 700 vpncmd
chmod 700 vpnserver

起動スクリプト作成

ラズパイを起動した時に自動で起動するようにスクリプトを作るのですが、私は今回ここでちょっとつまづきました。
とりあえず参考サイトを元に以下のようにしました。
参考サイト:VPNでiPhoneからラズパイに接続する(うしこlogさん)

(エディタはお好みで)

nano /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 4.18 RTM
# Description:              Start vpnserver daemon SoftEther VPN 4.18 Server
### END INIT INFO
  
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver
  
. /lib/lsb/init-functions
test -x $DAEMON || exit 0
  
case "$1" in
start)
sleep 3
log_daemon_msg "Starting SoftEther VPN 4.18 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 4.18 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

このスクリプトに実行権限を与え、ラズパイ起動時に自動的に起動するようにします。

chmod +x /etc/init.d/vpnserver
chkconfig --add vpnserver

ラズパイを再起動します。

reboot

管理マネージャーの設定

ここからはWindowsでの作業になります。SoftEtherから管理マネージャーをダウンロードして設定していきます。

SoftEther VPN Server Manager for Windows

02

なお詳しい設定方法は参考サイトを見てください^^;
自分が書くよりわかりやすいサイトがたくさんありますので。。
VPNでiPhoneからラズパイに接続する(うしこlogさん)

Raspberry Pi 2 Model B で L2TP/IPSec VPNサーバを構築してみた(その2)(俺の技術メモさん)

Raspberry PiでSoftEther VPN(PCリンクスさん)

問題発生

Windowsでの設定でtapデバイスにtap_vlanとしたのですが

brctl show br0

と打ってもラズパイを再起動した後はtap_vlanが出てきません^^;
なのでラズパイを再起動するたびにVPNが繋がらなくなってしまいました。
/etc/init.d/vpnserverを手動で再起動するとつながるのですが、いちいち手動でやっていたのではせっかく起動スクリプトを書いた意味がありません。。
これはどうしてかなーと悩みましたが、以下の方法で解決したようです。

/etc/init.d/vpnserverの以下を変えてみました。

変更前

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

変更後

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

最後のsleep 3をsleep 7にしてみたら無事起動しましたが、これはどうしてでしょうねえ。
あとはルータの500番ポートと4500番ポートを開けておきます。

500ポート(UDP)
4500ポート(UDP)

最終的にiPhoneからつなぐので設定します。

iPhoneの設定

設定→一般→VPN→VPN構成を追加→L2TPのタブを選択

  • 説明:識別する名前(例:自宅)
  • サーバ:DDNS(○○.softether.net)やグローバルIPアドレス
  • アカウント:サーバに登録したユーザ@ハブ名(例:test@vpn)
  • RSA SecurID:オフ
  • パスワード:ユーザに設定したパスワード
  • シークレット:IPsec事前共有鍵
  • すべての信号を送信:オン

そろそろラズパイ3欲しいですねえ。

-ガジェット
-, , ,


  1. ducsu より:

    Thank you. You guide helped me a lot in getting the vpn to work. The images helped a great deal since I do not understand Japanese.

関連記事

ポケモンGO用にスマホ自転車ホルダー

はじめにことわっておきますが、あくまでタマゴ孵化用です! 社会現象にもなっちゃったポケモンGOですが …

ASMRの世界

学生時代、先生が配るプリントの音(紙がこすれる音)とか黒板にチョークで書く音とか聞いているとなんとな …

LGの4Kテレビ買ったった

新年あけまして(遅 今年もよろしくお願いします。 さて元日に普通のPS4からPS4 Proに買い替え …

Raspberry Piでcronを使用して定期的に画像削除

さて、先日motionで監視カメラを作りましたが、画像がどんどん溜まっていくのでcronを使って削除 …

line

MVNOでLINEの年齢確認を回避する(というかしない)

前にもこんな記事書きましたが、iPhoneだと脱獄するとか、plistファイルを書き換えるとか。 た …

カテゴリー

アーカイブ

サイト内検索