v6プラスのルーターをnftablesで作る

created at
updated at
technology Linux NixOS nftables systemd-networkd MAP-E v6プラス

: ずっと検証してた10Gルーターを遂に本番投入し、たくさんあったルーター類が1台に集約されて綺麗になった
これでやっとフレッツ光2本引きを辞めて一般のご家庭に戻れる…
https://pbs.twimg.com/media/HHUsKf0acAAbTJh.jpg

いいかげんフレッツ光ネクストとフレッツ光クロスの2回線引きをやめたいと思ってミニPCを買い、NixOSを入れてルーターを作ってフレッツ光クロス+マンションの無料インターネットに集約した。
もともとはXG-100NEとNEC UNIVERGE IX2207の2つだったのが、ミニPCに集約されてすっきりした。

速度もいい感じ
  • IPv6
  • /api/assets/8bf868c8b05b8c370f8febaddc4d5e1b681908ab.png
  • IPv4
  • /api/assets/c59c2611647d2118a809158aa1b8637d119fb6e0.png

成果物は→ GitHub - rokoucha/chlorinate: Home router · GitHub

なぜミニPC
10Gbpsを捌けてBGP4+を喋れるルーターがほぼないから。
フレッツ光クロスを契約している以上5Gbps以上は捌けてほしいので、それを念頭にミニPCを探した。
購入したのは Topton 2x10G SFP ソリッドファイアウォールミニPC 3x2.5G LAN インテルi3 N305 N300 N150 DDR5 NVMe Proxmox pfSense OPNsense ホームサーバーホスト - AliExpress 7 で、Intel i3-N305とIntel I-226V(2.5GbE 3ポート)とIntel 82599ES(SFP+ 2ポート)を搭載しているモデル。
なおIntel 82599ESはPCIe Gen 2 x8のチップだが、このミニPCではPCIe Gen 3 x4で配線されているため、絶対10Gbpsは出ないので注意。一応IPv6で8Gbpsぐらい流れているのは見たので、5Gbps以上は捌けているということで目をつぶっている(許してはいない)。

nftablesでMAP-Eのポートをフル活用する
我が家はv6プラスを契約しているので、最初はVPPでMAP-Eを捌こうと考えていたが、CEではなくBRの機能しか実装されていなくて撃沈した。
結局nftablesで捌くことになったのだが、どうせならnftabesだけでポートを有効活用したいということでAIと試行錯誤をし、jhashを活用してnftablesのみでほぼEIM動作をするようにできた。
これがかなり優秀で、NATタイプはBになるしいわゆるニチバンベンチも余裕だし性能も出るしでいい事ずくしだった。

今後の展望
BGP4+が喋れるようになったので、家のKubernetesクラスタでLBを導入したい。
既にコントロールプレーンを3台の構成にしてあるので、あとは設定してくだけのはず。
動作や性能には十分満足しているので、BGP4+でKubernetesクラスタを強化したり、DNSをゴニョゴニョしたり、pingとか速度とかを計測したりと、細かいところを色々やっていきたい。