2.5GbE 4ポート付きN100ミニPCを15000円で購入 & Proxmox + pfSenseを入れてルーターに
概要
最近、電気代が高すぎるので自宅鯖周りの構成を見直しました。
近ごろ話題のN100が気になり調べてみると、これが超省電力なのに結構性能あります。今のTDP80WのSkylakeマシンと比較してN100は6Wなのにシングル性能互角ですよ。Eコアすごいですね。


N100ミニPCだとHDDを積めないのでそこが少し困ります。まあ頻繁にHDD内のデータが必要になることもないですし、今までの鯖にHDDは残しておいて使う時だけ起動する感じで我慢することにします。HDDの消費電力も馬鹿になりませんからね。
それでもN100でHDDいっぱい積みたければこんなNAS用マザーもあります。こっちも検討しましたが、ATX電源にN100みたいな省電力な負荷だと変換効率が超悪くなるので却下です。一応ACアダプターからATX24ピンに変換する基板とかもあるけど…

N100ミニPC
ルーターとしても使いたいので、複数NICがついてるN100ミニPCを探しました。
アリエクとかでちらほら2万円ぐらいでありますね。最安はタオバオのベアボーンで15000円ぐらいのやつでした。I226-Vですが2.5GbEが4ポートついてこの値段はクソ安い。国内Amazonでは多分売ってないです。
I225/I226-Vは共にバグが多くてヤバイらしいですが、I226-VはI225よりはマシだろうということで気にしないことにします😅


本体は14832円です。これ単体の送料は73元で大体1500円ぐらいでした。
タオバオは複数の荷物を中国でまとめてから日本に送ってくれます。追加で何か買っても0.5kgで9元増えるだけなので、まとめるとお得です。
同じ形の4ポートついてるミニPCで、もっと安いJ1900, J4125, N5105とかのバージョンもあります。
スペック
詳細な型番は、BKHD-1264NP-12-4Lらしい。
マニュアル。
中身はこんな感じ。

ストレージはSATAとM.2がそれぞれ1個ずつ。
- SATA 1 × SATA 3.0 6Gb/s
- M.2 Storage 1 × M.2 Key-M 2280
WWANカードを刺す用のmini PCIeスロットがM.2の真下にあります。SIMスロットも側面にあり。
また、マザボの裏面にWiFi用のM.2 Key-Eスロットがあります。ここら辺はルーター用ミニPCらしいですね。
- mPCIe Expansion
1 × mPCIe (PCIe / USB 2.0) - Wireless Expansion
1 × M.2 Key-E 2230 (CNVi)
適当な変換基板でPCIeを引き出して遊んでも面白そう。SATA拡張カードを付けてNASにしちゃうとか。
ただし裏面のM.2 Key-EはCNVi専用で、PCIeは配線されていないので注意。せっかく買ったKey-E変換基板が無駄になりました。
メモリ
安いN100ミニPCだとDDR4なものが多いですが、これはDDR5で嬉しい。
DDR5からOn-die ECCが標準で実装されています。ECCが標準でついてるならサーバー用に最適だと思ってたらどうやらそういうわけではないらしい。DDR5は製造上エラーレートが高めなので仕方なくDRAM内だけエラー訂正するだけで、いわゆる普通のECCはメモリコントローラとDRAM間のビット化け対策なので違うものらしいです。
DDR5は相性が厳しいという噂があるのでメモリは慎重に選びます。
ちょうどこのサムスンのメモリで動かしてる人がいたので、1900円で同じものを買いました。

ストレージは余ってた Optane SSD 16GB を使います。高耐久ですが需要もないので1000円もしないでそこら辺に転がってます。
Proxmoxと数個VM置くだけなら16GBで十分。
上面にCPU部分が接触していてほんのり暖かいので、ヒートシンクを乗せてみました。

OS
Proxmoxをインストール。16GBを有効に使ってほしいので、ファイルシステムはZFSを選択しました。
Proxmox環境でpfSenseのインストールはここを参考に。
https://docs.netgate.com/pfsense/en/latest/recipes/virtualize-proxmox-ve.html
ZFSでスワップを作って適用するのはこんな感じ。Proxmox上の仮想マシンorコンテナのスワップはホストと共有です。
zfs create -V 4G -b $(getconf PAGESIZE) -o compression=zle -o logbias=throughput -o sync=standard -o primarycache=metadata -o secondarycache=none -o com.sun:auto-snapshot=false rpool/swap
mkswap -f /dev/zvol/rpool/swap
echo /dev/zvol/rpool/swap none swap defaults 0 0 >> /etc/fstab
swapon -avroot@pve01:~# free -m
total used free shared buff/cache available
Mem: 7677 3347 3701 117 996 4330
Swap: 4095 475 3620負荷テスト
スピードテストを走らせたときの負荷を見てみます。


4コア割り当てで、2Gbps通信時でCPU使用率は大体50%ですね。まあまあ余裕あります。
不評なI226-Vですが、1日動かしてもdmesg見た感じ勝手にリンクダウンしたりはしてないので多分大丈夫そう。
おまけ
ミニPC内にSSDを増設
SATAポート余らせとくのももったいないですが、SATAケーブルを外に引き出す穴はないです。一応金属の蓋は放熱板になってるので、オープンにするのはちょっと。
この空間に収まりそうなのは、mSATAのSSD+変換基板しかありません。無理やり入れたら超ギリギリ入りました。断線しそうですが。(このケーブルは付属してきました)


追記、2年後に開けてみたら、絶縁用に巻いたビニールテープの接着剤が高温で基板に溶けだしてベタベタになっていました。やらないほうが良いと思います。
PCI変換基板でPT2
M.2からPCIeを引き出し、PCI変換基板に繋いだPT2が使えるか試してみました。


一応認識はしました。ドライバ入れるのがめんどくさかったので録画は確認してません…ごめんなさい
なお、PCIの変換基板に繋ぐSATAの補助電源は、3.3Vがついてるものを使わないと録画が失敗すると聞いたことがあります。このミニPCからは3.3Vを取ってこれないので、5Vを降圧して3.3Vを用意するか外部から持ってくる必要があるかもしれません。
SATA増設カードで、HDDを2台追加
監視カメラサーバ Frigate を立てたので、HDDを積みたくなりました。
上段のM.2 Key-Mに、JMB582のSATA増設カードで2ポート増設。
下段のMini PCIeからは、ライザーで引き延ばし、Key-Mに変換してM.2 SSDをぶっ刺す。

…予定だったのだが、中国人が梱包を間違えて、Mini PCIeではなくKey A+Eが届いた。

紛争を開いたら、返品不要の全額返金だった。Mini PCIe to Key A+E を買って二段で変換することにします。
Mini PCIe to Key A+E to Key-M (ライザー)。ちゃんと動くのだろうか。

下段に2枚も刺して分厚くなってしまったので、上段のKey-Mに刺したSATA増設カードが干渉して、奥まで倒してねじ止めできなくなった…
まあ、刺さってることには刺さってるので、上下のカードを結束バンドで縛るありえない固定方法で解決しました。
これでM.2 SSD 1台 + 2.5in HDD 2台 + SSD 1台 の簡易NASです。

SATA用電源は、マザボからJST XH端子で出ています。ぶっ壊れたPSUからSATAの枝を収穫して、XH端子を圧着して作りました。ピンアサインはマニュアルにあります。
謎の4ピンファン端子を使う
マザボから、極小コネクタで4ピンのCPUファン端子が生えています。
マニュアルにピンアサインは乗っていますが、肝心の端子がなんて名前なのかわからない。
マニュアルでは通常の4ピンサイズの大きさで書かれていますが、大嘘です。

ピンアサインも大嘘です。実測したら上記の通りで、下のマニュアルとは真逆でした。

肝心の端子は、家じゅうを探し回ると、刺さるものを一つ発見しました。
ThinkPad X220の予備用に持っていた、CPUファン端子だ!

調べると、こいつの正式名称は Molex 1.25mm ピッチ PicoBlade コネクタ らしい。
千石電商とマルツの店頭で取り扱いがありました。圧着済みケーブルが欲しかったけど、店員に聞いてみたら「ない」って。

しょうがないので、自分で圧着してみます。
AWG26のケーブルで、中華圧着工具 SN-68Bの一番小さいダイスでかしめる。一見うまく行ったように見えましたが、引っ張ってみると抵抗なくスポッと抜けてしまった…

こんなゴミ工具で圧着は不可能です。素直にX220のCPUファンケーブルを生贄にして移植しました。

やっとの思いでマザボに接続すると、ファンが回り始めました。
次は回転数の取得とPWM制御をと思い、sensors-detectを実行してみると…ファンが出てこない。
どうやら回転数の取得とPWMの制御はBIOSが横取りしていて、OSまで渡してくれないこともあるらしい。何のためにここまで苦労したんだ。







同様な中華N100を検討してるのですが、あまり注目されない機能が必要で当然中華製品だと説明に記載もないので躊躇しています。
ぜひとも実機をお持ちで技術力がありそうな方に確認が取れたらと思いコメントさせていただきます。
具体的に言えばセキュアブート周りに手を加える必要があり、以下の2点の機能が必要です。
1. TPMがちゃんと動作しているか (tpm2-toolsパッケージのtpm2_pcrreadコマンドの結果を貼り付けていただければOKです、SHAハッシュなので機密情報などは含まれてません。もし分かるようでしたら、そのTPMがCPUのfTPMかどうかも教えていただければと思います)
2. UEFIからセキュアブートの鍵を変更できるか (UEFI上にそれっぽいページはありますか?大手マザーだとセキュアブート周りから少し入り組んだところに「Key Management」みたいな感じの項目があったりします。よく分からなければその辺りのスクショを何枚か貼ってもらえればと思います)
いきなり現れて色々要求するのも失礼だとは思うのですが、”可能であれば”で構いませんのでこの2点を検証していただければと思います。
1.
ちゃんとTPMは動いてそうです。あまり詳しくなくて恐縮ですが、fTPMかどうかとは、ディスクリートのものかファームウェアのものかってことですか?多分ディスクリートではないと思いますが、どうなんでしょう…
root@pve01:~# tpm2_pcrread
sha1:
sha256:
0 : 0x8733EBEA81E57097E1CDB516DB7D967FC81ADB672B10A9BEC620A97C5E8C3192
1 : 0x163EA4D63D106F5FBA2A6CDF95803DD91A93F2A593DAB352367F92953528889F
2 : 0x3D458CFE55CC03EA1F443F1562BEEC8DF51C75E14A9FCF9A7234A13F198E7969
3 : 0x3D458CFE55CC03EA1F443F1562BEEC8DF51C75E14A9FCF9A7234A13F198E7969
4 : 0x7C9405F2D0B47BCB1814FA460AC15215E3C49962DA09863C95BF284BD3464605
5 : 0xA3C7518C8D40DFC92E4C49F7062E0763D7CC1578C05BAB9765B8A78D5CC7DC79
6 : 0x3D458CFE55CC03EA1F443F1562BEEC8DF51C75E14A9FCF9A7234A13F198E7969
7 : 0x65CAF8DD1E0EA7A6347B635D2B379C93B9A1351EDC2AFC3ECDA700E534EB3068
8 : 0x0000000000000000000000000000000000000000000000000000000000000000
9 : 0xCD8FB11FA723EB70A149540BB708FE91F8E83BB463AF5FABA634D9BA2DAE7DA6
10: 0x49968A9E00B2E4B5DEB6A234C6D24671AEFF85C769D130CE53BA6CEBE57356CD
11: 0x0000000000000000000000000000000000000000000000000000000000000000
12: 0x4CCDB2E8B7BEFA8F2D66556718E2B4F0665332B13F0CB3FF7819326E069178C2
13: 0x0000000000000000000000000000000000000000000000000000000000000000
14: 0x0000000000000000000000000000000000000000000000000000000000000000
15: 0x0000000000000000000000000000000000000000000000000000000000000000
16: 0x0000000000000000000000000000000000000000000000000000000000000000
17: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
18: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
19: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
20: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
21: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
22: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
23: 0x0000000000000000000000000000000000000000000000000000000000000000
sha384:
sm3_256:
2.

Security から Secure Boot Mode を Custom にすると Key Management の項目が選択できました。 Key Management のスクショを貼ります。多分鍵は変更できそうな感じですよね?
ついでに、Trusted Computing の項目のスクショも貼っておきます。

他に試してほしいことがあればお気軽にどうぞ
検証ありがとうございます!結果から言えば自分の求めている機能は揃っていそうです。
何も説明せず結果だけ貰っていくのも申し訳ないので、少し長くなりますが解説しようと思います。
TPMのPCRについて:
これは起動時のコンピューターの構成を保証するもので、起動時からブートに関わるさまざまなデータ(ROMコードや設定)を測定しハッシュ値を生成/記録します。
このハッシュ値はBitCoinやGitのように、前のハッシュ値+測定対象=新しいハッシュ値という感じで生成されるため、測定対象になっている部分をどこか1ヵ所でも変えると値が変わります。
どのバンク(番号)で何が測定されているのかは次のページでわかりやすくまとまっています: https://uapi-group.org/specifications/specs/linux_tpm_pcr_registry/
これを元に、ハッシュ値が特定の組み合わせ=パーツや設定が特定の構成の時だけTPMに保存した暗号鍵を取り出せる機能があります。
これを使えばパスワード使わずに安全な鍵で暗号化することが可能になります、BitLockerを筆頭にルートパーティションの暗号化で使われる事が多いです。
(構成が変わった時のためにパスワードも設定することがほとんどですが、普段の利用の範囲ではパスワード入力なしに安全にOSが起動できます)
セキュアブート:
ただ、UEFIの仕様上ブートローダーはマザーボードのファームウェアが読めるファイルシステム(たいていはFAT系)に平文で保存される必要があります。
そのため、TPMから受け取った暗号鍵を攻撃者に送信するようなブートローダーに改竄されてしまうとTPMとPCRによる暗号鍵の保護が使い物にならなくなります。
もちろんブートローダーそのものをTPMの測定対象にする事も可能ですが、そうするとブートローダーのバージョンが上がるたびにTPMの鍵が無効になり、手動でのパスワード入力が必要になります。(そもそもパスワードの入力画面を出しているそのブートローダーが安全である保障がない)
そこで、ブートローダーに署名を付けて改竄されていないことを保証しようというのがセキュアブートの趣旨です。
未完成の独自研究なので間違いなどもあるかもしれませんが、セキュアブート+TPMの大雑把な挙動はこんな感じです。
そして、結果に関してですが:
PCRは正常に動作+測定されているように見えます。
sha1はもはや脆弱/sha384とsm3_256はUEFIで無効になっているのでそれぞれ値がないだけで、TPM周りは割と新しい仕様に対応してそうです。(何を使うかは自由に選べるのでマトモな物がどれか1つあれば十分です)
TPMはVendorがINTCになっているのでIntel=fTPMです。オシロスコープの類を当てる余地がないのでfTPMの方が良いと個人的には思います。
セキュアブートの鍵もKey Managementページがあるので変更できますね。
実はこれはUEFI側が対応していなくてもOS側から変更できなくはないのですが、マザーボードによって挙動がマチマチで出来ない機種もあるのでUEFIで対応しているのが一番確実です。
メーカー側でのカスタムをあまりしていないオリジナルに近いAMI BIOSのように見えるので、逆に機種固有の変な挙動に悩む必要はなさそうですね。
大手メーカー製だけど足回りを中心にスペックは完全に見劣りするASRockのN100DC-ITXとで悩んでいましたが、中華N100の方に行って大丈夫そうです。
これで稼働率が低いのに電気と場所だけ無駄に食ってるいくつかのサーバーを置き換えできそうです。
検証していただきありがとうございました。
こちらも大変勉強になりました!お役に立てて幸いです。