事の始まり
自宅と事務所、そして自宅と移動先間で拠点間VPNを構築しようとしているとある知人の話に影響され、特に使い道がなく余ったRaspberry Piで拠点間VPNが実現できないかと思い構築してみることにした。
ネットワーク構成
予めVPNサーバの構築は終わっていることとし、「TESTHub」という仮想ハブが作成され、そこには「testuser」というユーザが存在するものとする。
その際は「リモートアクセスVPNサーバ」で構築して問題はなく、その場合でも既存のクライアントも接続できる。
取得と構築
まずはSoftEtherのWebサイトからSoftEther VPN Bridgeのソフトウェアを取得する。
コンポーネントは「SoftEther VPN Bridge」、プラットフォームは「Linux」、CPUの種類は「ARM EABI(32bit)」を選択し、特に理由がない限り「最新ビルド」とあるものを取得する。
取得が完了したら保存先のディレクトリへ移動し
$ tar xzvf softether-vpnbridge-v4.38-9760-rtm-2021.08.17-linux-arm_eabi-32bit.tar.gz
を実行し、ファイルを展開する。
展開が完了すると「vpnbridge」というディレクトリが直下に作成されるためそこへ移動し、
$ make
を実行する。
正常にビルドが完了すると「vpnbridge」というバイナリが生成されるため、root権限でそれを実行する。
# ./vpnbridge start
これで特に問題がなければソフトウェアは動作する。
設定
設定は付属の「vpncmd」から行う。
「vpnbridge」直下にある「vpncmd」を実行すると何を行うかを聞かれるため。
「1」の「VPN Server または VPN Bridgeの管理」を選択する。
次にどのサーバの仮想HUBの管理を行うかを聞かれるため、「接続先のホスト名またはIPアドレス」には「localhost」と入力するか、空白のままEnterを押し、仮想HUB名は空白のまま進める。
初期状態では「BRIDGE」という仮想HUBが用意されているため、
VPN Server>Hub BRIDGE
と入力し、仮想HUB「BRIDGE」の管理画面へ移行する。
接続先の設定
次に接続先の設定を行う。
仮想HUBの設定画面で
VPN Server/BRIDGE>CascadeCreate
と入力し、「カスケード接続の名前」には適切なもの(今回は「MyHome」)、「接続先VPN Serverのホスト名とポート番号」には接続するVPNサーバのIPアドレスないしはホスト名を[ホスト名/IPアドレス]:[ポート番号]の形式で入力し、「接続先仮想HUB名」には前述の通り「TESTHub」と入力し、「接続するユーザ名」には「testuser」と入力する。
次にパスワードを設定する。
同じく仮想HUBの管理画面で
VPN Server/BRIDGE>CascadePasswordSet
と入力し、パスワードを入力した後、認証方式(通常のユーザ設定では「standard」)を入力する。
接続先とパスワードの設定が完了したら
VPN Server/BRIDGE>CascadeOnline
と入力し、「カスケード接続の名前」に先ほど設定した設定の名称(この場合「MyHome」)を入力する。
正常に接続ができていれば「CascadeList」で確認すると「オンライン」と表示される。
物理NICとのブリッジ接続
次にRaspberry Piに搭載されている物理NICとSoftEtherの仮想HUBをブリッジ接続する。
VPN Server>BridgeCreate
を実行し、「ブリッジする仮想HUB名」に「BRIDGE」、「ブリッジ先のデバイス名」に「eth0」と入力する。
以上で設定は完了、お疲れ様でした。
あれ?接続ができない
ネットワークに接続され、DHCPでIPアドレスが自動的に付与され、一瞬繋がっているようでブラウザでページが読み込まれるものの、その後すぐパケットが詰まるような状況となる。
ifconfigで確認するとなぜかRaspberry Pi側のeth0に接続先のネットワーク上にあるDHCPサーバからIPアドレスが割り振られているため、予め手動で適当なIPアドレスを割り当てておき、DHCPによる自動取得を無効にしておくと問題なく接続できるようになる。
よくある(と思われる)質問
建設現場の事務所と本社のLANを相互に接続したい、建設現場の事務所ではNTTドコモの携帯電話(LTE)が利用できるようであり、例えば「5Gギガホ プレミア」に契約し、VPNで拠点間接続することでそれを実現できるのか
Of course.(もちろん)
ただし、通信容量や回線品質、回線速度には期待してはいけません。あくまで携帯電話回線のそれに準じます。
MacBookや携帯電話など、無線LANを備えているが、有線インタフェースを備えていない装置を別途付属機器なしに接続することはできるのか。または複数台の端末を接続することはできるのか。
eth0に接続している線の先に無線LANブリッジやスイッチを取り付けることでおそらく可能。
携帯電話回線以外にも光回線やADSL、ケーブルテレビなどの固定回線でも問題なく使えるのか
Of course.
ただし、経由するInternet回線を有線接続する場合は別途USB接続のNICが必要になるかもしれません。その場合のブリッジ接続はクライアント端末をぶら下げるNICと接続してください。
研究のために遠隔地にあるマシンでHTTPサーバを起動し、外部からアクセスできるようにしたい。学校で割り当てられている固定グローバルIPアドレスをその端末に割り当てたいが、割り振ることはできるのか
理論上はおそらく可能、やったことはないけど。
これを使えば実家でプロバイダに契約して、その契約を下宿先や単身赴任先で共有できるよね
条件としてはサーバには外部からアクセスできるグローバルIPアドレスを持っていて、クライアント側がInternet経由でそのサーバに接続できることである以上、そんなわけないでしょ。
ただ、フレッツ光の回線を利用しており、同じ西日本もしくは東日本管内で折り返し通信を活用すればどうかはわかりません。
DAAPやDLNA、SMB/CIFSも使えるよね
Of course.
ただ、音声データや動画など、大容量データのやり取りに関しては高速かつ安定した通信回線が必要となりますし、くれぐれも著作権には注意してくださいね。
国外から日本国内のVPNサーバに接続することが出来るのか
Of cource.
ただし、当該国がVPNサーバを設置している国やVPNサーバのIPアドレスとの通信を遮断しておらず、当該国においてVPNの利用が合法であり、SoftEther VPN Bridgeを動かすマシンやそのソフトウェアが当該国で禁制品に定められていない、もしくは当該国への輸出が禁止されていない場合に限ります。
どの程度の速度が出るの?
前述のネットワーク構成ではこんなもんですね。
14Mbps/9.5Mbps
9.94Mbps/10.18Mbps
ただ、Raspberry Pi 3B+およびそれ以前の製品のNICはUSB(2.0)規格で内部接続されていることと、追加でNICを接続する場合であってもUSB 2.0以外の接続手段が存在しないため、500Mbps以上の帯域が確保されている回線であってもその性能を出し切ること(USB 2.0の伝送速度は最高480Mbps)はできません。
最新ラズパイのギガビットイーサ、性能を発揮できない事情 | 日経クロステック(xTECH)
この件について、Raspberry Pi 4にはUSB 3.0が搭載されているため、その端子にUSB 3.0規格に対応したNICを差し込めば状況は改善される可能性が高いですが、予め高負荷が予想される環境下もしくはスループットが重要視される環境においては2ポートのNICを搭載、もしくはNICを増設し、WindowsもしくはLinuxが動作する、現在新品中古問わず市販されている一般的なパソコン(AMD64アーキテクチャ)でもSoftEther VPN Bridgeは大概動作するため、Raspberry Piではなくそちらの導入を検討されることをお勧めします。