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ピンに変換する基板とかもあるけど…
ルーターとしても使いたいので、複数NICがついてるN100ミニPCを探しました。
アリエクとかでちらほら2万円ぐらいでありますね。最安はタオバオのベアボーンで15000円ぐらいのやつでした。I226-Vですが2.5GbEが4ポートついてこの値段はクソ安い。国内Amazonでは多分売ってないです。
I225/I226-Vはバグが多くてヤバイらしいですが、I225よりはマシだろうということで気にしないことにします😅
本体は14832円です。これ単体の送料は73元で大体1500円ぐらいでした。
タオバオは複数の荷物を中国でまとめてから日本に送ってくれます。追加で何か買っても0.5kgで9元増えるだけなので、まとめるとお得です。
同じ形の4ポートついてるミニPCで、もっと安いJ1900, J4125, N5105とかのバージョンもあります。
中身はこんな感じ。DDR5 SO-DIMM, M.2 NVMe, Mini PCIe スロットがあります。
おまけにSATAも1つ。
安いN100ミニPCだとDDR4なものが多いですが、これはDDR5で嬉しい。
DDR5からOn-die ECCが標準で実装されています。ECCが標準でついてるならサーバー用に最適だと思ってたらどうやらそういうわけではないらしい。DDR5は製造上エラーレートが高めなので仕方なくDRAM内だけエラー訂正するだけで、いわゆる普通のECCはメモリコントローラとDRAM間のビット化け対策なので違うものらしいです。
DDR5は相性が厳しいという噂があるのでメモリは慎重に選びます。
ちょうどこのサムスンのメモリで動かしてる人がいたので、1900円で同じものを買いました。
ストレージは余ってた Optane SSD 16GB を使います。高耐久ですが需要もないので1000円もしないでそこら辺に転がってます。
Proxmoxと数個VM置くだけなら16GBで十分。
上面にCPU部分が接触していてほんのり暖かいので、ヒートシンクを乗せてみました。
Proxmoxをインストール。16GBを有効に使ってほしいので、ファイルシステムはZFSを選択しました。
Proxmox環境でpfSenseのインストールはここを参考に。
https://docs.netgate.com/pfsense/en/latest/recipes/virtualize-proxmox-ve.html
スピードテストを走らせたときの負荷を見てみます。
4コア割り当てで、2Gbps通信時でCPU使用率は大体50%ですね。まあまあ余裕あります。
不評なI226-Vですが、1日動かしてもdmesg見た感じ勝手にリンクダウンしたりはしてないので多分大丈夫そう。
おまけ
SATAポート余らせとくのももったいないですが、SATAケーブルを外に引き出す穴はないです。一応金属の蓋は放熱板になってるので、オープンにするのはちょっと。
この空間に収まりそうなのはmSATAのSSDしかありません。無理やり入れたら超ギリギリ入りました。断線しそうですが。(このケーブルは付属してきました)
おまけ2
M.2からPCIeを引き出し、PCI変換基板に繋いだPT2が使えるか試してみました。
一応認識はしました。ドライバ入れるのがめんどくさかったので録画は確認してません…ごめんなさい
なお、PCIの変換基板に繋ぐSATAの補助電源は、3.3Vがついてるものを使わないと録画が失敗すると聞いたことがあります。このミニPCからは3.3Vを取ってこれないので、5Vを降圧して3.3Vを用意するか外部から持ってくる必要があるかもしれません。
同様な中華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の方に行って大丈夫そうです。
これで稼働率が低いのに電気と場所だけ無駄に食ってるいくつかのサーバーを置き換えできそうです。
検証していただきありがとうございました。
こちらも大変勉強になりました!お役に立てて幸いです。