====== 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接続してしまおうというわけで記事タイトルに繋がる。 ===== 試した環境 ===== ネットワークの構成図は以下のような感じ。 {{ :network:nanopi_r2s_se_bridge_network_diagrams.png |}} NanoPi R2SのWAN側を宅内LANセグメント、LAN側をSoftEther VPN BridgeのL2ブリッジによる社内LANセグメントとし、宅内サーバのBMCネットワークを社内LANに中継してやる。 こんなこともあろうかと、サーバ設置の時点でBMCには社内セグメントのIPアドレスを振った状態だったりする。もしDHCP使うにしても、社内側のDHCPサーバから降ってくるので、FriendlyWrtの余計なサービスは止め、NanoPi R2SはVPNブリッジ箱に徹してもらう。 * [[https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R2S|NanoPi R2S]] * SoftEtherが簡単に動きそう、物理LANポート2個、お手頃価格、低消費電力というあたりを重視して選定。 * 性能は二の次(と言っても十分すぎる性能だけど) * FriendlyWrt 23.05-20240314 * OpenWrtをNanoPi向けにカスタマイズした公式ディストリビューション * とっつきやすそう、[[https://forum.vpngate.net/viewtopic.php?t=68093|他のディストリビューションだとSoftEtherで速度が出ないらしい]]というあたりを加味して選定。 * eth0 : WAN側ポート * eth1 : LAN側ポート * SoftEther VPN Bridge 4.38-9760-2 ===== 手順 ===== ==== FriendlyWrtの準備と起動 ==== 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''の停止ボタンを押し、「有効」ボタンを押して「無効」にする。下図は既に無効状態である。 {{ :network:nanopi_r2s_se_bridge_disable_firewall.png |}} WAN側ポートに振られたIPアドレスで管理画面にアクセスできることを確認する。 ==== DNSサーバ、DHCPサーバの停止 ==== LAN側ポートは社内LAN側で管理を掌握したいので、DNSサーバ、DHCPサーバを停止する。 上記ファイヤウォール同様、スタートアップページで''dnsmasq'', ''odhcpd''を停止、無効にする。 ==== ブリッジの削除とLAN側インタフェースの追加 ==== FriendlyWrtのデフォルト状態では、LAN側(eth1)はブリッジ''br-lan''が割り当てられている。今回はシンプルにSoftEtherの仮想NICとeth1をL2ブリッジしたいので、''br-lan''は消す。 FriendlyWrtの管理画面のネットワークメニュー→インタフェース→インタフェースタブで''br-lan''を削除する。同じくデバイスタブの方でも設定解除する(こっちに残っててもダメっぽい)。 その後、インタフェースタブの「インタフェースを新規作成」から''eth1''を追加する。 ^ 項目 ^ 値 ^ | 名前 | lan (何でも良い) | | プロトコル | アンマネージド | | デバイス | eth1 | 最終的にインタフェース画面は以下のようになっていればよい。 {{ :network:nanopi_r2s_se_bridge_interfaces.png |}} ==== SoftEther VPN Bridgeのインストールと設定 ==== 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サーバー管理マネージャを使うと楽 * 仮想HUB''BRIDGE''からカスケード接続で、社内LANの仮想HUBに接続する * 仮想HUB''BRIDGE''のローカルブリッジ設定で、ブリッジ先LANカードをNanoPi R2SのLAN側''eth1''にする{{ :network:nanopi_r2s_se_bridge_new_local_bridge.png |}} * リスナーのポートTCP/443を削除する(FriendlyWrtの管理Webページのポートと被る) ==== NanoPi R2S経由で社内LANに接続 ==== NanoPi R2SのWAN側ポートを宅内LANのルータ、LAN側ポートを適当なPCに接続し、PCのNICはDHCPでIPアドレスを取得するように設定する。 正しく設定されていれば、NanoPiの電源を抜き差し後、ほどなくしてPCのNICに社内LANのIPアドレスが降ってきて、社内にアクセスできるようになる。 気になる速度はNTttcpの計測で30Mbpsほど。この時のNanoPi R2Sのロードアベレージは1に達しない程度だったので、もうちょい速くなってもよさそうな…?BMC/IPMI用途には十分ですけどね。 ===== 参考サイト ===== * [[https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R2S|NanoPi R2S - FriendlyELEC WiKi]] * [[https://kunsen.net/2022/08/29/post-4707/|GL.iNet GL-MV1000 で SoftEther VPN Bridge を立ち上げる (TAPなし)]] * [[https://forum.vpngate.net/viewtopic.php?t=68093|クライアント側下りのスピードが出ない。 - SoftEther VPN User Forum]]