NanoPi R2SでSoftEther VPNの拠点間L2-VPN中継器を作る

知り合いの会社では、遠隔地という名の役員宅にデータバックアップサーバーを設置している。昨今の電気代高騰と猛暑による廃熱問題のため、バックアップ開始時に自動的にサーバーの電源が入り、終わったら自動で電源が切れるようにできないか、という相談を受けた。

サーバーにはBMC/IPMIが載ってるので、リモートで電源ON/OFFをするのは造作もない。問題は現状BMC NICが物理的に繋がっておらず、また仮に繋いだとしてもルータ越しでアクセスできないってこと。ポートフォワードなりしてやれば技術的にはアクセス可能だけど、さすがにBMCをインターネッツに解き放つのはどうかと思うわけ。

バックアップサーバー自体はOS上のSoftEther VPN Client経由で社内に繋がっている。であるならば、BMC側もSoftEtherで社内に繋がってくれれば都合がよい。かと言って、BMCで動くSoftEtherなんてものは当然存在しないので、NanoPi R2SでSoftEther VPN Bridgeを動かし、BMCを社内LANにVPN接続してしまおうというわけで記事タイトルに繋がる。

ネットワークの構成図は以下のような感じ。

NanoPi R2SのWAN側を宅内LANセグメント、LAN側をSoftEther VPN BridgeのL2ブリッジによる社内LANセグメントとし、宅内サーバのBMCネットワークを社内LANに中継してやる。

こんなこともあろうかと、サーバ設置の時点でBMCには社内セグメントのIPアドレスを振った状態だったりする。もしDHCP使うにしても、社内側のDHCPサーバから降ってくるので、FriendlyWrtの余計なサービスは止め、NanoPi R2SはVPNブリッジ箱に徹してもらう。

    • SoftEtherが簡単に動きそう、物理LANポート2個、お手頃価格、低消費電力というあたりを重視して選定。
    • 性能は二の次(と言っても十分すぎる性能だけど)
  • FriendlyWrt 23.05-20240314
  • SoftEther VPN Bridge 4.38-9760-2

NanoPiの各モデルのページからダウンロードページをたどり、FriendlyWrtのSDカードイメージをダウンロードする。

何種類かあるようだけど、最新版で軽量そうなFriendlyWrt 23.05を選んだ。

gzを展開したimgファイルをDD for WindowsなりでmicroSDカード(8GB以上)に書き込んで、NanoPiにmicroSDカードを挿入、USB-C経由で電源を供給すればFriendlyWrtが起動する。

初回は初期設定で少し時間がかかるが、完了すればNanoPiのLAN側のEthernetポートから192.168.2.1で管理Webページにアクセスできるようになる。また、この時点でWAN側のDHCPクライアント、LAN側のDHCPサーバ、WAN-LAN間のNAPTが動いている。つまり、PC ←→ [LAN] NanoPi [WAN] ←→ ルータ と接続し、PCのIPアドレスをDHCP取得にしておけば、何も考えずにPCからFriendlyWrtの設定とインターネットアクセスができる状態となる。名前のとおり大変フレンドリーでありますね。

NanoPiのWAN側ポートを宅内LANセグメント、LAN側ポートをSoftEther VPN Bridgeによる社内LANセグメントとする。

つまり、ここからはWANポート側からFriendlyWrtの管理Webページにアクセスする必要がある。デフォルトではファイヤウォールで遮断されているため、ファイヤウォール自体を止めてしまう。生かしたままポリシーを変える方法もあるが、なるべくシンプルに行きたいので止めてしまう。

FriendlyWrtの管理画面のシステムメニュー→スタートアップページと遷移し、firewallの停止ボタンを押し、「有効」ボタンを押して「無効」にする。下図は既に無効状態である。

WAN側ポートに振られたIPアドレスで管理画面にアクセスできることを確認する。

LAN側ポートは社内LAN側で管理を掌握したいので、DNSサーバ、DHCPサーバを停止する。

上記ファイヤウォール同様、スタートアップページでdnsmasq, odhcpdを停止、無効にする。

FriendlyWrtのデフォルト状態では、LAN側(eth1)はブリッジbr-lanが割り当てられている。今回はシンプルにSoftEtherの仮想NICとeth1をL2ブリッジしたいので、br-lanは消す。

FriendlyWrtの管理画面のネットワークメニュー→インタフェース→インタフェースタブでbr-lanを削除する。同じくデバイスタブの方でも設定解除する(こっちに残っててもダメっぽい)。

その後、インタフェースタブの「インタフェースを新規作成」からeth1を追加する。

項目
名前 lan (何でも良い)
プロトコル アンマネージド
デバイス eth1

最終的にインタフェース画面は以下のようになっていればよい。

FriendlyWrtの管理画面のシステムメニュー→ソフトウェアページから、SoftEther VPN Bridgeをインストールする。

接続先のSoftEther VPN Serverが4系統なのに合わせ、NanoPi側は2024-07-21現在最新のsoftethervpn-bridge 4.38-9760-2を選択した。

無事インストールが終われば、https://WAN側IPアドレス:5555でSoftEtherのWeb管理ページが表示される。

SoftEther VPN Bridgeの設定方法は割愛するが、要旨は以下のとおり。

  • SoftEther VPNサーバー管理マネージャを使うと楽
  • 仮想HUBBRIDGEからカスケード接続で、社内LANの仮想HUBに接続する
  • 仮想HUBBRIDGEのローカルブリッジ設定で、ブリッジ先LANカードをNanoPi R2SのLAN側eth1にする
  • リスナーのポートTCP/443を削除する(FriendlyWrtの管理Webページのポートと被る)

NanoPi R2SのWAN側ポートを宅内LANのルータ、LAN側ポートを適当なPCに接続し、PCのNICはDHCPでIPアドレスを取得するように設定する。

正しく設定されていれば、NanoPiの電源を抜き差し後、ほどなくしてPCのNICに社内LANのIPアドレスが降ってきて、社内にアクセスできるようになる。

気になる速度はNTttcpの計測で30Mbpsほど。この時のNanoPi R2Sのロードアベレージは1に達しない程度だったので、もうちょい速くなってもよさそうな…?BMC/IPMI用途には十分ですけどね。

  • network/nanopi_r2s_build_softether_vpn_bridge_box.txt
  • 最終更新: 2024-09-16 19:27
  • by Decomo