nftablesとiptablesの違いを初心者向けにわかりやすく解説

ITインフラ
この記事は約10分で読めます。

この記事の最終更新日: 2026年5月27日


Linuxサーバーのファイアウォール設定を調べていると、よく出てくるのが iptablesnftables です。

どちらも通信を制御するための仕組みですが、

「iptablesとnftablesは何が違うの?」
「iptablesはもう使わない方がいいの?」
「nftablesに移行しないといけないの?」

と迷う人も多いと思います。

結論から言うと、iptablesは従来から使われてきたLinuxのファイアウォール操作ツールで、nftablesはその後継にあたる新しい仕組みです。Netfilter公式でも、nftablesは {ip,ip6,arp,eb}tables を置き換えるものとして説明されています。(Netfilter)

この記事では、Linux初心者向けに nftablesとiptablesの違いをわかりやすく解説します。


iptablesとは?

iptables は、Linuxでパケットフィルタリング、つまり通信の許可・拒否・転送などを設定するために使われてきたコマンドです。

たとえば、以下のような制御ができます。

  • SSHの22番ポートだけ許可する
  • 特定のIPアドレスからのアクセスを拒否する
  • Webサーバー用に80番・443番ポートを開ける
  • NATやポートフォワーディングを設定する

iptablesとip6tablesは、Linuxカーネル内のIPv4・IPv6パケットフィルタルールを設定・管理・確認するためのツールとして説明されています。(man7.org)

簡単に言うと、iptablesは 「Linuxサーバーの通信ルールを設定するための昔からある定番ツール」 です。


nftablesとは?

nftables は、iptablesの後継として登場した新しいパケットフィルタリングの仕組みです。

nftablesでは、主に nft コマンドを使ってルールを設定します。公式マニュアルでも、nft はnftablesフレームワークでパケットフィルタリングや分類ルールを設定・管理・確認するためのコマンドと説明されています。(Netfilter)

iptablesでは、IPv4用の iptables、IPv6用の ip6tables、ARP用の arptables、ブリッジ用の ebtables など、用途ごとにツールが分かれていました。

一方、nftablesではこれらをより統一的に扱えるようになっています。

つまりnftablesは、ざっくり言えば 「iptablesより新しく、より整理されたLinuxファイアウォールの仕組み」 です。


nftablesとiptablesの主な違い

nftablesとiptablesの違いをまとめると、以下のようになります。

比較項目iptablesnftables
登場時期以前から使われている従来方式iptablesの後継として登場
主なコマンドiptables, ip6tablesnft
IPv4 / IPv6コマンドが分かれる統一的に扱いやすい
ルールの書き方比較的固定的柔軟に書ける
管理しやすさルールが増えると複雑になりやすいルールを整理しやすい
現在の位置づけ互換性のために残っていることが多い今後の標準的な方向性

初心者向けに一言で言うなら、iptablesは旧方式、nftablesは新方式です。

ただし、iptablesがすぐに完全に使えなくなるという意味ではありません。既存のサーバーや古い手順書では、今でもiptablesの設定例が多く見つかります。


違い1:使うコマンドが違う

iptablesでは、次のように書きます。

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

これは、TCPの22番ポート、つまりSSH接続を許可する例です。

一方、nftablesでは次のような書き方になります。

nft add rule inet filter input tcp dport 22 accept

同じようにSSHを許可するルールでも、コマンドの書き方が変わります。

iptablesでは iptables コマンドを使い、nftablesでは nft コマンドを使う、と覚えるとわかりやすいです。


違い2:iptablesはツールが分かれていた

iptables系では、対象によってコマンドが分かれていました。

たとえば、

iptables
ip6tables
arptables
ebtables

のように、IPv4、IPv6、ARP、ブリッジなどで別々のツールを使うことがありました。

nftablesでは、これらをより統一的に扱えるように設計されています。Netfilter公式でも、nftablesは従来の {ip,ip6,arp,eb}tables を置き換えるものとして説明されています。(Netfilter)

この点が、nftablesが「iptablesの後継」と言われる大きな理由です。


違い3:nftablesはルールを整理しやすい

iptablesでは、ルールが増えてくると管理が難しくなりがちです。

たとえば、特定の複数IPを許可したい場合、iptablesでは似たようなルールを何行も書くことがあります。

iptables -A INPUT -s 192.168.1.10 -j ACCEPT
iptables -A INPUT -s 192.168.1.11 -j ACCEPT
iptables -A INPUT -s 192.168.1.12 -j ACCEPT

nftablesでは、setという仕組みを使って、複数の値をまとめて扱いやすくなっています。

nft add set inet filter allowed_ips { type ipv4_addr\; }
nft add element inet filter allowed_ips { 192.168.1.10, 192.168.1.11, 192.168.1.12 }

このように、ルールを構造化しやすいのがnftablesの特徴です。

初心者のうちは少し難しく見えますが、実務ではルールが増えたときにnftablesの方が整理しやすくなります。


違い4:nftablesにはtable・chain・ruleがある

nftablesを理解するうえで重要なのが、以下の3つです。

  • table
  • chain
  • rule

nftables公式のクイックリファレンスでは、tableはchainを入れるコンテナ、chainはruleを入れるコンテナ、ruleはchain内に設定されるアクションとして説明されています。(wiki.nftables.org)

かなり簡単に言うと、次のようなイメージです。

table
└── chain
    └── rule

たとえば、nftablesでは次のような構造で設定します。

table inet filter {
    chain input {
        type filter hook input priority 0;
        policy drop;

        tcp dport 22 accept
        tcp dport 80 accept
        tcp dport 443 accept
    }
}

この例では、

  • table inet filter がルール全体の入れ物
  • chain input が受信パケットを処理する場所
  • tcp dport 22 accept などが具体的なルール

です。

iptablesにもtableやchainの考え方はありますが、nftablesではより明示的に構造化して書く感覚があります。


違い5:iptablesコマンドでも中身がnftablesの場合がある

ここが少しややこしいポイントです。

最近のLinux環境では、iptables コマンドを使っていても、内部的にはnftablesの仕組みを使っている場合があります。

これは iptables-nft という互換レイヤーによるものです。xtables-nft のマニュアルでは、iptables-nftはnftables APIを使うiptablesのバージョンであり、iptables系からnftablesへ移行するためのツール群として説明されています。(man7.org)

つまり、見た目はiptablesコマンドでも、裏側ではnftablesを使っていることがあります。

確認するには、次のコマンドを使います。

iptables --version

表示例として、次のように出ることがあります。

iptables v1.8.x (nf_tables)

この場合、iptablesコマンドを使っていますが、バックエンドはnftablesです。

一方で、次のように表示されることもあります。

iptables v1.8.x (legacy)

この場合は、従来のiptablesバックエンドを使っています。


初心者はiptablesとnftablesのどちらを覚えるべき?

これから新しくLinuxのファイアウォールを学ぶなら、基本的には nftablesを優先して覚えるのがおすすめです。

理由は、nftablesがiptablesの後継として位置づけられているからです。

ただし、iptablesを完全に無視してよいわけではありません。

実務では、まだiptablesの設定例や古いサーバーが残っていることがあります。そのため、最低限はiptablesの読み方も知っておくと役に立ちます。

おすすめの学習順は次の通りです。

1. まずファイアウォールの基本を理解する
2. iptablesの基本概念を軽く知る
3. 新しく設定する場合はnftablesを学ぶ
4. 既存環境では、そのサーバーがiptablesなのかnftablesなのか確認する

特に業務でLinuxサーバーを触る場合は、いきなり設定を変更するのではなく、まず現在の状態を確認することが重要です。


よく使う確認コマンド

iptablesのルールを確認するには、次のコマンドを使います。

iptables -L -n -v

nftablesのルールを確認するには、次のコマンドを使います。

nft list ruleset

現在の環境がiptables-nftかiptables-legacyかを確認するには、次のコマンドを使います。

iptables --version

表示に nf_tables と出れば、nftablesバックエンドを使っています。

iptables v1.8.x (nf_tables)

表示に legacy と出れば、従来のiptablesバックエンドです。

iptables v1.8.x (legacy)


iptablesからnftablesへ移行するときの注意点

iptablesからnftablesへ移行するときは、単純にコマンドを書き換えるだけでは済まない場合があります。

特に注意したいのは、以下の点です。

1. 既存ルールを必ず確認する

まずは現在のiptablesルールを確認します。

iptables-save

nftables側は次のコマンドで確認します。

nft list ruleset

既存のルールを把握せずに変更すると、SSH接続が切れたり、Webサーバーにアクセスできなくなったりする可能性があります。

2. iptablesとnftablesを混在させない

iptables-legacy、iptables-nft、nftablesが混在すると、どのルールが実際に効いているのか分かりにくくなります。

特に初心者は、1つのサーバー内でiptablesとnftablesを中途半端に混ぜない方が安全です。

3. リモートサーバーでは慎重に作業する

VPSやクラウドサーバーでファイアウォール設定を変更するときは、SSHの許可設定を間違えるとログインできなくなることがあります。

最低限、SSHポートを許可してから設定を反映しましょう。

nft add rule inet filter input tcp dport 22 accept

また、クラウド側のセキュリティグループやファイアウォール機能がある場合は、Linux内のnftablesだけでなく、クラウド側の設定も確認する必要があります。


nftablesとiptablesの関係をたとえるなら

初心者向けにたとえるなら、iptablesとnftablesの関係は、古い設定ツールと新しい設定ツールの関係です。

たとえば、次のようなイメージです。

iptables = 古くから使われている設定方法
nftables = 新しく整理された設定方法

どちらもLinuxの通信制御に関係していますが、nftablesの方が新しい設計で、より柔軟にルールを管理できます。

ただし、古い記事・古いサーバー・既存システムではiptablesが出てくることも多いです。

そのため、

新しく覚えるなら nftables
既存環境を読むなら iptables も必要

と考えるとわかりやすいです。


まとめ

nftablesとiptablesの違いをまとめると、以下の通りです。

  • iptablesは、従来から使われてきたLinuxのファイアウォール設定ツール
  • nftablesは、iptablesの後継として登場した新しい仕組み
  • iptablesでは、IPv4・IPv6などでコマンドが分かれていた
  • nftablesでは、nft コマンドでより統一的に管理できる
  • 最近の環境では、iptablesコマンドを使っていても内部的にはnftablesの場合がある
  • 新しく学ぶならnftablesを優先するのがおすすめ
  • 既存サーバーを扱うならiptablesの基本も知っておくべき

初心者がまず押さえるべきポイントは、iptablesは旧方式、nftablesは新方式という理解です。

ただし、実務ではiptablesの知識がまだ役に立つ場面も多いため、nftablesだけを覚えるのではなく、iptablesとの関係もセットで理解しておくと安心です。

Linuxサーバーのファイアウォール設定を安全に扱うためには、まず現在の環境がiptablesなのか、nftablesなのか、あるいはiptables-nftなのかを確認するところから始めましょう。

コメント

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