Red Hat Enterprise Linux 8.0ではiptablesの代わりにnftablesがfirewalldのバックエンドに変更されたとのこと。少し触ってみました。
Red Hat Enterprise Linux 8.0 リリースノート
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html-single/8.0_release_notes/index
firewalld がデフォルトで nftables を使用
今回の更新で、nftables フィルタリングサブシステムが、firewalld デーモンのデフォルトのファイアウォールバックエンドになります。バックエンドを変更するには、/etc/firewalld.conf ファイルの FirewallBackend オプションを使用します。
nftコマンドでルールセットを確認してみます。ssh,dhcpv6-client,cockpitの許可ルールがありました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
[root@rhel8 ~]# nft list ruleset table ip filter { chain INPUT { type filter hook input priority 0; policy accept; } chain FORWARD { type filter hook forward priority 0; policy accept; } chain OUTPUT { type filter hook output priority 0; policy accept; } } (snip) table inet firewalld { chain raw_PREROUTING { type filter hook prerouting priority -290; policy accept; icmpv6 type { nd-router-advert, nd-neighbor-solicit } accept meta nfproto ipv6 fib saddr . iif oif missing drop jump raw_PREROUTING_ZONES_SOURCE jump raw_PREROUTING_ZONES } (snip) chain filter_IN_public_allow { tcp dport ssh ct state new,untracked accept ip6 daddr fe80::/64 udp dport dhcpv6-client ct state new,untracked accept tcp dport 9090 ct state new,untracked accept } (snip) |
試しにfirewalldにrich rulesを追加してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@rhel8 ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="14942-14943" accept" success [root@rhel8 ~]# firewall-cmd --reload success [root@rhel8 ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="192.168.1.0/24" port port="14942-14943" protocol="tcp" accept |
nftablesに追加されていました。
1 2 3 4 5 6 7 8 9 |
[root@rhel8 ~]# nft list ruleset inet (snip) chain filter_IN_public_allow { tcp dport ssh ct state new,untracked accept ip6 daddr fe80::/64 udp dport dhcpv6-client ct state new,untracked accept tcp dport 9090 ct state new,untracked accept ip saddr 192.168.1.0/24 tcp dport 14942-14943 ct state new,untracked accept } (snip) |
firewalldでルールを操作する分には特に気にする必要は無さそうですが、iptablesからの移行などではちょっと面倒かもしれません。