ufwからiptables-persistentでの永続化と移行
by haturatu
3 min read
こんにちは、無能です。
今まで簡単にFW設定ができるufw
を使用していたのですが、pf.conf
のように移行しやすいようにconfレベルで管理したいなあと思ってiptables-persistent
をインストールしました。
どうやらpf
を使えるようにするカーネルパッチもあるようなのですがそこまで無理して使うのも違うし、iptables
から逃げることにもなるので導入しました。
インストール
すでにiptables
はだいたい入っているはずなので、iptables-persisten
だけインストールします。
ちなみに競合するためufw
は自動で消されるので事前のルールは確認しておきましょう。
sudo apt install iptables-persistent
netfilter-persistent
最低限の使い方
現在のルールを/ets/iptables/
配下に保存する場合
sudo netfilter-persistent save
現在の/etc/iptables/
の設定を使ってリロードする場合
sudo netfilter-persistent reload
ちなみに、reload
してない状態でsave
すると現在のルールを保存扱いになって記述した設定が吹っ飛ぶので気をつけてください。
設定
こんな感じの設定になりました。
iptables
、コメントも改行も全てsave
で吹っ飛ぶの結構きついですね・・・。
# cat rules.v4
# Generated by iptables-save v1.8.9 (nf_tables) on Sat Oct 11 16:27:52 2025
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [18:1900]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i 127.0.0.1/32 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -j ACCEPT
-A INPUT -i wg0 -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Sat Oct 11 16:27:52 2025
許可ルールに関しては基本ローカルとWireGuard
のインターフェースごと許可するようになっています。
基本的にArch Wiki
からパクってきました。
シンプルなステートフルファイアウォール - ArchWiki
というのも
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
これを追加しないと、例えばcurl
したときの戻りが返って来れなくなるのでしっかり明示的にコネクションが確立したものに関しては別ルールに振り分ける必要があるようだった。pf
が強力にしてくれるのはこの手の状態管理もよしなにやってくれていることに改めて気づき、改めてpf
ちゃんをヨシヨシしたくなった一日でした。
それではまた。
ちなみにIPv6はナシ
# cat rules.v6
# Generated by ip6tables-save v1.8.9 (nf_tables) on Sat Oct 11 17:37:50 2025
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Sat Oct 11 17:37:50 2025
よろしくお願いします。