Red Hat Training

A Red Hat training course is available for RHEL 8

7.2. 编写和执行 nftables 脚本

nftables 框架提供了一个原生脚本环境,它比使用 shell 脚本维护防火墙规则具有主要优势:执行脚本是原子的。这意味着,系统会应用整个脚本,或者在出现错误时防止执行。这样可保证防火墙始终处于一致状态。

另外,nftables 脚本环境使管理员能够:

  • 添加评论
  • 定义变量
  • 包含其他规则集文件

本节介绍如何使用这些功能,以及创建和执行 nftables 脚本。

安装 nftables 软件包时,Red Hat Enterprise Linux 会在 /etc/ nftables/ 目录中自动创建 *.nf t 脚本。这些脚本包含为不同目的创建表和空链的命令。

7.2.1. 支持的 nftables 脚本格式

nftables 脚本环境支持以下格式的脚本:

  • 您可以使用与 nft list ruleset 命令相同的格式编写脚本,显示规则集:

    #!/usr/sbin/nft -f
    
    # Flush the rule set
    flush ruleset
    
    table inet example_table {
      chain example_chain {
        # Chain for incoming packets that drops all packets that
        # are not explicitly allowed by any rule in this chain
        type filter hook input priority 0; policy drop;
    
        # Accept connections to port 22 (ssh)
        tcp dport ssh accept
      }
    }
  • 您可以使用与 nft 命令相同的语法:

    #!/usr/sbin/nft -f
    
    # Flush the rule set
    flush ruleset
    
    # Create a table
    add table inet example_table
    
    # Create a chain for incoming packets that drops all packets
    # that are not explicitly allowed by any rule in this chain
    add chain inet example_table example_chain { type filter hook input priority 0 ; policy drop ; }
    
    # Add a rule that accepts connections to port 22 (ssh)
    add rule inet example_table example_chain tcp dport ssh accept