Prismjs

2021年7月21日水曜日

Debian11でiptablesを使う

 debian9から11にバージョンアップしたところ、debian9のときにインストールして使用していたfirewalldがうまく動かなくなってしまったのでiptablesを使用することにした。

iptablesの設定を永続化(再起動時に自動設定)したい。自分でiptables設定のシェルスクリプトを書いといて、それをsystemdで自動起動するようにすればできないことはなさそうだけど、もっと楽に設定できないものか。

ググると/etc/sysconfig/iptablesに設定を書いてiptables.serviceを再起動時に動作するように設定すればよい、と出てきたがそもそもiptables.serviceがない。そのためまずはiptables-servicesのインストールを試みる。

が、aptでupdate後にiptables-servicesをインストールしようとしても「Unable to locate package iptables-services」が出てきてしまいパッケージ自体が存在しなさそう。
Debianの場合はiptables-persistentというパッケージでiptablesの設定永続化や再起動後の自動反映が可能らしい。(persist”a”ntではなくpersist”e”nt)

firewalldとiptablesがカチ合ってもよくなさそうなので取り敢えずsystemctl disable firewalld.serviceでfirewalldをオフにしておく。

aptでiptables-persistentをインストール。途中で現在のiptables設定を書き出すか(後述のnetfilter-persistent saveコマンドを実行しとくか)どうか聞いてくるのでYesを選んでおく。IPv4とIPv6それぞれで聞いてくる。ミスってNoにしてもインストール後にnetfilter-persistent saveを叩けばOK。


サービス名や設定時のコマンドはnetfilter-persistent。

インストール後systemctlでステータスを確認。enabledになっているのでこのままで自動起動はOKっぽそう。なってなかったらsystemctl daemon-reload のあとsystemctl enable netfilter-persistent.serviceで良いかと。
# systemctl status netfilter-persistent.service
● netfilter-persistent.service - netfilter persistent configuration
     Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/netfilter-persistent.service.d
             mqiptables.conf
     Active: active (exited) since Fri 2020-10-29 09:51:00 JST; 37min ago
       Docs: man:netfilter-persistent(8)
   Main PID: 4296 (code=exited, status=0/SUCCESS)
        CPU: 0
     CGroup: /system.slice/netfilter-persistent.service

Oct 29 09:51:00 dora systemd[1]: Starting netfilter persistent configuration...
Oct 29 09:51:00 dora  netfilter-persistent[4298]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
Oct 29 09:51:00 dora  netfilter-persistent[4299]: Warning: skipping IPv4 (no rules to load)
Oct 29 09:51:00 dora  netfilter-persistent[4298]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
Oct 29 09:51:00 dora  netfilter-persistent[4300]: Warning: skipping IPv6 (no rules to load)
Oct 29 09:51:00 dora  systemd[1]: Finished netfilter persistent configuration.


iptables-persistentの使い方はいたってシンプル。
iptables(IPv6ならip6tables)コマンドで所望のiptablesに設定した後、netfilter-persistent saveを実行することで現在のiptables設定を/etc/iptables/rules.v4(IPv4用)と/etc/iptables/rules.v6(IPv6用)保存してくれ、これを自動で起動時に読み込んでiptablesを設定してくれる。
netfilter-persistent reloadで/etc/iptables/rules.v4と/etc/iptables/rules.v6を再読み込みしてiptables設定してくれるので、iptablesコマンドでちまちまやらずにrules.v~を直接書き換えてreloadで一気に設定してしまってもよい。

0 件のコメント:

コメントを投稿