Documentation

    PLEASE NOTE: This document applies to latest version and not to the latest stable release v2.20

    Documentation for other releases can be found by using the version selector in the top right of any doc page.

    nftables

    Manage nftables firewall rules.

    Attributes

    check_mode:
      support: full
    

    Parameters

    Parameter Required Type Values Description
    chain   string   The nftables chain name (optional for table operations).
    chain_hook   string   The chain hook (input, output, forward, prerouting, postrouting, ingress).
    chain_policy   string   The policy for the chain (accept, drop).
    chain_priority   integer   The chain priority (numeric value, typically 0, positive or negative). [default: 0]
    chain_type   string   The chain type (filter, nat, route for certain families).
    comment   string   Comment for the rule (stored as a comment in nftables).
    family   string inet
    ip
    ip6
    arp
    bridge
    netdev
    The address family (ip, ip6, inet, arp, bridge, netdev). [default: "inet"]
    flush   boolean   Flush all rules in the specified chain. [default: false]
    rule   string   The rule specification in nftables syntax.
    state   string present
    absent
    Whether the rule/chain/table should be present or absent. [default: "present"]
    table true string   The nftables table name.

    Examples

    - name: Add a table
      nftables:
        table: myfilter
        family: inet
        state: present
    
    - name: Add a chain to the filter table
      nftables:
        table: myfilter
        chain: input
        family: inet
        chain_type: filter
        chain_hook: input
        chain_priority: 0
        state: present
    
    - name: Add a rule to allow HTTP traffic
      nftables:
        table: myfilter
        chain: input
        family: inet
        rule: "tcp dport 80 accept"
        state: present
    
    - name: Add a rule to allow established connections
      nftables:
        table: myfilter
        chain: input
        family: inet
        rule: "ct state established,related accept"
        state: present
    
    - name: Allow traffic from specific source
      nftables:
        table: myfilter
        chain: input
        family: inet
        rule: "ip saddr 192.168.1.0/24 accept"
        state: present
    
    - name: NAT masquerade for outgoing traffic
      nftables:
        table: mynat
        chain: postrouting
        family: ip
        rule: "ip saddr 10.0.0.0/24 oifname eth0 masquerade"
        state: present
    
    - name: Delete a specific rule
      nftables:
        table: myfilter
        chain: input
        family: inet
        rule: "tcp dport 8080 accept"
        state: absent
    
    - name: Delete a chain
      nftables:
        table: myfilter
        chain: input
        family: inet
        state: absent
    
    - name: Delete a table
      nftables:
        table: myfilter
        family: inet
        state: absent
    
    - name: Flush all rules in a chain
      nftables:
        table: myfilter
        chain: input
        family: inet
        flush: true