Nftables systemd ExecStart 和 ExecReload

Nftables systemd ExecStart 和 ExecReload

我有一个 ansible 角色(历史继承)来为 RHEL8 配置 nftables,我一直在尝试理解它。它正在复制 nftables.service 的 systemd 文件,该文件包含以下节:


[Service]
Type=oneshot
RemainAfterExit=yes
StandardInput=null
ProtectSystem=full
ProtectHome=true
ExecStart=/sbin/nft -f /etc/sysconfig/nftables.conf
ExecReload=/sbin/nft 'flush ruleset; include "/etc/sysconfig/nftables.conf";'
ExecStop=/sbin/nft flush ruleset

我试图理解ExecStart正在做什么与ExecReload execstart 之间的区别,这似乎很简单 - 它通过标志自动运行配置-f。但我不明白这与 有何不同ExecReload。不是/sbin/nft 'flush ruleset; include "/etc/sysconfig/nftables.conf";'原子的吗?

/etc/sysconfig/nftables.conf内容如下:

#!/usr/sbin/nft -f

# clean
flush ruleset

include "/etc/nftables/defines.nft"

table inet filter {
        chain global {
                # 005 state management
                ct state established,related accept
                ct state invalid drop
         }
        include "/etc/nftables/sets_role_haproxy_cvp_apps.nft"
        include "/etc/nftables/sets.nft"
        include "/etc/nftables/helpers.nft"
        include "/etc/nftables/filter-forwared.nft"
        include "/etc/nftables/filter-input.nft"
        include "/etc/nftables/filter-output.nft"
        include "/etc/nftables/input_role_haproxy_cvp_apps.nft"

}

因此,在我看来,这两者ExecStart似乎ExecReload在做同样的事情 - 两者都会刷新规则集。 ansible 的作者评论说“如果添加了无效语法,重新加载将避免丢失 Nftables 规则库”。如果它刷新规则集,我不明白它是如何做到这一点的?有人可以解释一下吗?

谢谢J

相关内容