Close Menu
    Facebook X (Twitter) Instagram
    Command Linux
    • About
    • How to
      • Q&A
    • OS
      • Windows
      • Arch Linux
    • AI
    • Gaming
      • Easter Eggs
    • Statistics
    • Blog
      • Featured
    • MORE
      • IP Address
      • Man Pages
    • Write For Us
    • Contact
    Command Linux
    Home - Arch Linux - How To Use nftables on Linux Systems

    How To Use nftables on Linux Systems

    WillieBy WillieDecember 13, 2025Updated:March 30, 2026No Comments5 Mins Read

    nftables is a Linux packet classification framework that replaces iptables and related tools. It offers performance improvements, unified syntax, and better maintainability. This guide covers installation, configuration, and practical usage.

    What Is nftables

    nftables provides packet filtering, network address translation (NAT), and traffic classification. The Linux kernel includes nftables starting from version 3.13. Major distributions now ship nftables as the default firewall framework.

    The framework uses a hierarchy of tables, chains, and rules. Tables contain chains. Chains contain rules that match and act on packets.

    The nft command-line tool manages all nftables operations. It replaces separate utilities like iptables-save and ip6tables.

    nftables vs iptables

    nftables introduces several changes from iptables. Understanding these differences helps with migration and configuration.

    Feature iptables nftables
    Tables and chains Predefined tables and chains No predefined structures
    Actions per rule Single action Multiple actions
    IPv4 and IPv6 Separate tools required Unified inet family
    Rule updates Replace entire ruleset Atomic transactions
    Debugging Limited options Built-in tracing via nftrace

    nftables uses a dynamic linked list for rulesets. This improves maintainability compared to the monolithic approach in iptables.

    How to Install nftables

    Recent distributions include nftables by default. Debian 10, Ubuntu 20.10, CentOS 8, and Fedora 32 ship with nftables pre-installed.

    Prerequisites

    Root or sudo access is required for installation and configuration. Verify your kernel version supports nftables:

    $ uname -r

    Kernels version 3.13 and later include nftables support.

    Installation Steps

    Install nftables on Debian and Ubuntu:

    # apt install nftables

    Install on RHEL, CentOS, and Fedora:

    # dnf install nftables

    Enable and start the systemd service:

    # systemctl enable nftables
    # systemctl start nftables

    Verify the service status:

    # systemctl status nftables

    How to Use nftables

    nftables operations involve creating tables, adding chains, and defining rules. Each component serves a specific purpose in packet processing.

    Tables

    Tables act as containers for chains. Each table belongs to a single address family that determines which packet types it processes.

    Family Description
    ip IPv4 packets (default)
    ip6 IPv6 packets
    inet Both IPv4 and IPv6
    arp ARP packets
    bridge Bridge traffic
    netdev Ingress packets

    Create a table handling both IP protocol versions:

    # nft add table inet my_table

    List existing tables:

    # nft list tables

    Delete a table:

    # nft delete table inet my_table

    Flush all rules from a table:

    # nft flush table inet my_table

    Chains

    Chains filter packets within tables. Base chains connect to netfilter hooks and receive packets from the network stack. Regular chains serve as jump targets for organization.

    Create a base chain for incoming packets:

    # nft add chain inet my_table input '{ type filter hook input priority 0; policy accept; }'

    The hook determines when packets reach the chain. Common hooks include input, output, forward, prerouting, and postrouting.

    Create a regular chain:

    # nft add chain inet my_table custom_chain

    Delete a chain:

    # nft delete chain inet my_table input
    Note: Flush a chain before deletion on kernels older than 3.18.

    Rules

    Rules match packets and execute actions. Each rule contains expressions for matching criteria and statements for actions.

    Add a rule permitting SSH traffic:

    # nft add rule inet my_table input tcp dport 22 accept

    Add a rule with packet counting:

    # nft add rule inet my_table input tcp dport 443 counter accept

    Insert a rule at a specific position:

    # nft insert rule inet my_table input position 2 tcp dport 80 accept

    List rules with handles for management:

    # nft -a list table inet my_table

    Delete a rule by handle:

    # nft delete rule inet my_table input handle 5
    Warning: Dropping all traffic without allowing SSH locks you out of remote servers.

    Network Address Translation Setup

    nftables supports masquerading and destination NAT. Create a NAT table and postrouting chain for source address translation.

    Enable IP forwarding:

    # echo 1 > /proc/sys/net/ipv4/ip_forward

    Create a NAT table with masquerading:

    # nft add table inet nat
    # nft add chain inet nat postrouting '{ type nat hook postrouting priority srcnat; }'
    # nft add rule inet nat postrouting oifname "eth0" masquerade

    Configure destination NAT for port forwarding:

    # nft add chain inet nat prerouting '{ type nat hook prerouting priority dstnat; }'
    # nft add rule inet nat prerouting tcp dport 8080 dnat to 192.168.1.100:80

    Migrating from iptables

    Translation tools convert existing iptables rules to nftables format. Export current rules with iptables-save:

    # iptables-save > /root/iptables.rules

    Translate the exported rules:

    # iptables-restore-translate -f /root/iptables.rules > /etc/nftables/converted.nft

    Import the converted ruleset:

    # nft -f /etc/nftables/converted.nft
    Tip: Test converted rules in a non-production environment before deployment.

    Saving and Restoring Rules

    Export the current ruleset to a file:

    # nft list ruleset > /etc/nftables/backup.nft

    Restore rules from a backup:

    # nft -f /etc/nftables/backup.nft

    Clear all existing rules:

    # nft flush ruleset

    Configure persistent rules by editing /etc/nftables.conf. The nftables service loads this file at boot.

    FAQs

    Add a drop rule with the source address: nft add rule inet my_table input ip saddr 192.168.1.50 drop. Create the table and input chain first if they do not exist.

    nftables offers unified IPv4/IPv6 handling, multiple actions per rule, atomic updates, and improved performance. It uses a single tool instead of separate utilities for each protocol.

    Run nft list ruleset to display all tables, chains, and rules. Add the -a flag to include rule handles for management operations.

    Yes. Firewalld uses nftables as its default backend on modern distributions. Both tools can manage the same kernel infrastructure but avoid running conflicting configurations.

    Save rules to /etc/nftables.conf and enable the nftables systemd service. The service loads this configuration file automatically at system boot.

    Willie
    • Website

    Willie has over 15 years of experience in Linux system administration and DevOps. After managing infrastructure for startups and enterprises alike, he founded Command Linux to share the practical knowledge he wished he had when starting out. He oversees content strategy and contributes guides on server management, automation, and security.

    Related Posts

    Arch Based Distros You Should Try in 2026

    March 19, 2026

    How to Set Up Spotify Arch Linux

    March 18, 2026

    How To Use Nmcli Connect To Wi-Fi on Linux

    March 14, 2026

    How to Do a Zsh Install on Any Linux Distro

    March 13, 2026
    Top Posts

    HTTP::Cookies::Netscape

    April 8, 2026

    Docker Arch Linux Configuration

    December 16, 2025

    YASH

    February 25, 2026

    GTF

    March 27, 2026
    • Home
    • Contact Us
    • Privacy Policy
    • Terms of Use

    Type above and press Enter to search. Press Esc to cancel.