Documentation

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

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

    iptables

    Manage iptables firewall rules.

    Attributes

    check_mode:
      support: full
    

    Parameters

    Parameter Required Type Values Description
    chain true string   The iptables chain to modify.
    comment   string   Comment for the rule (requires iptables comment module).
    ctstate   string   Connection tracking states (ESTABLISHED, RELATED, NEW, INVALID).
    destination   string   The destination address/network.
    destination_port   string   The destination port.
    flush   boolean   Flush all rules in the chain. [default: false]
    flush_all   boolean   Perform a flush before adding rules. [default: false]
    in_interface   string   The input interface.
    ip_version   string ipv4
    ipv6
    The iptables command to use (iptables, ip6tables). [default: "iptables"]
    jump   string   The jump target (ACCEPT, DROP, REJECT, LOG, etc.).
    match   string   Match extensions (state, conntrack, etc.).
    out_interface   string   The output interface.
    policy   string   Set the policy for the chain (ACCEPT, DROP, REJECT, etc.).
    protocol   string   The protocol of the rule (tcp, udp, icmp, all).
    rule_num   string   Append rule as a specific rule number (1-based).
    source   string   The source address/network.
    source_port   string   The source port.
    state   string present
    absent
    Whether the rule should be present or absent. [default: "present"]
    table   string   The iptables table to modify. [default: "filter"]
    to_destination   string   The target for DNAT/SNAT (e.g., “192.168.1.1:80”).
    to_ports   string   The ports for DNAT/SNAT (e.g., “8080-8090”).
    to_source   string   The source for SNAT (e.g., “192.168.1.1”).

    Examples

    - name: Allow HTTP traffic
      iptables:
        chain: INPUT
        protocol: tcp
        destination_port: "80"
        jump: ACCEPT
    
    - name: Allow established connections
      iptables:
        chain: INPUT
        ctstate: ESTABLISHED,RELATED
        jump: ACCEPT
    
    - name: Allow traffic from specific source
      iptables:
        chain: INPUT
        source: "192.168.1.0/24"
        jump: ACCEPT
    
    - name: NAT masquerade for outgoing traffic
      iptables:
        table: nat
        chain: POSTROUTING
        source: "10.0.0.0/24"
        out_interface: eth0
        jump: MASQUERADE
    
    - name: Forward port 8080 to 80
      iptables:
        table: nat
        chain: PREROUTING
        in_interface: eth0
        protocol: tcp
        destination_port: "8080"
        jump: DNAT
        to_destination: "127.0.0.1:80"
    
    - name: Remove a specific rule
      iptables:
        chain: INPUT
        protocol: tcp
        destination_port: "8080"
        jump: ACCEPT
        state: absent
    
    - name: Set the policy for the INPUT chain
      iptables:
        chain: INPUT
        policy: DROP
    
    - name: Flush all rules in INPUT chain
      iptables:
        chain: INPUT
        flush: true