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

TOPTONの産業用ミニPCで10Gbps対応ルーターを自作! Proxmox VE+OpenWrtを入れてフレッツ 光クロス回線で使う
2025年6月2日 06:00
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」という名称になっていた。
選択した構成は、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付きの市販製品を購入する方が実用的かつ安心かつ快適かつお得かつ……だが、こちらは趣味の世界なので、気にしないことにする。
Proxmox VEを使ってルーターを仮想化する
ソフトウェアとしては、OpenWrtを利用することにした。
エンタープライズ向けであればほかにも選択肢はあるが、今回は誰でも作れる簡単な構成を目指す。
と、いっても、そのままインストールするのは面白くないし、そもそもOpenWrtを直でPCにインストールするのは面倒なので(イメージを直接書き込む必要がある)、自宅サーバーユーザーにはおなじみのProxmox VEを使うことにした。
Proxmox VEには、海外の有志が作成した「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環境さえ用意しておけば、ほぼコピペだけの作業で、ルーターとして構成できる。
▼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
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-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」と設定する。設定したら、忘れずに「設定を適用」をクリックして反映しておく。
2-2. スクリプトを実行する
準備ができたら、スクリプトを実行するためのシェルを起動する。サーバーを選択した状態で、右上の「シェル」ボタンをクリックすると、サーバーのコンソールが表示される。
ここにOpenWrt VM用のProxmox VE Helper Scriptを実行するためのコマンドをコピーして貼り付ければいい。サイトから「bash -c “$(curl…」で始まるコマンドをコピーし、起動したコンソールに貼り付けて実行する。
なお、標準ではサーバーのストレージとして500MBが確保される。スクリプトの中身を書き換え(複数個所書き換える必要あるので面倒)、さらに公式が公開している拡張スクリプト(下記のリンク参照)をOpenWrt VMのコンソールで実行することで容量を拡大できるが、OpenWrtにソフトウェアを追加しないのであれば、標準設定のままでいいだろう。
▼OpenWrtのパーテーションとファイルシステムの拡張スクリプト
Expanding root partition and filesystem
2-3. OpenWrtをインストールする
スクリプトを実行すると、画面上で対話しながらインストールを進めることができる。以下、インストールの流れを見ていく。
2-3-1. Advancedを選択
自動的にインストールすると、意図しないIPアドレスが設定されてしまうので、「Advanced」を選択して、値を指定しながら進める。
2-3-8. IPアドレスとサブネットマスクを指定
OpenWrtのLAN側に割り当てるIPアドレスを指定する。既存のルーターと置き換える場合は、同じIPアドレスを指定する。今回は、IPアドレスに「192.168.40.1」、サブネットマスクに「255.255.255.0」を指定した。
2-3-10. VLAN設定
VLAN設定は不要なので、空白にして設定しておく。WAN、LANともに不要だ。ただし、LAN側は空白にしても値が残ってしまうので、後で削除する必要がある
2-4. VMの設定を変更する
インストールおよびVMの作成が完了したら、作成されたVMの設定を変更する。
まず、仮想マシンのVLAN IDを削除する。OpenWrtのVMを選択後、「ハードウェア」をクリックし、「ネットデバイス(net0)」をダブルクリックして開き、「VLANタグ」に設定されている「999」という値をクリアして空白にしておく。
設定完了後、VMを選択して「コンソール」などから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のアドレスに変わる)を割り当てる。
この設定を適用すると、現在、既存のネットワークに接続されている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」に変更する。
次に「DHCP Server」タブの「IPv6 Settings」を開き、「RA-Service」「DHCPv6-Service」「NDP Proxy」を全て「relay mode」に変更する。これで、「Save & Apply」をクリックしてから、しばらく待てばWANインターフェースにIPv6アドレスとPDが割り当てられるはずだ。
その後、「lan」インターフェースを開き、「Advanced Settings」タブで「IPv6 assignment length」を「64」に設定する。
さらに、「DHCP Server」タブ内の「IPv6 Settings」タブで、「RA-Service」が「server mode」、「DHCPv6 Service」が「server mode」、「NDP Proxy」が「disabled」になっていることを確認する(全て標準設定だが念のため確認)。これで、「Save & Apply」をクリックすれば、PCにもIPv6アドレスが割り当てられ、IPv6でアクセス可能になるはずだ。
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」をインストールすればいい。ただし、インストール直後はこのパッケージが認識されないので、インストール後に「システム」から「再起動」を実行する。
3-6. DS-Liteの設定をする
次に、DS-Liteインターフェースを追加する。「ネットワーク」の「インターフェース」で、「インターフェースを新規作成」をクリックし、「プロトコル」に「Dual-Stack Lite(RFC6333)」を選択。VNEから指定されたAFTRのアドレスを指定する。
続けて、「ファイアウォール設定」タブを開き、「ファイアウォールゾーンの作成または割り当て」で「wan」を選択しておく。個別にゾーンを作成してもかまわないが、今回はシンプルに既存のゾーンを活用する。
最後に、「保存&適用」をクリックすれば、全ての設定が完了だ。IPv6でも、IPv4(DS-Lite)でもインターネットに接続できるはずだ。
通信速度はどうか?
肝心の速度だが、Speedtest.netの計測で5Gbps前後出るので問題なさそうだ。
ただし、通信時のCPU負荷をProxmox VE上で確認すると、YouTubeで動画を見るくらいなら1%以下でまったく問題ないが、スピードテストなどでギガクラスの通信が連続的に発生すると60~70%と高いCPU負荷がかかる。接続台数が多くなったときに、どこまで負荷がかかるかを検証する必要がありそうだが、さすがに10Gbps接続のPCを何台も用意できないので、今回の検証はここまでにする。