Day After Day
tsurezure naru mamani...
ANOTHER DECADE

from 2021 when it's begining after/with CORONA Virus.

ファイアウォール nftables に移行

1月
21
2026
Back
HOME


D-STAR Gateway のセキュリティ対策で少し勉強することができた。やはりこう言うリテラシーの取得は頭じゃなく指先でするものだと改めて思った

熱の冷めないうちに、nftables に関する管理方法を少し勉強しながらまとめたいと思う。




先ず、次のサイトを読むことから始める。
SAKURA internet さくらのナレッジ

前回の iptables を使ったファイアウォールの実体


次のコマンドを実行してみる。

$ iptables --version
iptables v1.8.10 (nf_tables)
つまり、nftables の互換モード(nf_tables の互換レイヤ)を使っていたと言うことのようだ。

Chromeで検索しようとしたらGeminiが答えてくれた



nftables(nf_tables)は Linuxカーネルに組み込まれたパケットフィルタリングのサブシステムであり、iptablesの後継として設計された、 カーネルレベルで動作する現代的なフレームワークです。 nftablesはLinuxカーネル3.13以降で標準搭載されており、netfilterというカーネル機能のフロントエンドとして、 IPアドレスだけでなくIPv4/IPv6/ARP/Bridgeなど複数のプロトコルを統一した構文で扱えるのが特徴です。

nftablesの主な特徴

  • カーネルに統合: Linuxカーネルの一部として動作し、netfilterの機能(接続追跡やNATなど)を再利用しています。
  • iptablesの後継: 従来のiptables/ip6tables/arptables/ebtablesを統合し、よりシンプルで効率的なルールセット管理を実現します。
  • 統一構文: IPバージョンやプロトコルに依存せず、単一のnftコマンド(ユーザースペースツール)で設定できます。
  • 柔軟な構造: テーブル(Table)、チェーン(Chain)、ルール(Rule)、セット(Set)といったオブジェクトで構成され、高度なフィルタリングが可能です。
  • 高機能: 複数のプロトコル(IPv4/IPv6/Ethernetフレーム)を単一のフレームワークで扱え、より複雑なネットワーク要件に対応できます。
nftablesはfirewalldやUFWといった高レベルのフロントエンドのバックエンドとしても利用され、 Linuxにおける標準的なパケットフィルタリングの基盤となっています。



続いてChatGPTに関連コマンドを一覧して貰った


1. 基本操作(共通サブコマンド)

ほぼすべてのオブジェクトに対して共通で使えます。 ・add …… 追加 ・create …… 作成(既存時はエラー) ・insert …… 指定位置に挿入(主に rule) ・replace …… 置換 ・delete …… 削除 ・destroy …… 破棄(delete より強制的) ・list …… 一覧表示 ・flush …… 中身を全削除 ・get …… 単一オブジェクト取得 ・monitor …… 変更の監視 ・reset …… カウンタ等のリセット

2. テーブル(table)管理

・nft add table <family> <table> ・nft delete table <family> <table> ・nft list tables ・nft list table <family> <table> ・nft flush table <family> <table> 例:
nft add table inet filter

3. チェイン(chain)管理

・nft add chain <family> <table> <chain> ・nft delete chain <family> <table> <chain> ・nft list chains ・nft list chain <family> <table> <chain> ・nft flush chain <family> <table> <chain> フック付きチェイン:
nft add chain inet filter input { type filter hook input priority 0 \; }

4. ルール(rule)管理

・nft add rule <family> <table> <chain> ... ・nft insert rule <family> <table> <chain> position ... ・nft replace rule <family> <table> <chain> handle <id> ... ・nft delete rule <family> <table> <chain> handle <id> ・nft list ruleset ・nft flush ruleset 例:
nft add rule inet filter input tcp dport 22 accept

5. セット(set)管理

・nft add set <family> <table> <set> { type <type>; } ・nft delete set <family> <table> <set> ・nft list sets ・nft list set <family> <table> <set> 要素(element)操作 ・nft add element <family> <table> <set> { ... } ・nft delete element <family> <table> <set> { ... } ・nft get element <family> <table> <set> { ... }

6. マップ(map)管理

・nft add map <family> <table> <map> { type <key> : <value>; } ・nft delete map <family> <table> <map> ・nft list maps ・nft add element ...

7. カウンタ・制御系オブジェクト

カウンタ(counter) ・nft add counter <family> <table> <name> ・nft list counters ・nft reset counters クォータ(quota) ・nft add quota <family> <table> <name> { ... } リミット(limit) ・limit rate ・limit rate over

8. フローテーブル(flowtable)

・nft add flowtable <family> <table> <name> { hook ingress priority 0; devices = { eth0 }; } ・nft list flowtables

9. conntrack / ヘルパー関連

・ct helper ・ct timeout ・ct expectation

10. 設定管理・運用系

・nft -f <file> …… 設定ファイル読み込み ・nft -c -f <file> …… 構文チェックのみ ・nft list ruleset …… 全設定表示 ・nft flush ruleset …… 全削除 ・nft monitor …… リアルタイム監視

11. family(アドレスファミリ)

管理時に指定する主な family: ・ip ・ip6 ・inet ・arp ・bridge ・netdev

まとめ(管理で特に重要)

全体確認: nft list ruleset ・安全な適用: nft -c -f file.nft ・完全初期化: nft flush ruleset ・永続化: /etc/nftables.conf

これらのコマンドをできる限り使っていくうちに指から覚えていくだろう。

Back
HOME