TL;DR
※ firewalldとは共存できないらしいので注意
$ sudo yum install iptables-services
$ sudo /usr/libexec/iptables/iptables.init save
経緯
Amazon Linux 2を使うとiptablesは入っているけど/etc/init.d/iptablesがなくて/etc/init.d/iptables saveができなかった。というか/etc/init.d以下にほとんどスクリプトがない。
で、/etc/init.d/READMEってファイルがあったので見てみたらsystemctl使え(意訳)って書いてある。systemctlでiptablesを使うにはiptables-servicesをインストールする必要があるっぽい。インストールする。
$ sudo yum install iptables-services
しかしsystemctlにはsaveなんてコマンドはない。
systemdのサービス化したとはいえ、どうせ/etc/init.d/iptablesのスクリプトをそっちに移動しただけだろうと推測しその起動スクリプトを探してみる。systemctlの設定ファイルには起動コマンドが書いてあるはずなので、そこから探す。systemctl enable iptablesしたら設定ファイルが/usr/lib/systemd/system/iptables.service
にあることが分かった。
$ cat /usr/lib/systemd/system/iptables.service
[Unit]
Description=IPv4 firewall with iptables
Before=ip6tables.service
After=syslog.target
AssertPathExists=/etc/sysconfig/iptables
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/libexec/iptables/iptables.init start
ExecReload=/usr/libexec/iptables/iptables.init reload
ExecStop=/usr/libexec/iptables/iptables.init stop
Environment=BOOTUP=serial
Environment=CONSOLETYPE=serial
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=basic.target
起動スクリプト本体は/usr/libexec/iptables/iptables.init
らしい。これの中身を見てみるとやっぱりsaveコマンドある。というわけで
$ sudo /usr/libexec/iptables/iptables.init save
で、/etc/init.d/iptables save相当のことができた。