UFW(Uncomplicated Firewall)と iptables-nft
/ nftables
の関係について
UFW は iptables
または iptables-nft
をバックエンドとして使用します。
最近のLinuxディストリビューション(Ubuntu 22.04+、Debian 12+など)では、デフォルトで iptables-nft
(iptables
コマンド互換レイヤー + nftables
カーネルAPI)が採用されています。
1. UFW と nftables
の互換性
-
UFW は
iptables-nft
モードで動作するiptables
コマンドを実行しても、実際にはnftables
のルールが生成されます。nft list ruleset
で確認すると、UFW のルールがnftables
形式で表示されます。
-
nftables
を直接使うと UFW と競合する可能性あり- UFW が有効な状態で
nft
コマンドでルールを追加すると、UFW の再起動時に上書きされることがあります。
- UFW が有効な状態で
2. UFW を使う場合の推奨設定
推奨: UFW のみを使い、nftables
は直接触らない
# UFW のルールを確認
sudo ufw status verbose
# UFW で NAT やポート転送を設定
sudo nano /etc/ufw/before.rules
/etc/ufw/before.rules
にiptables
形式でルールを追加- UFW は起動時にこのファイルを読み込み、
iptables-nft
を通じてnftables
に適用します。
- UFW は起動時にこのファイルを読み込み、
例: NAT 設定 (/etc/ufw/before.rules
)
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.100.0/24 ! -d 192.168.100.0/24 -j MASQUERADE
COMMIT
3. UFW と nftables
を併用する場合の注意点
競合を避ける方法
-
UFW で管理しないルールは
nftables
の永続化設定に追加sudo nano /etc/nftables.conf
- UFW が再起動しても消えないようにする。
-
UFW の設定後に
nftables
を適用sudo systemctl restart ufw sudo nft -f /etc/nftables.conf
-
UFW が
nftables
ルールを上書きしないようにする- UFW の設定ファイル (
/etc/ufw/*.rules
) で必要なルールをすべて定義。
- UFW の設定ファイル (
4. 結論: UFW と nftables
のどちらを使うべきか?
ケース | 推奨方法 |
---|---|
シンプルなファイアウォール設定 | UFW のみ (iptables-nft をバックエンドで使用) |
複雑なルール(NAT、カスタムチェーン) | nftables 直接設定 (UFW は無効化) |
UFW と nftables を併用 |
競合に注意 (UFW の before.rules で設定) |
具体的なアドバイス
-
KVM + NAT を使う場合
- UFW を有効にしたまま、
/etc/ufw/before.rules
に NAT ルールを追加するのが安全。 nftables
を直接使う場合は、UFW を無効化 (sudo ufw disable
)。
- UFW を有効にしたまま、
-
UFW を無効化して
nftables
に移行する場合sudo ufw disable sudo systemctl enable nftables sudo systemctl start nftables
5. トラブルシューティング
UFW と nftables
の競合を確認
sudo nft list ruleset | grep -A 10 "hook forward"
sudo ufw status verbose
- 同じルールが重複してないか確認。
ログで問題を調査
sudo dmesg | grep ufw
sudo journalctl -u ufw
ファイアウォールを一時無効化してテスト
sudo ufw disable
sudo nft flush ruleset
sudo systemctl stop nftables
- これで接続できるようになれば、ファイアウォール設定が原因。
まとめ
- UFW を使う場合 →
iptables-nft
をバックエンドとして利用し、/etc/ufw/before.rules
で設定。 nftables
を直接使う場合 → UFW は無効化し、/etc/nftables.conf
で管理。- 競合を避ける → どちらか一方をメインに使うのが安全。
KVM の NAT 設定では、UFW の before.rules
にルールを追加する方法がおすすめです!