この記事の最終更新日: 2025年5月29日
Linuxサーバーのセキュリティ対策として必須の「パケットフィルタリング」。その中心となるのが iptables
と nftables
です。この記事では、これらの違いや基本的な使い方を、初心者向けにやさしく解説します。

パケットフィルタとは?
パケットフィルタとは、ネットワークを流れるデータ(パケット)を、特定のルールに基づいて「通す」または「ブロックする」仕組みです。Linuxではこれをカーネルレベルで制御する機能が組み込まれており、その制御のためのツールが iptables
や nftables
です。
iptablesとは?
特徴
- Linuxで長年使われてきた標準的なパケットフィルタリングツール
- ルールを「テーブル」「チェイン」「ルール」の3段階で構成
- 非常に柔軟で、NAT(アドレス変換)やパケットの記録も可能
テーブルとチェインとは?
- テーブル:フィルタリングの目的ごとに分かれており、主に「filter」「nat」「mangle」などがあります。
- チェイン:処理の流れに応じて分かれており、「INPUT」「OUTPUT」「FORWARD」などが存在します。
主なコマンド例
# すべての設定を表示
sudo iptables -L -n -v
# 80番ポート(HTTP)を許可
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# デフォルトポリシーをDROPに設定
sudo iptables -P INPUT DROP
# 設定の保存(ディストリによって方法が異なる)
sudo iptables-save > /etc/iptables/rules.v4
nftablesとは?
特徴
iptables
に代わる 次世代のパケットフィルタリングツール- より効率的な内部構造と柔軟な文法を採用
- 1つの構成ファイルで複雑な設定も整理可能
- Fedora、Debian、Ubuntuなど多くの最新Linuxディストリビューションで標準採用されつつある
iptablesとの違い
- パフォーマンスとメンテナンス性が向上
- 状態管理やマスカレード処理などが簡潔に記述できる
- テーブルやチェインの構造は似ているが、文法は独自
主なコマンド例
# 現在の設定を確認
sudo nft list ruleset
# 新しいルールセットの作成
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0; }
sudo nft add rule inet filter input tcp dport 80 accept
# 設定の保存
sudo sh -c 'nft list ruleset > /etc/nftables.conf'
iptablesとnftablesの比較
比較項目 | iptables | nftables |
---|---|---|
登場時期 | 古くから利用 | 2014年以降登場(Linux 3.13〜) |
構文 | iptables独自の構文 | より柔軟な独自構文 |
パフォーマンス | 良好だが処理がやや複雑 | より高速・軽量 |
保守性 | スクリプトが複雑化しやすい | 設定が構造化されていて読みやすい |
状態管理の柔軟性 | 限定的 | より強力 |
サポート状況 | 将来的に非推奨になる可能性がある | 各ディストリで標準化が進行中 |
どちらを使うべき?
既存のシステムで iptables が動いているなら:
急いで nftables
に移行する必要はありませんが、将来的なことを見据えて徐々に移行を検討しましょう。
新規システムで導入するなら:
nftables
を使うのが推奨されます。構文が一貫しており、拡張性と可読性に優れています。
まとめ
iptables
は長年使われてきた信頼性あるツールだが、構文が複雑化しやすいnftables
は次世代のフィルタツールとして高機能かつ柔軟な設計- 新しいシステムでは
nftables
の採用が推奨される - どちらを使うにせよ、自身のLinux環境や用途に合った選択をしましょう

大阪のエンジニアが書いているブログ。
コメント