1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

firewalldとnftablesって何が違うの?

Last updated at Posted at 2025-09-06

RHEL8/9における firewalld と nftables の関係を徹底解説

RHEL(Red Hat Enterprise Linux)を触り始めると、必ず出会うのが「ファイアウォール設定」です。
しかし、RHEL8 以降の環境では

  • iptables → 非推奨
  • nftables → 新しい標準エンジン
  • firewalld → 管理ツールとして利用推奨

と立場が入り乱れ、よくこうなります。

「え?iptables はもう使っちゃダメなの?
firewalld と nftables って結局どっちを使えばいいの??」

…はい、混乱しますよね。
この記事では、初心者が理解しやすく、管理者が現場で迷わないように
「firewalld」と「nftables」の関係を 図・例・比喩を交えて わかりやすく解説します。

ざっくり関係性のたとえ話

  • nftables = 自動車の「エンジン」
  • firewalld = 運転者が使う「ハンドル・アクセル・ブレーキ」

車を動かすのはエンジン(nftables)ですが、
私たちは直接エンジンをいじらず、ハンドルやアクセルを操作します。
それが firewalld です。

つまり、

  • 普通の人は firewalld を使う(UIで楽に操作)
  • エンジニア気質の人は nftables を直接いじる(細かくチューニング可能)

という住み分けになります。

firewalld とは?

定義

RHEL8/9 で推奨されている ファイアウォール管理ツール です。
内部では nftables を利用しますが、ユーザーは firewall-cmd コマンド を使うだけで操作可能。

特徴まとめ

  • ゾーン(Zone)
    ネットワークインターフェースや IP を「家庭用Wi-Fi」「社内LAN」「外部ネットワーク」みたいに分類できる。
  • サービス単位で許可
    「http を開ける」「ssh を開ける」といった直感的な設定が可能。
  • 即時反映 or 永続化
    --permanent を付けるかどうかで、設定が再起動後に残るかが変わる。
  • iptables 互換モードあり
    古いシステムからの移行もしやすい。

コマンド例(覚えると便利なやつ)

# HTTPサービスを許可(永続化なし)
firewall-cmd --add-service=http

# HTTPサービスを許可(永続化あり)
firewall-cmd --permanent --add-service=http

# 設定を反映
firewall-cmd --reload

# 現在の設定を確認
firewall-cmd --list-all

💡 ポイント:
「ゾーン」という概念を理解するとグッと使いやすくなります。
例えば「社内LANではssh許可、外部WANではssh禁止」といった細かい管理が可能です。

nftables とは?

定義

iptables の後継として登場した、新世代のパケットフィルタリングフレームワーク。
Linux カーネル 3.13 以降に搭載され、RHEL8 では標準のファイアウォールエンジンです。

特徴まとめ

  • シンプル:ルール記述がわかりやすい
  • 統一性:IPv4 と IPv6 をまとめて扱える
  • パフォーマンス:ルールをまとめてコンパイルして効率的
  • 柔軟性:スクリプト記法で複雑な条件にも対応

コマンド例(ちょっとハードル高め)

# ルールを表示
nft list ruleset

# HTTP (80番ポート) を許可
nft add rule inet filter input tcp dport 80 accept

# SSH (22番ポート) を許可
nft add rule inet filter input tcp dport 22 accept

# 現在のルールを保存
nft list ruleset > /etc/nftables.conf

💡 ポイント:
nftables を直接触るのは 職人向け
ただし「firewalld では表現できないルールを作りたい」ときには必須になります。

firewalld と nftables の関係図

ユーザー操作(人間)
 ↓
+------------------+
| firewalld | ← 管理ツール(UI / ラッパー)
| (firewall-cmd) |
+------------------+
 ↓
+------------------+
| nftables | ← 実エンジン(ルール適用)
| (nft コマンド) |
+------------------+
 ↓
+------------------+
| Linux Kernel PF | ← カーネルでのパケット制御
+------------------+

これで「firewalld は窓口、nftables は実行役」という構造が理解しやすくなるはずです。

どちらを使うべき?(実運用での指針)

利用シーン firewalld を使うべきケース nftables を使うべきケース
日常運用 ssh/http などの基本ポート開放
インターフェースごとのゾーン管理
サービス単位の制御
ルールを細かく調整したい
firewalld では書けない複雑条件
高度要件 IPv4/IPv6 混在最適化
カスタムチェーン設計
パケットの詳細なマッチ条件
管理者スキル 初学者でも扱いやすい ネットワークに詳しい上級者向け
パフォーマンス 通常業務には十分 超高負荷環境での最適化

💡 基本スタンス

  • まずは firewalld を使う
  • 困ったら nftables 直操作

まとめ

  • RHEL8/9 では iptables は過去のもの
  • nftables がエンジン、firewalld が運転席
  • 日常業務は firewalld が最適(直感的・簡単・安全)
  • 特殊要件や細かいチューニングが必要な場合のみ nftables を利用
  • 現場での実践的な考え方は 「まず firewalld、それで不足なら nftables」

おまけ:初心者がやりがちな失敗集

  1. firewall-cmd --add-service=http だけで満足して再起動したら消えた
    --permanent を忘れない!

  2. firewalld と nftables を両方いじってルールがごちゃごちゃに
    → どちらかに統一する。基本は firewalld で統一。

  3. iptables コマンドを使ってルールが効かない
    → RHEL8/9 では iptables は互換レイヤー。基本使わない方がよい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?