Nftables : サービスを有効化する2025/12/09 |
|
Nftables の基本操作です。 nftables は、従来の iptables, ip6tables, arptables, ebtables の機能を統合したツールです。 |
|
| [1] | nftables は Firewalld のデフォルトのバックエンドとして使用されています。 |
|
dlp:~ # grep ^FirewallBackend /etc/firewalld/firewalld.conf FirewallBackend=nftables |
| [2] | nftables を使用する場合は、firewalld サービスは無効化します。 また、システムの再起動時にフィルタリングのルールセットを復元できるように、nftables のサービスを有効化しておきます。 |
|
dlp:~ # systemctl disable --now firewalld Removed '/etc/systemd/system/multi-user.target.wants/firewalld.service'. Removed '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'.dlp:~ # systemctl enable --now nftables Created symlink '/etc/systemd/system/multi-user.target.wants/nftables.service' → '/usr/lib/systemd/system/nftables.service'. # [nftables.service] は起動時に [/etc/nftables/rules/main.nft] を読み込んでルールセットを復元するサービス dlp:~ # systemctl cat nftables.service # /usr/lib/systemd/system/nftables.service [Unit] Description=nftables static rule set Documentation=man:nftables.service(8) Wants=network-pre.target Before=network-pre.target shutdown.target Conflicts=shutdown.target firewalld.service DefaultDependencies=no ConditionPathExists=/etc/nftables/rules/main.nft [Service] Type=oneshot RemainAfterExit=yes StandardInput=null ProtectSystem=full ProtectHome=true ExecStart=/usr/sbin/nft 'flush ruleset; include "/etc/nftables/rules/main.nft"' ExecReload=/usr/sbin/nft 'flush ruleset; include "/etc/nftables/rules/main.nft"' ExecStop=/usr/sbin/nft flush ruleset [Install] WantedBy=sysinit.target |
| [3] | Firewalld に設定したルールセットを引き継いで nftables サービスに切り替えたい合は、以下のように設定します。 |
|
# Firewalld の現在の設定確認 ( firewalld サービス稼働中が前提 ) dlp:~ # firewall-cmd --list-all public (default, active) target: default ingress-priority: 0 egress-priority: 0 icmp-block-inversion: no interfaces: enp1s0 sources: services: dhcpv6-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: # Firewalld バックエンドの nftables の現在のルールセットを全て表示 dlp:~ # nft list ruleset
table inet firewalld {
chain mangle_PREROUTING {
type filter hook prerouting priority mangle + 10; policy accept;
jump mangle_PREROUTING_POLICIES
}
chain mangle_PREROUTING_POLICIES {
iifname "docker0" jump mangle_PRE_policy_allow-host-ipv6
iifname "docker0" jump mangle_PRE_docker
iifname "docker0" return
iifname "enp1s0" jump mangle_PRE_policy_allow-host-ipv6
iifname "enp1s0" jump mangle_PRE_public
iifname "enp1s0" return
jump mangle_PRE_policy_allow-host-ipv6
jump mangle_PRE_public
return
}
.....
.....
# 現在のルールセットを書き出す dlp:~ # mkdir /etc/nftables/rules dlp:~ # nft list ruleset > /etc/nftables/rules/main.nft
# firewalld サービス停止 & nftables サービス起動 dlp:~ # systemctl disable --now firewalld dlp:~ # systemctl enable --now nftables
# ルールセット表示 dlp:~ # nft list ruleset
table inet firewalld {
chain mangle_PREROUTING {
type filter hook prerouting priority mangle + 10; policy accept;
jump mangle_PREROUTING_POLICIES
}
chain mangle_PREROUTING_POLICIES {
iifname "docker0" jump mangle_PRE_policy_allow-host-ipv6
iifname "docker0" jump mangle_PRE_docker
iifname "docker0" return
.....
.....
# 例えば [firewalld] で許可されていたサービス [services: dhcpv6-client ssh] は以下のように確認可 dlp:~ # nft list chain inet firewalld filter_IN_public_allow
table inet firewalld {
chain filter_IN_public_allow {
tcp dport 22 accept
ip6 daddr fe80::/64 udp dport 546 accept
}
}
|
| Sponsored Link |
|
|