Fedora Serverをプロ仕様のルーターに:NFTablesとKea DHCPによる最適化

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

なぜFedora Serverをルーターとして使うのか?

ISP提供のルーターは、通常、基本的なニーズを満たすには十分ですが、Homelab(ホームラボ)の構築を始めたり、Plexメディアサーバーやゲームサーバーなどを稼働させたりすると、すぐに力不足を感じるようになります。ネットワークの遅延が発生したり、高負荷時にルーターがダウンしたり、ファイアウォールの詳細なカスタマイズができずにストレスを感じることもあるでしょう。

鍵となるのは「コントロール権」です。Fedora Serverで自作ルーターを構築すれば、データフローを完全に掌握できます。私はFedoraをメインOSとして2年以上使用していますが、最大のメリットはパッケージの更新が非常に速いことです。NFTablesやKea DHCPといったコア技術は、このディストリビューションでは常に最新かつ安定したバージョンが提供されています。

2つのネットワークポートを備えたMini PC(Intel N100やJ4125チップ搭載モデルなど)を活用するのは素晴らしい選択肢です。パフォーマンスが最適化されるだけでなく、Linuxがシステムを通過する各パケットをどのように処理しているかを深く理解するのにも役立ちます。

最強のコンビ:NFTablesとKea DHCP

ネットワークの骨組みを構築するために、主に2つのコンポーネントに焦点を当てます:

  • NFTables: iptablesの現代的な後継です。パケットを分類し、家庭内のデバイスがインターネットに接続できるようにNAT(ネットワークアドレス変換)を実行します。NFTablesは旧バージョンよりも処理が速く、構文がシンプルで、CPUリソースの消費も大幅に抑えられています。
  • Kea DHCP: ISC(Internet Systems Consortium)によって開発された、伝説的なISC DHCPサーバーに代わる新標準です。JSON形式の構造、モジュール設計をサポートしており、IPアドレスの割り当て速度が非常に高速です。家庭内ネットワークから企業ネットワークまで幅広く適応します。

構成シナリオ:ネットワークポート enp1s0 (WAN) をブリッジモードに設定したモデムに接続します。ポート enp2s0 (LAN) は、内部デバイスにネットワークを提供するためにスイッチに接続します。

ステップ1:ネットワークインターフェースの設定

nmcliコマンドを使用して、物理ポートを正しく特定します。LANポートに固定IPを割り当て、ネットワーク全体のゲートウェイとして機能させます。

# 内部ポート(LAN)に固定IPを設定
nmcli con mod enp2s0 ipv4.addresses 192.168.10.1/24 ipv4.method manual
nmcli con up enp2s0

通常、WANポートはISPから直接IPを取得します。必要に応じて、このポートでPPPoEを設定することも可能です。

ステップ2:データ経路の確保(IPフォワーディング)

デフォルトでは、Linuxはネットワークポート間のパケット転送をブロックします。コンピュータをルーターとして機能させるには、フォワーディング機能を有効にする必要があります。

# 再起動後も設定を有効にする
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/90-router.conf
sysctl -p /etc/sysctl.d/90-router.conf

ステップ3:NFTablesによるファイアウォールの構築

純粋なルーターとしてはfirewalldは重すぎるため、今回は使いません。nftablesを直接使用することで、システムの遅延を最小限に抑えることができます。設定ファイル /etc/sysconfig/nftables.conf を作成しましょう。

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        iifname "lo" accept
        ct state established,related accept
        iifname "enp2s0" accept  # 内部ネットワークを信頼
        tcp dport 22 accept       # 管理用SSHポートを開放
    }
    chain forward {
        type filter hook forward priority 0; policy drop;
        iifname "enp2s0" oifname "enp1s0" accept
        iifname "enp1s0" oifname "enp2s0" ct state established,related accept
    }
}
table ip nat {
    chain postrouting {
        type nat hook postrouting priority 100; policy accept;
        oifname "enp1s0" masquerade
    }
}

次のコマンドを実行してファイアウォールを有効にします:

systemctl enable --now nftables

ステップ4:Kea DHCPによる自動IP割り当て

ローカルIP範囲をプロフェッショナルに管理するために、Kea DHCPをインストールします:

dnf install kea -y

/etc/kea/kea-dhcp4.conf ファイルを編集します。以下は、.100 から .200 までのIPを割り当てるサンプル設定です:

{
"Dhcp4": {
    "interfaces-config": { "interfaces": [ "enp2s0" ] },
    "lease-database": {
        "type": "memfile",
        "persist": true,
        "name": "/var/lib/kea/kea-leases4.csv"
    },
    "subnet4": [
        {
            "subnet": "192.168.10.0/24",
            "pools": [ { "pool": "192.168.10.100 - 192.168.10.200" } ],
            "option-data": [
                { "name": "routers", "data": "192.168.10.1" },
                { "name": "domain-name-servers", "data": "1.1.1.1, 8.8.8.8" }
            ]
        }
    ]
}
}

サービスを有効にしてIPの割り当てを開始します:

systemctl enable --now kea-dhcp4

成果の確認

ノートパソコンをLANポートに接続してみてください。パソコンがすぐに 192.168.10.x の範囲のIPを取得し、快適にウェブブラウジングができれば成功です。Fedoraを実行しているMini PCなら、発熱を抑えつつ1Gbpsの帯域幅を容易に処理できます。

実際のトラフィックは nft list ruleset コマンドで監視できます。インターネットに接続できないデバイスがある場合は、NATテーブルの masquerade セクションをよく確認してください。そこが最も一般的な設定ミスの原因になります。

おわりに

ルーターの自作は単なる趣味ではなく、個人のネットワークインフラを最適化するための手段です。堅牢なFedoraをベースに、このルーター上に広告ブロックDNS(Pi-hole)やVPNサーバーを追加でインストールすることも可能です。構築の成功を祈っています。安定したネットワーク環境を楽しみましょう!

Share: