Skip to main content
The iptables modules handles iptables rules.

Functions

iptables.chain

Add/remove/update iptables chains.
iptables.chain(
    chain,
    present=True,
    table="filter",
    policy=None,
    version=4,
)
Policy: These can only be applied to system chains (FORWARD, INPUT, OUTPUT, etc).

iptables.rule

Add/remove iptables rules.
iptables.rule(
    chain,
    jump,
    present=True,
    table="filter",
    append=True,
    version=4,
    protocol=None,
    source=None,
    destination=None,
    in_interface=None,
    out_interface=None,
    to_destination=None,
    to_source=None,
    to_ports=None,
    log_prefix=None,
    destination_port=None,
    source_port=None,
    extras="",
)

Examples

from pyinfra.operations import iptables

# Block SSH traffic
iptables.rule(
    name="Block SSH traffic",
    chain="INPUT",
    jump="DROP",
    destination_port=22,
    protocol="tcp",
)

# NAT traffic
iptables.rule(
    name="NAT traffic on from 8.8.8.8:53 to 8.8.4.4:8080",
    chain="PREROUTING",
    jump="DNAT",
    table="nat",
    source="8.8.8.8",
    destination_port=53,
    protocol="tcp",
    to_destination="8.8.4.4:8080",
)

Build docs developers (and LLMs) love