清水理史の「イニシャルB」

TOPTONの産業用ミニPCで10Gbps対応ルーターを自作! Proxmox VE+OpenWrtを入れてフレッツ 光クロス回線で使う

TOPTONのN150を搭載した産業用ミニPC。10Gbps対応のSFP+×2を活かしてルーター化する

 10Gbpsの回線用に、有線LANルーターを自作することにした。利用したのは、AliExpressで購入したTOPTONの産業用ミニPC。N150搭載でメモリなし、ストレージなしだが、SFP+ポート×2と、2.5Gbps対応の有線LANポート×2を搭載するモデルだ。有線LANルーターとして利用するまでの工程を紹介する。

ミニPCって高くなっちゃったよね

 小さくて、安いから面白かったのに、すっかりハイスペックで高価になってしまった……。

 そうお嘆きのみなさんにお勧めしたいのが、AliExpressでよく見かけるTOPTONの産業用PCだ。真っ黒で、全身ヒートシンクという無骨さが気に入って、過去にも何度か購入したことがあるが、今回も、「10G回線のルーターとして使えそう」という魅力に負けて購入してしまった。

 詳細は以下のリンク先を参照してほしいが、同社のPCは型番が明確でなく、スペックが羅列されただけの製品名となっており、今回購入したPCも、下記のとおり「Topton 2x10G SFP+ Firewall Mini PC Intel 3 N355 N305 N150 N100 2xi226-V 2.5G 2xNVMe 2xHD DDR5 NAS Home Server pfSense Proxmox」という名称になっていた。

▼TOPTONの製品情報
Topton 2x10G SFP+ Firewall Mini PC Intel 3 N355 N305 N150 N100 2xi226-V 2.5G 2xNVMe 2xHD DDR5 NAS Home Server pfSense Proxmox

正面
側面
背面
内部。M.2 NVMeはWi-Fi用のスロットにアダプター経由で接続する
SATAケーブルも付属。ただし、SATA SSDを底面に装着すると通気が妨げられそう

 選択した構成は、CPUがN150で、メモリなし、ストレージなしで、購入時の価格は3万158円だった。ポイントは、ネットワーク機能の豊富さで、2.5Gbps対応のRJ45ポート×2に加えて、10Gbps対応のSFP+ポート×2が搭載されていること。これにより、WAN側、LAN側それぞれにSFP+の10Gbpsポートを利用するルーターとして活用できる。

 CPUパワーはそこそこ、一方ネットワークは充実、という一般的に見ればアンバランスな製品だが、必要な人にヒットする尖った構成が、TOPTONのミニPCのいいところだ。個人的に、「ミニPCはこうあってほしい」という、理想形に近い製品とも言える。

 費用的には、別途16GBのDDR5メモリ(約8000円)も購入したうえ、今回は手元にある製品を流用したが、本来はNVMeストレージ(1TBで1万円前後)、SFP+用のRJ45モジュール×2(6000~9000円前後)も必要になるので、結果的には6~7万円前後となった。

 市販製品だと、LAN/WANともに10Gbpsに対応したバッファローのWi-Fi 7対応ルーター「WXR18000BE12」が実売5万円なので、Wi-Fi付きの市販製品を購入する方が実用的かつ安心かつ快適かつお得かつ……だが、こちらは趣味の世界なので、気にしないことにする。

SFP+なので、RJ45用のモジュールも必要

Proxmox VEを使ってルーターを仮想化する

 ソフトウェアとしては、OpenWrtを利用することにした。

 エンタープライズ向けであればほかにも選択肢はあるが、今回は誰でも作れる簡単な構成を目指す。

 と、いっても、そのままインストールするのは面白くないし、そもそもOpenWrtを直でPCにインストールするのは面倒なので(イメージを直接書き込む必要がある)、自宅サーバーユーザーにはおなじみのProxmox VEを使うことにした。

 Proxmox VEには、海外の有志が作成した「Proxmox VE Helper Script」という、サーバー環境をコピペだけで構築できる便利なシェルスクリプトが公開されている。

Proxmox VE Helper Scriptを活用する

▼Proxmox VE Helper Scriptのダウンロード
Proxmox VE Helper-Scripts
GitHub - community-scripts/ProxmoxVE: Proxmox VE Helper-Scripts (Community Edition)

 知らない第三者が作成したスクリプトなので、実行前にソースの安全性を確認しておきたい。とはいえ自力で確認するのが難しい場合もあるだろうが、そのような場合も、ChatGPTにコードを貼り付けて安全性を評価させるぐらいはしておくといい。参考程度ではあるが、何をしているかが表示されるので、コードを追いやすくもなる。

 OpenWrtのVMを作成するスクリプトも用意されているので、Proxmox VE環境さえ用意しておけば、ほぼコピペだけの作業で、ルーターとして構成できる。

ChatGPTに「次のコードは、Proxmoxの仮想マシンを作成するシェルスクリプトです。実行しても危険がないかを確認してください」というプロンプトで依頼した結果

▼OpenWrt VM用のProxmox VE Helper Script
Proxmox VE Helper-Scripts

 他にも、クラウドストレージを構成できるNextcloud、各種フィルタリング機能付きDNSキャッシュサーバー、TP-Link OmadaやUniFiのコントローラー、ゲームサーバーなど、300以上のスクリプトが利用できるので、仮想環境を使った各種サーバーの構築が誰でも簡単にできる。

 今回は、このスクリプトを使ってルーターとして構成しよう。以下、Proxmox VEをインストールし、続けてOpenWrtのVMを構築・設定して、ルーターとして動かす手順を、ポイントを追うかたちで紹介する。

 なお、回線はフレッツ 光クロスで、IPv4接続にはDS-Lite方式を利用している。

1. Proxmox VEのインストール

 まずは、Proxmox VEをインストールする。途中、ネットワーク経由での設定が必要になるため、TOPTONのミニPCのETH0ポートを使って一時的にインターネット接続可能な既存のネットワークに接続した状態で作業する。

1-1. ISOをダウンロードする

 以下のサイトから、最新版(本稿執筆時点では8.4)のProxmox VEをダウンロードする。

▼Proxmox VEのダウンロード
Download Proxmox software, datasheets, agreements

ISOをダウンロード

1-2. メディアを作成する

 RufusやRaspberryPi Imagerなどのツールを利用して、ダウンロードしたISOファイルをUSBメディに書き込む

DDモードで書き込む

1-3. TOPTONミニPCのUEFI設定を確認する

 SR-IOV(今回は使わないが一応)やVT-d(標準オン)など、仮想化関連の設定が有効になっているかを確認しておく。

仮想化関連の機能を確認

1-4. TOPTONミニPCをネットワークに接続する

 とりあえずインターネット接続が必要なので、ETH0ポートを既存のネットワークに接続しておく。

1-5.TOPTONミニPCにProxmox VEをインストールする

 作成したインストール用USBメディアで、TOPTONのPCを起動してインストールする。次の順を追っていこう。

  • インストール先でNVMeストレージを選択
  • 国やタイムゾーン設定
  • 管理者(root)のパスワードとメールアドレスを設定
  • ネットワーク設定

 ネットワーク設定では、次の設定を行う。

  • インターフェースでインターネット接続可能なETH0ポート(enp2s0)を選択
  • ホスト名でpvebeta.homeなど「.○○」を指定
  • IPアドレスとしてProxmoxサーバーの値を設定(例:192.168.40.240)
  • Gatewayに現状のルーターのIPアドレスを指定(例:192.168.40.1)
  • DNS Serverも現状のルーターのIPアドレスを指定(例:192.168.40.1)

 後で既存のルーターをOpenWrtで置き換えるので、同じIPアドレスを使うのがポイントとなる。

インターネット接続できるようにネットワークを設定

1-6. Proxmox VEの管理画面にアクセスする

 既存のネットワーク(TOPTONミニPCと同じネットワーク)に接続されたPCでインストール時に、指定したIPアドレスでhttps://192.168.40.240:8006にアクセスする。このとき証明書のエラーが表示されるが、[詳細設定]から「○○に進む(安全ではありません)」をクリックして、アクセスしよう。

証明書エラーを無視してアクセス

1-7. ログインする

 最初に言語を日本語に変更する。その後、root/設定したパスワードで、ログインする。

ログインする

1-8. リポジトリを変更する

 無料版なので「enterprise」と「pve-enterprise」の2つのリポジトリを無効化し、その後、無料版用「pve-no-subscription」リポジトリを追加する。

 続けて、「アップデート」から「再表示」をクリックしてアップデートを表示し、「アップグレード」で最新版に更新しておく。なお、サブスクリプションがないという警告は毎回表示される。

リポジトリを変更後、最新版にアップデートしておく
アップデートを実行する

 インストール後のリポジトリの作業は、前述したProxmox Helper Scriptの「Proxmox VE Post Install(https://community-scripts.github.io/ProxmoxVE/scripts?id=post-pve-install)」で自動的に実行することもできる。ただし、クラスタモジュールの有効化/無効化などの項目も含まれるので、はじめてだと逆に混乱する可能性もある。手動で設定した方が簡単だろう。

2. OpenWrtのVMの構築

 さて、今回の本題に入る。基本的には、スクリプト(前述のProxmox VE Helper Script)を使ってインストールするが、その前に仮想マシンに割り当てるネットワークを作成しておく。

2-1. ブリッジを作成する

 今回使ったTOPTONのミニPCには、SFP+の10Gbpsポートが2つ搭載されている。このポートをOpenWrtで使えるように、ブリッジを作成しておく。

 具体的には、本体の一番左側にある「SFP+1」と記載されている「enp1s0f0」を「WAN」という名前のブリッジに割り当てる。隣の「SFP+2」ポートこと「enp1s0f1」を「LAN」という名前のブリッジに割り当てる。

 サーバーを選択した状態で(左側で選択した項目によって同じネットワークでも設定対象が変わるので注意)、「ネットワーク」を開き、「作成」から「Linux Bridge」を選択し、以下のように、名前に「WAN」、ブリッジポートに「enp1s0f0」と設定する。設定したら、忘れずに「設定を適用」をクリックして反映しておく。

SFP+1ポートは「WAN」に設定。SFP+2ポートを「LAN」としてLAN側に利用する
WANポートを作成
続けてLANポートを作成
設定後、忘れずに「設定を適用」をクリックする

2-2. スクリプトを実行する

 準備ができたら、スクリプトを実行するためのシェルを起動する。サーバーを選択した状態で、右上の「シェル」ボタンをクリックすると、サーバーのコンソールが表示される。

 ここにOpenWrt VM用のProxmox VE Helper Scriptを実行するためのコマンドをコピーして貼り付ければいい。サイトから「bash -c “$(curl…」で始まるコマンドをコピーし、起動したコンソールに貼り付けて実行する。

 なお、標準ではサーバーのストレージとして500MBが確保される。スクリプトの中身を書き換え(複数個所書き換える必要あるので面倒)、さらに公式が公開している拡張スクリプト(下記のリンク参照)をOpenWrt VMのコンソールで実行することで容量を拡大できるが、OpenWrtにソフトウェアを追加しないのであれば、標準設定のままでいいだろう。

▼OpenWrtのパーテーションとファイルシステムの拡張スクリプト
Expanding root partition and filesystem

「To create a new Proxmox VE OpenWrt VM…」以下にあるスクリプトをコピー
コンソールにスクリプトを貼り付けて実行する

2-3. OpenWrtをインストールする

 スクリプトを実行すると、画面上で対話しながらインストールを進めることができる。以下、インストールの流れを見ていく。

2-3-1. Advancedを選択

 自動的にインストールすると、意図しないIPアドレスが設定されてしまうので、「Advanced」を選択して、値を指定しながら進める。

Advancedでセットアップ

2-3-2. IDを指定

 仮想マシンに割り当てるIDを指定する。ここでは101を選択した。

今回は101を指定

2-3-3. ホスト名を指定

 ホスト名を設定する。標準の「openwrt」を使用した。

標準のホスト名を使用

2-3-4. CPUを割り当て

 仮想マシンに割り当てるCPUのリソースを設定する。10Gbps通信は負荷がかかるので、今回は4を選択した。

4コアを割り当てる

2-3-5. メモリを割り当て

 メモリは1GBを指定した。

1024で1GBを指定

2-3-6. WANポートを割り当て

 OpenWrtのWANポートに、Proxmox VEで作成した「WAN」ブリッジを割り当てる。

作成した「WAN」ブリッジを指定

2-3-7. LANポートを割り当て

 OpenWrtのLANポートに、Proxmox VEで作成した「LAN」ブリッジを割り当てる。

作成した「LAN」ブリッジを指定

2-3-8. IPアドレスとサブネットマスクを指定

 OpenWrtのLAN側に割り当てるIPアドレスを指定する。既存のルーターと置き換える場合は、同じIPアドレスを指定する。今回は、IPアドレスに「192.168.40.1」、サブネットマスクに「255.255.255.0」を指定した。

ルーターのIPアドレスとして192.168.40.1を指定。次の画面でサブネットマスクに「255.255.255.0」を指定する

2-3-9. MACアドレスを指定

 WANとLANのMACアドレスを指定する。どちらも標準の値のまま設定しておく。

標準設定でOK

2-3-10. VLAN設定

 VLAN設定は不要なので、空白にして設定しておく。WAN、LANともに不要だ。ただし、LAN側は空白にしても値が残ってしまうので、後で削除する必要がある

VLANはWAN/LANともに空白

2-3-11. MTU設定

 標準の1500で問題ないので、空白で設定しておく。

MTUも空白で設定

2-3-12. VMの起動

 完了後に、VMを起動するかどうかがたずねられる。VLANの設定を変更する必要があるので、「No」を選択しておく。

「No」を選択

 以上の設定でVMの作成を開始すると、インストールが始まり、自動的にスクリプトによってVMが作成される。しばらく時間がかかるので待つことになる。

インストール開始。しばらく待つ

2-4. VMの設定を変更する

 インストールおよびVMの作成が完了したら、作成されたVMの設定を変更する。

 まず、仮想マシンのVLAN IDを削除する。OpenWrtのVMを選択後、「ハードウェア」をクリックし、「ネットデバイス(net0)」をダブルクリックして開き、「VLANタグ」に設定されている「999」という値をクリアして空白にしておく。

 設定完了後、VMを選択して「コンソール」などからVMを起動しておく。

VLANタグの値を削除する
OpenWrtのVMを起動しておく

2-5. ネットワーク設定を変更する

 次に、Proxmox VEサーバーのネットワーク設定を変更する。SFP+1ポート、つまりOpenWrtのLAN側に接続されたPCからもProxmox VEに接続できるようにするために、「LAN」ブリッジにIPアドレスを割り当てる。

 ただし、現状「vmbr0」にProxmox VEのアドレス(192.168.40.240/24)とデフォルトゲートウェイ(192.168.40.1)が設定されているので、これを削除しておく。「設定を適用」をクリックするまでは、設定が反映されないので、とりあえず削除してしまって問題ない。

 「LAN」ブリッジを開き、IPv4/CIDRにProxmox VEサーバーのアドレスとして使う「192.168.40.240/24」とゲートウェイ(IPv4)に「192.168.40.1」(OpenWrtのアドレスに変わる)を割り当てる。

vmbr0のIPアドレスとデフォルトゲートウェイを削除
LANブリッジに同じ値を設定しておく

 この設定を適用すると、現在、既存のネットワークに接続されているETH0のアドレスがなくなるため、このポート経由でProxmox VEにもOpenWrtにも接続できなくなる。慎重に設定する必要がある。

 設定を再確認してから、「設定を適用」をクリックする。設定が反映されると、ETH0ポートからはProxmox VEに接続できなくなる。画面が設定中のままになるが、しばらく待ってから、画面を閉じてしまってかまわない。

 LANポートがTOPTONミニPCのSFP+2ポートに切り替わったので、設定用のPCをSFP+2ポートに直結する(既存のLANにつなぐとIPアドレスの競合が発生するので注意)。

 これで、OpenWrtからPCにIPアドレスが割り当てられ、「https://192.168.40.240:8006」で再びProxmox VEに接続できるほか、後述するように「http://192.168.40.1」でOpenWrtにアクセスできるようになる(ETH0のケーブルは外してかまわない)。

 はじめからSFP+2ポート経由で設定すればいいのでは? と思うかもしれないが、途中、インターネット接続が必要なこともあり、最終的に、この方法に落ち着いた。少々、ややこしいが、慎重に設定してほしい(失敗したらインストールからやり直しが確実)。

3. OpenWrtの設定

 インストールできたら、OpenWrtの設定をする。設定を保存&適用すれば、ようやく全てが完了だ。

3-1. ケーブルを接続する

 WAN側のSFP+1ポートにフレッツ 光クロスの回線(ONUまたはホームゲートウェイ)を接続し、LAN側のSFP+2ポートにPCを接続しておく。スクリプトによってOpenWrtの基本設定が済んでいるため、DHCPでPCにIPアドレスが割り当てられるはずだ。

3-2. 設定画面にアクセスする

 LANポート(SFP+2)に接続したPCから、OpenWrtのIPアドレスを指定して「http://192.168.40.1」にアクセスすると、設定画面が表示される。標準ではパスワードなしでログイン可能だ。そのままでは危険なので、メッセージに従ってパスワードを設定しておこう。

ログインしてパスワードを変更しておく

3-3. IPv6の設定をする

 最初の設定は、IPv6の設定だ。とりあえずIPv6で接続を確立することで、次に行う日本語化やDS-Lite用のモジュールをインストール可能にする。

 「Network」の「Interface」を表示し、標準で登録されている「WAN」インターフェースの「Edit」をクリックして、「General Settings」で「Protocol」を「DHCPv6 client」に変更する。

「DHCPv6 client」に変更

 次に「DHCP Server」タブの「IPv6 Settings」を開き、「RA-Service」「DHCPv6-Service」「NDP Proxy」を全て「relay mode」に変更する。これで、「Save & Apply」をクリックしてから、しばらく待てばWANインターフェースにIPv6アドレスとPDが割り当てられるはずだ。

全て「relay mode」に変更

 その後、「lan」インターフェースを開き、「Advanced Settings」タブで「IPv6 assignment length」を「64」に設定する。

IPv6割り当て長を64に設定

 さらに、「DHCP Server」タブ内の「IPv6 Settings」タブで、「RA-Service」が「server mode」、「DHCPv6 Service」が「server mode」、「NDP Proxy」が「disabled」になっていることを確認する(全て標準設定だが念のため確認)。これで、「Save & Apply」をクリックすれば、PCにもIPv6アドレスが割り当てられ、IPv6でアクセス可能になるはずだ。

LAN側の設定を確認して適用

3-4. 日本語化する

 ここまでできたら、ようやく日本語化できる。「System」の「Software」で「Filter」に「Japanese」を指定して「Update List」を実行すると、「luci-i18n-base-ja」というパッケージが表示されるので、「Install」ボタンをクリックする。インストール完了後、ブラウザーを再読み込みすれば自動的にUIが日本語化される。

日本語化のパッケージをインストール

3-5. DS-Liteパッケージをインストールする

 続いて、DS-Liteパッケージをインストールする。手順3-4と同様に「ds-lite」で検索し、表示された「ds-lite」をインストールすればいい。ただし、インストール直後はこのパッケージが認識されないので、インストール後に「システム」から「再起動」を実行する。

ds-liteパッケージをインストール

3-6. DS-Liteの設定をする

 次に、DS-Liteインターフェースを追加する。「ネットワーク」の「インターフェース」で、「インターフェースを新規作成」をクリックし、「プロトコル」に「Dual-Stack Lite(RFC6333)」を選択。VNEから指定されたAFTRのアドレスを指定する。

AFTRのアドレスを指定する

 続けて、「ファイアウォール設定」タブを開き、「ファイアウォールゾーンの作成または割り当て」で「wan」を選択しておく。個別にゾーンを作成してもかまわないが、今回はシンプルに既存のゾーンを活用する。

wanゾーンに割り当てておく

 最後に、「保存&適用」をクリックすれば、全ての設定が完了だ。IPv6でも、IPv4(DS-Lite)でもインターネットに接続できるはずだ。

通信速度はどうか?

 肝心の速度だが、Speedtest.netの計測で5Gbps前後出るので問題なさそうだ。

 ただし、通信時のCPU負荷をProxmox VE上で確認すると、YouTubeで動画を見るくらいなら1%以下でまったく問題ないが、スピードテストなどでギガクラスの通信が連続的に発生すると60~70%と高いCPU負荷がかかる。接続台数が多くなったときに、どこまで負荷がかかるかを検証する必要がありそうだが、さすがに10Gbps接続のPCを何台も用意できないので、今回の検証はここまでにする。

速度の結果
CPU負荷は高め
清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。「できるWindows 11」ほか多数の著書がある。YouTube「清水理史の『イニシャルB』チャンネル」で動画も配信中