【Stream9ユーザーが送る】firewall-cmd派だった管理人がUbuntuのufwとnftablesに触れて感じた直感性の違い

この記事は約7分で読めます。
この記事が役立ったらブックマーク! あとで読み返したり、環境構築時のリファレンスに活用できます
B! はてなブックマークに追加

長年CentOS(RHEL系)でサーバーを触ってきた管理人ですが、WordOps導入に伴いUbuntuサーバーへ乗り換えました。
結論から言うと、「ポート開放の作法(コマンド)がまるで違う」ので、CentOS感覚で firewall-cmd の呪文を打とうとして一瞬で手が止まります。

今回は、CentOS Stream 9の firewalld によるゾーン管理に慣れきった頭でUbuntuの ufwnftables を触ったときのカルチャーショックと、設定コマンドの違いについてメモしておきます。

💡 そもそもファイヤーウォールの「フロントエンド」が違う!

CentOS(RHEL系)もUbuntu(Debian系)も、Linuxカーネルレベルでパケットをフィルタリングしている根本の仕組みはパケットフィルタリング機構(nftables / iptables)で共通です。
しかし、人間が操作するための「設定ツール(フロントエンド)」が完全に異なります。

  • CentOS(RHEL系)の標準:
    firewalld「zone(public, internal, trustedなど)」という概念でインターフェースやIPを切り分け、厳格かつ体系的に管理するエンタープライズ指向スタイル。
  • Ubuntu(Debian系)の標準:
    ufw (Uncomplicated Firewall)名前の通り「複雑じゃない(シンプル)」なファイヤーウォール。ゾーンなどの難しい概念を削ぎ落とし、とにかくシンプル&直感的にポートを開閉するスタイル。

CentOSで習慣になっていた「ゾーンにサービスを追加して、--permanent をつけて、--reload する」というあのステップが、Ubuntuでは激変します。

🔍 コマンド操作の徹底対比

日常的に使う主要操作のコマンドを比較してみましょう。

操作内容CentOS Stream 9 (firewalld)Ubuntu (ufw)
有効化sudo systemctl start firewalldsudo ufw enable
状態確認sudo firewall-cmd --statesudo ufw status (または status verbose)
HTTP(80)開放sudo firewall-cmd --add-service=http --permanentsudo ufw allow 80/tcp (または allow http)
HTTPS(443)開放sudo firewall-cmd --add-service=https --permanentsudo ufw allow 443/tcp
設定の反映sudo firewall-cmd --reload不要(打った瞬間に即時反映)
ルール削除sudo firewall-cmd --remove-service=http --permanentsudo ufw delete allow 80/tcp

🛠️ CentOSユーザーがUbuntuの ufw に感動するポイント

1. 「--permanent と --reload の二度手間」がない!

CentOS時代、一番よくやったうっかりミスがこれです。

Bash
# CentOSでやりがちだったミス:--permanent を忘れて再起動で設定が消える
sudo firewall-cmd --add-port=8080/tcp
# あるいは --reload を忘れて「ポート開けたのに繋がらない!」と焦る
Bash
# Common mistake on CentOS: Forgetting --permanent causes settings to disappear upon reboot
sudo firewall-cmd --add-port=8080/tcp
# Or forgetting --reload and wondering why the port is still blocked despite adding it

Ubuntuの ufw は、コマンドを叩いた瞬間に永久保存&即時反映されます。リロードの打ち忘れで無駄なトラブルシューティングをする時間がゼロになりました。

2. ルール削除が直感的(番号指定削除)

CentOSで複雑に組み込んだルールを消すとき、パラメータを正確に打ち直す必要があって地味に面倒でした。
Ubuntuの ufw では、ルールに番号を振って消すことができます。

Bash
# 1. ルールを番号付きで表示
sudo ufw status numbered

# [ 1] 80/tcp                     ALLOW IN    Anywhere
# [ 2] 443/tcp                    ALLOW IN    Anywhere

# 2. 2番のルールを削除
sudo ufw delete 2
Bash
# 1. Display rules with line numbers
sudo ufw status numbered

# [ 1] 80/tcp                      ALLOW IN    Anywhere
# [ 2] 443/tcp                     ALLOW IN    Anywhere

# 2. Delete rule number 2
sudo ufw delete 2

この「番号指定で消せる」仕様は、現場で作業しているときにめちゃくちゃ精神衛生上良いです。

⚠️ 一応知っておきたい:裏で動いている nftables の話

「Ubuntuは ufw で楽ちん!」……と言いましたが、実は近年のUbuntu(22.04や24.04など)の内部では、RHEL9系と同様にパケットフィルタの本体として nftables が動いています。
ufw はあくまで nftables(または iptables)のルールを裏で人間用に翻訳して書き換えてくれているツールです。
そのため、もし低レイヤーなネットワーク調査をする場合は、UbuntuでもCentOS同様に sudo nft list ruleset コマンドを叩けば、裏で組み上がった生ルールを確認することができます。

📝 まとめ:シンプルなWebサーバー運用なら ufw の爆速感はクセになる!

今回は、CentOS Stream 9からUbuntuへ移行して感じた「ファイヤーウォール設定の思想の違い」について解説しました。

  • CentOSは「zoneでしっかり分類管理する」カッチリ型(firewall-cmd
  • Ubuntuは「開けたいポートをサクッと開ける」爆速直感型(ufw
  • ufw--reload--permanent が不要で即時反映される
  • ルール削除は ufw status numbered からの番号消去が超絶便利

複数ネットワークカードを挿してLAN側・WAN側で厳格にゾーンを分けるようなエンタープライズ用途なら firewalld の恩恵がありますが、VPSや単体サーバーでWebサイトを動かす程度なら、Ubuntuの ufw の圧倒的な手軽さは一度味わうと病みつきになりますw

次回は、さらにパーミッション問題でCentOSユーザーを悩ませてきたアイツに関するお話、『SELinuxの呪文から解放?Ubuntu標準「AppArmor」とアクセス制御のハマりどころ』についてメモしていきます。お楽しみに!

コメント

タイトルとURLをコピーしました