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サーバーをダウンロードします。
以下のような感じで選択します。
私は今回β版をダウンロードしましたが、安定版の方が安心かと思います。
下記は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
なお詳しい設定方法は参考サイトを見てください^^;
自分が書くよりわかりやすいサイトがたくさんありますので。。
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欲しいですねえ。
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.