7/2 プレゼント応募方法の詳細リンク先が間違っていました。一度お読みの皆さん、申し訳ありませんでした。

Raspberry Pi 3A+の利用アイディアとしてVPNサーバー

idea-rpi3ap-vpnserver-titleRaspberry Pi
この記事は約16分で読めます。
スポンサーリンク

2019年末、やっと国内向けのRaspberry Pi 4Bが発売になりました。合わせて、それより1年前の2018年にワールドワイド版は発売されていたRaspberry Pi 3A+も国内版がリリースされています。

Raspberry Pi Zero Wの置き換えではないか、と邪推されるほどRaspberry Pi Zero W系は品薄です。(※需要が少ないのか受注生産方式の時期らしい)

Raspberry Pi Zero Wの代わりにしては少しサイズは大きくなるRaspberry Pi 3A+ですが、性能はRaspberry Pi 3B+をほぼ踏襲しているため、Zero系とは比較になりません。

それにWi-Fiの速度が2.4GHzと高速な5GHzに対応している分は使い勝手が良さそうです。

・・・但し、搭載メモリーはZeroWと同じ512MBしかありませんが。

  • デスクトップ環境としてはメモリーが心許ない。
  • サイズとしては組み込むにはZeroWの約倍でデカい。

そんなRaspberry Pi 3A+でも用途を絞ればいくつか考えられます。

通信機能を活かす

メモリーが心許ない3A+の利点として3B+より小さいサイズの他に通信機能は3B+と同等ということが挙げられます。

古い世代として容易に思い浮かぶのが、よくあるプリントサーバー。しかし、現在では旨みはあまりありませんね。既製品でも3,000円〜で購入できる時代です。Raspberry Pi 3A+の基板が3,300円〜と考えると、ケースや手間を思うと高く思えます。
それにそんなにプリントすることも最早ありませんし・・・。

現在だと3Dプリンターに絡めるのでしょうか。海外では、レーザースキャナーを自作した人が居ますね。これはノーマル3Bで構築しています。3A+だとメモリーが足りないかな??

そこで、せっかく3B+と同じ通信機能を有しているのだから、VPNサーバーとしての活用はどうだろうと思います。

ネットで検索すれば構築方法はたくさん出てきました。
これなら3B+よりも省電力な3A+を常時家庭内にぶら下げておくことも気になりません。

SoftEther VPNという無償で利用できるソフトウェアで構築するのが簡単ですが、残念ながら当方の環境であるmacOS CatalinaはSoftEther VPN管理ツールが動きませんでした。
これはmacOS Catalinaから32bitのプログラムをサポートしていないからです。

SoftEther VPNの管理ツールが動かないとSoftEther VPN側のコマンドツールしかなく、難解なので実際には3A+で構築していません。Windowsの方は可能ですので試してみてください。

VPNサーバーとは?

先ず以て、そもそもVPNサーバーは一般的ではありませんから、簡単にご紹介します。

VPN = Virtual Private Network(仮想の専用線とも言えます)

非常に簡単に言ってしまうと、「ある接続方式を使用して家庭内のルーターから中に入りファイルなどを利用できるようにする」サーバー機能です。

もっと乱暴に言うと「設定したユーザーと接続方式しか中に入れない」

VPNというとどうしてもセキュリティ上で安心だとか、完璧チックに聞こえると思います。だって、専用線という英語ですからね!
そうは言っても公というか広義のインターネット網を通ったり、VPNサーバーを経由するわけで、リアルに2拠点だけの通信というわけではありません。

※糸電話のイメージで概ねOKです。しかし、糸電話みたいに1本で繋がるわけではなく、公衆回線を通ることは変わりません。

かといって、セキュリティ的に弱いわけではありません。但し、きちんと理解して設定していないと意味ないよ、ということもあり過信は禁物です。

SoftEther VPN

SoftEther VPN はオープンソースの、無償で、複数プラットフォームおよび複数 VPN プロトコル対応の VPN ソフトウェアであり、Apache License 2.0 で提供され、筑波大学における研究プロジェクトとして運営されています。独立行政法人 情報処理推進機構 (IPA) の未踏ソフトウェア創造事業 未踏ユース部門 (平成 15 年度) の支援によって開発されました。SoftEther VPN はソフトイーサ株式会社の PacketiX VPN 4.0 に相当するフリーバージョンです。

構築の流れ

ここではRaspberry Pi 3A+を活用するアイディアとしてご紹介します。ザックリと大まかな流れと要点を載せておきます。

今回の環境
  • Raspberry Pi 3A+(今回は3A+。3B+でも同じですね)
  • raspbian-buster-lite.zip
  • microSDカード
  • SoftEther VPN Server
  • macOS:SoftEther VPN Server Manager for Mac OS X (動かず・・・)
    Windows:ZIP Package of vpnsmgr.exe and vpncmd.exe (without installers)
    ダウンロード先:https://ja.softether.org/5-download

SoftEther VPN ServerはOSなどを選べば最新版が最上位にきます。それを使用してください。

SoftEther VPN Server ManagerはWindows版またはMac版です。

※現在macOS CatalinaはSoftEther VPN Server Managerが動作しません。設定するにはSoftEther VPNに用意されているコマンドで行うしかありません。GUIがないために使用するのは非常に難しい・・・。

大まかな流れ
  1. Raspbianの準備とセットアップ
  2. SoftEther VPNアプリケーションをダウンロード&インストール
  3. vpnserverの自動起動を設定
  4. VPN Server Managerから設定(macOSまたはwindowsから)
  5. bridge-utilsのインストール&設定
  6. ルーターの設定

構築のポイント

ハマりそうな要点をまとめておきます。

Raspbianの準備は最低限でOK

Raspbianをセットアップしておきます。microSDカードに書き込んで起動し、デスクトップ環境は使いませんので最低限だけ設定しておきます。

これはタイムゾーンとWi-Fiの国設定、デフォルトユーザーpiのパスワード変更はしておきましょう。他はホスト名くらいでしょうか。

sudo raspi-config

SoftEther VPNアプリケーションはコンパイルが必要

ダウンロードは当然ながらRaspbian側から行います。
wgetコマンドでURLを右クリックしてURLをコピーし、SSHのターミナル上でペーストして実現しました。(WindowsならTeraTermでドラッグアンドドロップでSCPコピーでもOK)

wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.32-9731-beta/softether-vpnserver-v4.32-9731-beta-2020.01.01-linux-arm_eabi-32bit.tar.gz

解凍し

tar zxvf tar zxvf softether-vpnserver-v4.32-9731-beta-2020.01.01-linux-arm_eabi-32bit.tar.gz
cd vpnserver
make

コンパイル(make)します。確認が3回出ますので全部1番でOK。
完了すると少し画面を戻すとCheck Toolの結果出ています。これがpassされていればOKです。

---------------------------------------------------
SoftEther VPN Operation Environment Check Tool

Copyright (c) SoftEther VPN Project.
All Rights Reserved.

If this operation environment check tool is run on a system and that system passes, it is most likely that SoftEther VPN software can operate on that system. This check may take a while. Please wait...

Checking 'Kernel System'... 
              Pass
Checking 'Memory Operation System'... 
              Pass
Checking 'ANSI / Unicode string processing system'... 
              Pass
Checking 'File system'... 
              Pass
Checking 'Thread processing system'... 
              Pass
Checking 'Network system'... 
              Pass

All checks passed. It is most likely that SoftEther VPN Server / Bridge can operate normally on this system.

The command completed successfully.


--------------------------------------------------------------------

アプリケーションの置き場所

この辺りは私もよく理解していません。ダウンロードした場所とは異なり、/usr/localへ配置して設定するような形がセオリーです。Windowsで言えばプログラムフォルダみたいな感じです。

vpnserverのフォルダ毎を/usr/localへコピーします。更にファイルのパーミションを書き込みや実行ができるようにしておきましょう。

sudo mv vpnserver /usr/local

取りあえずvpnserverフォルダ以下を全て700で設定しておいて、実行ファイルのあるフォルダは755にしました。

正確には644にすべきこともあると思います。分からない場合はエラーが出てから権限を与える形でも良いでしょう。

vpnserverは自動起動にする

移動させたvpnserverを毎回起動しないとなりませんから、起動時に自動起動するための設定としてサービスファイルを作成します。/usr/etc/systemd/system内にvpnserver.serviceファイルを作成します。

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

ここが厄介でした。この後のブリッジ接続をするとサービス開始のvpnserver startだと上手く行かない。

こちらが一番詳しかった。基本はこちらの記事でOKだった。

Raspberry PiでのVPNサーバ構築

vpnserver.shなどの名前で以下のファイルを作成し、それを自動起動のサービス設定ファイルで実行させるように変更します。

#!/bin/bash

/usr/local/vpnserver/vpnserver start

tap=$(/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}')
/sbin/brctl addif br0 $tap

先程のサービス設定ファイルの一部変更は以下となります。
vpnserverの動作確認してから、ローカルブリッジの設定が終わった後に書き換えてください。

ExecStart=/usr/local/vpnserver/vpnserver.sh

sysytemフォルダがない!

システムデフォルトである/usr/lib/systemd/system/にsysytemフォルダがない!という状態だったので、/usr/etc/systemd/systemに保存したけど、良かったみたい。

Unit 定義ファイルの場所
二箇所ある。
/usr/lib/systemd/system/ : システムデフォルト
/etc/systemd/system/ : 管理者がカスタマイズする場所
同じ名前の設定ファイルがある場合、 /etc/systemd/system/ が優先
システムデフォルトの設定を変更する場合、 /usr/lib/systemd/system/ から /etc/systemd/system に設定ファイルをコピーして編集
Unit名がそのまま設定ファイル名になる
シンボリックリンクでUnitの別名を設定することができる
ディレクトリ「(Unit名).wants」は依存関係の定義に使用

https://qiita.com/a_yasui/items/f2d8b57aa616e523ede4

確認

systemctl start vpnserver.service
systemctl enable vpnserver.service
systemctl status vpnserver.service

これでアクティブになっていればOKですね。(Active: active (running))

VPN Server Managerの設定

macOS Catalinaでは無理でしたが、Windowsならインストールして使えます。

ここで設定するのは、

  • 仮想HUB(仮想HUB名は任意のもの)
  • DDNS 名(重複しない任意のもの)
  • L2TP サーバ機能を有効にする(IPsec 事前共有鍵も設定)
  • 新しい tap デバイス名(ブリッジでtapデバイスを使う)(こちらも任意で設定)

ローカルブリッジ接続の導入

3A+にsshで繋いで管理しますので、そのままだとVPNサーバーとして機能させると困ります。ブリッジの名のように仮想でもう一つの接続場所を確保しておきます。

VPN Server Managerの設定で仮想HUBを作成した後、ブリッジを使用するためにツールソフトをインストールします。

sudo apt install bridge-utils

/etc/network/interfacesに追記します。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto wlan0
iface wlan0 inet manual

# SoftEther VPN
auto br0
iface br0 inet static
address 192.168.0.99
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.255.255
gateway 192.168.0.1

bridge_ports wlan0
bridge_maxwait 10

ipアドレス部分は自分の環境に合わせてください。

色々と調べてみるとブリッジのインターフェイスを固定IP化して、eth0やwlan0では固定IPにしない。ブリッジ(br0)のIPアドレスをルータでポートフォワード(ポート変換)します。

ネットワークの状態を表示するにはifconfig

ifconfig

ルーターの設定

SoftEther VPNの公式ページではポート 500、4500とあります。

L2TP over IPsec、EtherIP over IPsec を使用する場合
UDP ポート 500、4500

ルーターの機種やネットワークの環境、OSによっても異なります。
基本は「ポート変換」を新規作成し、今回のbr0で設定した固定IPへ転送させます。

プロコルはTCP/UDP
TCP/UDPポートのタイプはUDPでポート500、タイプUDPでポート4500
LAN側IPアドレスはbr0で設定した固定IPアドレス
LAN側のポートも作成が必要(500と4500)

こっちのポート番号とあっちのポート番号を繋ぐイメージです。

外部から指定したポートに流れてきたパケットを、指定した3A+のポートへ流すということです。

SoftEther VPN プロジェクト公式https://ja.softether.org/
公式VPN Server 側での L2TP/IPsec 機能の有効化方法:https://ja.softether.org/4-docs/2-howto/L2TP_IPsec_Setup_Guide/1

利用のイメージ

まだ今のようにクラウドが無かった時代によくあったお話。
拠点間をVPNで繋ぎ、システム監視する必要がある場合など、Windowsサーバーを新規で設置し、ライセンスもかかり、まだ高価だった光接続の電話線を1本追加し、リモートアクセスVPNのルーターも買ってもらうということで実現していた遠隔の環境がありました。

分かり易いのは、現在でもアプリケーションサーバーとして、本社のアプリを支店で使うことは当たり前になっています。これらもリモートアクセスVPNで実現しています。社内に居る時と同じように使えるのは便利ですよね。

つまり、

個人で家庭内にリモートアクセスVPNを使うのは、他の誰からもルーターを超えさせたくないけど、自分だけが通れるようにしておいて、自宅に保存している写真やテキストなどデータを取り出すくらいの規模を作るということです。つまり、クラウドっぽく使うということです。

ここに価値を見出す方はマニアな人かも知れませんね。あまり一般的ではないため、私も含めて構築も面倒なら既存のクラウドを使った方が超絶に便利です!

それに、家庭の光接続はアップロード速度は遅いんですよ。

ほら、ダウンロード速度は高速とか宣伝文句がありますが、アップロードは触れません。それをメインにした使い方は想定にありませんからね。

自宅内に入ってファイルを取り出すには家庭内から見ればアップロードです。ファイルサイズによりますが大きな期待は抱かない方がイイですね。

VPNサーバーを構築すれば、自宅外からセキュアな状態で家庭内のデータにアクセスする利用方法ということです。

Raspberry Pi Logo

私はインフラエンジニアってかなり高い報酬を受けていて、とても仕事が出来る人、っていうイメージがあります。今ならWindowsサーバーでの拠点間は元より、クラウドが主戦場でしょうか。
・・・私にはAmazonのクラウドもよーわからなない。

読まなくてイイ余談

クラウドという言葉が出始めの頃、クラウドのバーチャルマシンの中にバーチャルマシンがあって、そこからVPNで繋いで見たものの、更にそのバーチャルのマシンが並列でまだあって・・・、といった構築なんかは、文系出身の私にはちんぷんかんぷんで、一生懸命にファイルを探していたら明後日のマシンの中だったとか。
そんで、そもそもフィルが生成できていなかったから、いくら探しても有るわけ無いというオチ。
更に追い打ちを掛けるようにVPNで設定したサーバーを間違えていてやり直し。
タブン、頭から煙が出ていたと思う。人間がStack-overflow状態だったわ。

詳しくは、今回利用するサーバーツールのSoftEther VPNプロジェクトのページをご覧ください。

Raspberry Pi Zero Wでは性能が足りないが、Raspberry Pi 4Bを使う程でもない時、サイズを小さくしたいなら、Raspberry Pi 3B+よりも3A+を使えるというご提案でした。

まっ、Raspberry Pi 3B+でいいじゃん!っていえばその通り。
他にも3A+が安価なので、上手く利用できる形を考えてみてください。

タイトルとURLをコピーしました