VPNでiPhoneからラズパイに接続する
今回の内容
家にいなくてもiPhone等からラズベリーパイに接続するために、今回はVPNを使った方法を説明します。VPNソフトウェアとしてオープンソースであるSoftEther VPNを使用します。
前回までの内容は?
前回までで、ラズパイを使うための設定(OSのインストール,SSH等)をして、エアコンの操作や、音声認識、サーバの構築をラズパイ上で行ってきました。
前回までの内容が気になる方や、ラズベリーパイをもっと活用したい方 は、ぜひ以下の記事をご確認ください。
ネットワークの設定
ラズパイにbridge-utilsをインストールしていない場合はインストールをしてください。
sudo apt-get install bridge-utils
次にvi等のエディタで/etc/network/interfaces を編集します。仮想ブリッジbr0にネットワークアダプタeth0をブリッジさせます。
----------/etc/network/interfacesの内容--------- auto lo iface lo inet loopback auto eth0 iface eth0 inet manual # SoftEther VPN auto br0 iface br0 inet static address 192.168.〇.〇 #ラズパイのIPアドレス netmask 255.255.255.0 gateway 192.168.〇.〇 #ゲートウェイ #eth0をブリッジする bridge_ports eth0 #その他 allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
SoftEther VPN Serverのインストール
SoftEther VPN Serverをインストールします。
SoftEtherのダウンロードページで最新版のurlを確認してからwgetによりパッケージをダウンロードします。
ダウンロードページで指定するソフトウェアはSoftEther VPN(Freeware)、コンポーネントはSoftEther VPN Server、プラットフォームはLinux、CPUはARM EABI(32bit)とします。図1のように指定すればページ下に使用できるバージョンが表示されます。
urlを指定して、wgetでダウンロードします。筆者はv4.08をダウンロードしました。
wget http://jp.softether-download.com/files/softether/v4.08-9449-rtm-2014.06.08-tree/Linux/SoftEther%20VPN%20Server/32bit%20-%20ARM%20EABI/softether-vpnserver-v4.08-9449-rtm-2014.06.08-linux-arm_eabi-32bit.tar.gz
ダウンロードしたファイルを解凍します。
tar zxvf softether-vpnserver-v4.08-9449-rtm-2014.06.08-linux-arm_eabi-32bit.tar.gz
解凍してできたディレクトリvpnserverへ移動し、makeを実行します。
途中で、図2のようにライセンス許諾書について同意しますか等をきかれるので1を選択します。
図3のようにSoftEtherが正しく動作するかのチェックも行われます。
makeの最後に、図4のようにSoftEtherサーバの使い方が表示されます。
cd vpnserver make
vpnserverディレクトリを/usr/local/に移動させます。
cd .. sudo mv vpnserver /usr/local/
/usr/local/vpnserverに移動し、パーミッションを変更します。
cd /usr/local/vpnserver chmod 600 * chmod 700 vpncmd chmod 700 vpnserver
起動スクリプト作成
ラズパイ起動時にSoftEther VPNが起動するようにスクリプトを作成します。
sudo vi /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.08 RTM # Description: Start vpnserver daemon SoftEther VPN 4.08 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.08 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.08 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
起動スクリプトに実行権限を与え、自動起動登録します。最近のdebianでは、"update-rc.d"を実行するとメッセージが出てきます(非推奨らしい)。なので、"insserv"を使用して自動起動登録します。
その後、ラズベリーパイを再起動します。
sudo chmod +x /etc/init.d/vpnserver sudo insserv vpnserver sudo reboot
SoftEther VPN Serverの設定
基本設定
SoftEther VPN Serverの設定は、SoftEther VPN Server Managerを使って設定をします。
SoftEtherのダウンロードページにSoftEther VPN Server Manager for Windowsがあるので、そちらをWindowsパソコンにダウンロード、インストールします。
ダウンロードページで指定するソフトウェアはSoftEther VPN(Freeware)、コンポーネントはSoftEther VPN Server Manager for Windows、プラットフォームはWindows、CPUはIntel(x86 and x64)とします。
図5のようにすればよいと思います。
セットアップウィザードのインストールするソフトウェアの選択では、SoftEther VPN サーバー管理マネージャ(管理ツールのみ)を選択してください。後はセットアップ画面に従ってインストールすれば問題ないと思います。
インストール後、SoftEther VPN Server Managerを立ち上げ、「新しい接続設定」をクリックします。
接続設定名(任意の名前)、VPNServerのホスト名(ラズパイのIPアドレス)、ポート番号(443)を入力し、OKをクリックします。
上記で作成した接続先(ここではraspberryPi)に接続します。接続したら以下の図のような画面が表示されるので管理者用のパスワードを設定します。新しいパスワードを入力してOKをクリックします。
SoftEther VPN Server/Bridge簡易セットアップを行います。リモートアクセスVPNサーバーにチェックを入れて、次へをクリックします。
簡易セットアップ-パブ名の決定では、仮想HUB名を「VPN」にします。
ダイナミックDNSを設定します。この機能により、固定グローバルIPアドレスがなくても、世界中のどの場所からでも無線環境があれば、ラズベリーパイにアクセスすることが可能となります。嬉しいですね。
右側の「ダイナミックDNSホスト名の変更」のところに、任意の名前を入力し、「上記のDNSホスト名に変更する」をクリックします。
変更しました、というメッセージがでるのでOKを押します。
その後、左側の「現在の状態」を確認して、閉じるをクリックします。
IPsec/L2TPサーバ機能の設定で、「L2TPサーバー機能を有効にする」にチェックをいれます。
そして、IPsec共通設定で、「IPsec事前共有鍵」に任意の文字列を8文字程度で入力した後、OKをクリックします
これで、iPhoneやiPad、Android等のスマートフォンやタブレットからもアクセス可能になります。これらのデバイスからVPNServerにアクセスするためには、ここで入力した事前共有鍵が必要となりますので覚えておきましょう。
VPN Azureサービスは使わないので、VPN Azure設定で「VPN Azureを無効にする」にチェックを入れて、OKをクリックします。
ユーザの作成
SoftEther VPN Serverに接続できるユーザを作成します。「ユーザを作成する」をクリックします。
ユーザの新規作成画面でユーザ名、本名、説明(任意)の入力と、パスワード認証のパスワード(任意)を入力し、OKをクリックします。
ユーザ 〇〇 を作成しましたと表示されるので、OKをクリックします。
ユーザの管理画面では、先ほど作成したユーザがいることを確認してください。 続けてユーザの登録をする場合は、「新規作成」をクリックしてください。 終わったら、閉じるをクリックします。
ユーザ作成画面で閉じるをクリックします。
ローカルブリッジの設定
管理マネージャ画面から、「ローカルブリッジ設定」をクリックします。
ローカルブリッジ設定画面で、「ローカルブリッジの削除」ボタンをクリックします。
そして新しいローカルブリッジの定義から「仮想HUB」でVPNを選択(入力)し、作成する種類から「新しいtapデバイスとのブリッジ接続」にチェックを入れ、新しいtapデバイス名に「vlan」と入力します。
その後、「ローカルブリッジを追加」をクリックしてから、閉じるをクリックします。
物理的な依存のLANカードとしてeth0を選択することも可能ですが、これを選択すると、SoftEther VPN Serverをインストールしたラズパイ自身にアクセスすることはできません(Linuxの制限)。
そのため、外部からラズパイの自作サーバ(Apatchやnode.js等で作成した)にアクセスする目的であれば、tapデバイスとのブリッジ接続をおすすめします。
最後にラズパイのターミナルから、以下のコマンドを実行し、interfacesにeth0とtap_vlanがあることを確認してください。
brctl show br0
ルータの設定
ルータのポート開放を行います。バッファローのルータを使っている方は、ブラウザから「192.168.11.1」にアクセスしてルータの設定を行います。
「ゲーム&アプリ」タブをクリックし、「ポート変換」を選びます。
ポート開放するのは以下のポートです。
- TCPポート: 443
- TCPポート: 992
- UDPポート: 500
- UDPポート: 4500
L2TP over IPsec機能を使用するため、ポート番号500,4500を開放しています。
LAN側IPアドレスにはラズパイのIPアドレスを指定してください。 LAN側ポートは空白のままで良いです。
iPhoneの設定
ホーム画面から「設定」→「一般」→「VPN」→「VPN構成を追加」と辿ってiPhoneでVPN接続できるようにします。
- 説明: 適当に付けてください
- サーバ: ダイナミックDNSで設定したサーバ名(---.softether.net)
- アカウント: ユーザ作成画面で作成したユーザとハブ名(ユーザ名@ハブ名)
- RSA SecurID : オフ
- パスワード: ユーザ作成画面で設定したパスワード
- シークレット: ダイナミックDNSで設定したIPsec事前共有鍵
- 全ての信号を送信: オン
これで、iPhoneから携帯回線(3G,LTE等)を使ってラズベリーパイにVPN接続ができるようになりました。
<< Node.jsでラズパイをWebサーバにへ | MPDでラズパイ2を音楽プレーヤサーバにするへ >> |