nftablesとは?iptablesとの違いからLinuxファイアウォールの基本まで解説

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

この記事の最終更新日: 2026年6月21日


Linuxサーバーのセキュリティ設定を調べていると、nftablesiptables という言葉をよく見かけます。

どちらもLinuxの通信制御、つまりファイアウォール設定に関係する仕組みです。

ただ、初心者にとっては、

「nftablesとは何?」
「iptablesとは何が違うの?」
「Linuxファイアウォールって、そもそも何をしているの?」

という疑問が出てくると思います。

結論から言うと、nftablesはLinuxでパケットフィルタリングやNATなどを行うための新しい仕組みで、iptablesの後継にあたる存在です。Netfilter公式でも、nftablesは従来の iptablesip6tablesarptablesebtables を置き換えるものとして説明されています。(Netfilter)

この記事では、nftablesの基本、iptablesとの違い、そしてLinuxファイアウォールの基礎を初心者向けに解説します。


nftablesとは?

nftables は、Linuxで通信を制御するためのパケットフィルタリング機能です。

もう少し具体的に言うと、サーバーに入ってくる通信、サーバーから出ていく通信、サーバーを通過する通信などに対して、

  • 許可する
  • 拒否する
  • 破棄する
  • 転送する
  • NATする
  • ログに記録する

といった制御を行うための仕組みです。

nftablesでは、主に nft コマンドを使ってルールを設定・確認します。nft は、Linuxカーネル内のパケットフィルタリングや分類ルールを設定・管理・確認するためのコマンドとして説明されています。(Netfilter)

たとえば、SSHの22番ポートを許可するルールは、nftablesでは次のように書けます。

nft add rule inet filter input tcp dport 22 accept

この例では、TCPの22番ポート宛ての通信を許可しています。


そもそもLinuxファイアウォールとは?

Linuxファイアウォールとは、Linuxサーバーに対する通信を制御する仕組みです。

たとえば、Webサーバーを公開する場合、外部からのHTTPやHTTPS通信は許可したいですが、不要なポートへのアクセスは拒否したいはずです。

代表的には、以下のような制御を行います。

制御内容
特定ポートを許可80番、443番、22番など
特定IPを拒否怪しいIPからのアクセスを遮断
通信方向を制御入ってくる通信、出ていく通信、転送通信
NATを設定プライベートIPとグローバルIPの変換
ログを記録拒否した通信を調査用に保存

ファイアウォールは、どの通信を通して、どの通信を止めるかを決める門番のようなものです。

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

インターネット
    ↓
[ ファイアウォール ]
    ↓
Linuxサーバー

ファイアウォールの設定が甘いと、不要なポートが外部に公開されてしまいます。逆に、設定を間違えると、SSHでサーバーにログインできなくなることもあります。


iptablesとは?

iptables は、nftablesより前から使われてきたLinuxのファイアウォール管理ツールです。

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

iptablesでは、たとえばSSHを許可するルールを次のように書きます。

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

iptablesは長年使われてきたため、古い記事や既存サーバーの設定では今でもよく見かけます。

ただし、現在ではiptablesの後継としてnftablesが使われる場面が増えています。


nftablesとiptablesの関係

nftablesとiptablesの関係を簡単に言うと、次のようになります。

iptables = 従来のファイアウォール管理ツール
nftables = iptables系ツールの後継となる新しい仕組み

Netfilter公式では、nftablesは従来の {ip,ip6,arp,eb}tables を置き換えるものとして説明されています。つまり、nftablesは単にiptablesの別名ではなく、より新しい設計のパケット分類・フィルタリングの仕組みです。(Netfilter)

ただし、iptablesがすぐに完全に使えなくなるという意味ではありません。既存環境、古い手順書、レガシーなサーバーでは、iptablesの知識が必要になる場面もあります。

そのため、実務的には次のように考えるとわかりやすいです。

新しく学ぶなら nftables を優先
既存環境を読むなら iptables も知っておく


nftablesとiptablesの主な違い

nftablesとiptablesの違いを表にすると、次のようになります。

比較項目iptablesnftables
位置づけ従来の仕組みiptables系の後継
主なコマンドiptables, ip6tablesnft
IPv4 / IPv6コマンドが分かれるinet familyでまとめやすい
ルール管理ルールが増えると複雑になりやすいtable / chain / ruleで整理しやすい
複数条件の扱い似たルールが増えやすいsetやmapでまとめやすい
学習優先度既存環境の理解に必要新規学習で優先したい

初心者向けにかなり単純化すると、iptablesは旧方式、nftablesは新方式です。

ただし、iptablesにもtableやchainの概念はあります。そのため、完全に別物というよりは、Linuxファイアウォールの考え方を引き継ぎつつ、より整理しやすくなったものがnftablesだと考えるとよいです。


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

iptablesでは、主に iptables コマンドを使います。

iptables -L -n -v

IPv6の場合は ip6tables を使います。

ip6tables -L -n -v

一方、nftablesでは nft コマンドを使います。

nft list ruleset

nftablesでは、IPv4、IPv6、ARP、ブリッジなどの複数のネットワークレベルをfamilyとして扱い、それらを単一の nft ツールで扱えるように設計されています。(wiki.nftables.org)

この点は、iptables系ツールとの大きな違いです。


違い2:IPv4とIPv6をまとめて扱いやすい

iptablesでは、IPv4とIPv6でコマンドが分かれます。

iptables   # IPv4
ip6tables  # IPv6

そのため、IPv4とIPv6の両方に対応しようとすると、似たようなルールを別々に管理する必要がありました。

nftablesでは、inet familyを使うことで、IPv4とIPv6をまとめて扱いやすくなります。

たとえば、次のような構成です。

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
    }
}

このように、IPv4とIPv6を意識しながらも、iptablesより統一的に管理しやすいのがnftablesの特徴です。


違い3:table・chain・ruleで構造化する

nftablesでは、ルールを以下の3つの単位で整理します。

  • table
  • chain
  • rule

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

イメージとしては、次のような階層です。

table
└── chain
    └── rule

たとえば、次のように考えます。

filterテーブル
└── inputチェイン
    ├── SSHを許可するルール
    ├── HTTPを許可するルール
    └── HTTPSを許可するルール

nftablesでは、この構造を意識して設定を書くため、ルールが増えても整理しやすくなります。


違い4:setやmapでルールをまとめやすい

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のメリットです。

小さなサーバーでは差を感じにくいかもしれませんが、許可IP、拒否IP、ポート、プロトコルなどの条件が増えてくると、nftablesの方が見通しを保ちやすくなります。


nftablesの基本構成

nftablesを理解するには、まず以下の単語を押さえるとよいです。

用語意味
tablechainを入れる大きな入れ物
chainruleを並べる場所
rule実際の通信制御ルール
hookどのタイミングで処理するか
policyルールに一致しない通信をどうするか
familyIPv4、IPv6、inetなどの対象範囲

たとえば、基本的なnftables設定は次のような形になります。

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

        iif lo accept
        ct state established,related accept
        tcp dport 22 accept
        tcp dport 80 accept
        tcp dport 443 accept
    }
}

この例では、以下のような意味になります。

意味
table inet filterIPv4/IPv6を扱うfilterテーブル
chain inputサーバーに入ってくる通信を扱うchain
policy drop基本的には通信を破棄
iif lo acceptローカルループバック通信を許可
ct state established,related accept確立済み・関連通信を許可
tcp dport 22 acceptSSHを許可
tcp dport 80 acceptHTTPを許可
tcp dport 443 acceptHTTPSを許可

このように、nftablesでは「基本は拒否し、必要な通信だけ許可する」という設計にしやすいです。


INPUT・OUTPUT・FORWARDとは?

Linuxファイアウォールを理解するうえで重要なのが、通信の方向です。

代表的には以下の3つがあります。

種類意味
INPUTサーバー自身に入ってくる通信
OUTPUTサーバー自身から出ていく通信
FORWARDサーバーを通過する通信

たとえば、Webサーバーに外部からアクセスする通信は、基本的にINPUTで扱います。

ユーザーのブラウザ
    ↓
Linuxサーバー

この場合、Linuxサーバーから見ると「外から自分に入ってくる通信」なのでINPUTです。

一方、Linuxサーバーが外部APIへアクセスする通信はOUTPUTです。

Linuxサーバー
    ↓
外部API

ルーターやNATゲートウェイのように、通信を中継する場合はFORWARDが関係します。

端末A
    ↓
Linuxサーバー
    ↓
インターネット

初心者がまず覚えるべきなのは、通常のWebサーバーで最初に重要になるのはINPUTという点です。


nftablesでよく使う確認コマンド

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

nft list ruleset

このコマンドで、現在設定されているtable、chain、ruleを一覧できます。

nftablesのコマンドヘルプを確認するには、次のようにします。

nft --help

nftablesのバージョンを確認するには、次のようにします。

nft --version

iptables側の状態も確認したい場合は、次のコマンドを使います。

iptables --version
iptables -L -n -v
iptables-save

最近のLinux環境では、iptables コマンドを使っていても、内部的にはnftablesバックエンドを使っている場合があります。そのため、iptables --version の表示も確認しておくとよいです。

iptables v1.8.x (nf_tables)

このように nf_tables と出る場合は、iptablesコマンドを使っていても、バックエンドはnftablesです。

iptables v1.8.x (legacy)

legacy と出る場合は、従来のiptablesバックエンドです。


nftablesでよくある基本例

ここでは、初心者向けにnftablesの基本例を紹介します。

SSHを許可する

nft add rule inet filter input tcp dport 22 accept

SSHポートを22番で使っている場合の例です。

SSHポートを変更している場合は、実際のポート番号に合わせる必要があります。

HTTPを許可する

nft add rule inet filter input tcp dport 80 accept

WebサーバーでHTTPを公開する場合に使います。

HTTPSを許可する

nft add rule inet filter input tcp dport 443 accept

HTTPSでWebサイトを公開する場合に使います。

現在のルールを確認する

nft list ruleset

nftablesでは、設定を変更する前後にこのコマンドで状態を確認するのが基本です。


nftablesを使うときの注意点

nftablesは便利ですが、初心者が設定するときには注意点もあります。

SSHを閉じないようにする

リモートサーバーでnftablesを設定する場合、SSHを許可する前にデフォルト拒否の設定を入れると、サーバーにログインできなくなることがあります。

特に、次のような設定は注意が必要です。

policy drop;

これは「明示的に許可されていない通信を基本的に破棄する」という意味です。

セキュリティ上は有効な考え方ですが、SSHを許可し忘れると自分自身も締め出されます。

iptablesとnftablesを混在させない

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

特に初心者は、1台のサーバー内で複数の方式を中途半端に混ぜない方が安全です。

まずは現在の状態を確認しましょう。

iptables --version
nft list ruleset

クラウド側のファイアウォールも確認する

AWS、GCP、Azure、さくらのVPSなどでは、Linux内部のnftablesとは別に、クラウド側のファイアウォール設定が存在することがあります。

たとえば、AWSならセキュリティグループ、VPSなら管理画面上のパケットフィルタなどです。

Linux上でnftablesを正しく設定していても、クラウド側でブロックされていれば通信は通りません。

逆に、クラウド側で開いていても、Linux側で拒否していれば通信は通りません。

つまり、通信制御は次のように二重で確認する必要があります。

クラウド側のファイアウォール
    ↓
Linux内部のnftables
    ↓
アプリケーション


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

これから学ぶなら、基本的には nftablesを優先 するのがおすすめです。

理由は、nftablesがiptables系ツールの後継として位置づけられているからです。(Netfilter)

ただし、iptablesを完全に無視するのはおすすめしません。

実務では、古い記事、既存サーバー、過去の手順書、ネットワーク調査などでiptablesが出てくることがあります。

そのため、学習順としては次のように考えるとよいです。

1. Linuxファイアウォールの基本を理解する
2. INPUT / OUTPUT / FORWARD を理解する
3. iptablesが何をしているか軽く読めるようにする
4. 新しく設定する場合はnftablesを中心に学ぶ
5. 既存環境ではiptablesとnftablesのどちらが使われているか確認する

重要なのは、コマンドの丸暗記ではありません。

本当に大事なのは、

どの通信を
どの方向で
どの条件に一致したら
許可・拒否するのか

を理解することです。

この考え方は、iptablesでもnftablesでも変わりません。


まとめ

nftablesは、Linuxで通信を制御するための新しいファイアウォール・パケットフィルタリングの仕組みです。

iptablesは従来から使われてきた仕組みで、nftablesはその後継にあたります。Netfilter公式でも、nftablesは従来の iptablesip6tablesarptablesebtables を置き換えるものとして説明されています。(Netfilter)

この記事のポイントをまとめると、次の通りです。

  • nftablesはLinuxの通信制御に使う新しい仕組み
  • nft コマンドでルールを設定・確認する
  • iptablesは従来から使われてきたファイアウォール管理ツール
  • nftablesはiptables系ツールの後継にあたる
  • nftablesではtable、chain、ruleでルールを整理する
  • IPv4とIPv6を統一的に扱いやすい
  • 新しく学ぶならnftablesを優先するのがおすすめ
  • 既存環境を読むためにはiptablesの基本も知っておくとよい
  • リモートサーバーではSSHを閉じないように注意する

初心者がまず押さえるべきなのは、nftablesはiptablesの後継であり、Linuxファイアウォールをより整理して管理するための仕組みだということです。

最初はコマンドが難しく見えるかもしれませんが、基本はシンプルです。

必要な通信だけ許可する
不要な通信は拒否する
現在の設定を確認してから変更する

この3つを意識すれば、nftablesの学習はかなり進めやすくなります。

コメント

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