Posted on
Software

nftables: Modern replacement for `iptables`

Author
  • User
    Linux Bash
    Posts by this author
    Posts by this author

Nftables: The Modern Replacement for iptables

In the evolving landscape of Linux network management, nftables is rapidly becoming the preferred choice over the older iptables. This switch is fueled by the desire for more efficient, easy-to-manage, and flexible firewall configurations. Below, we discuss what makes nftables standout, how you can transition from iptables, and provide a step-by-step guide on how to install nftables using various package managers.

What is nftables?

Nftables is a subsystem of the Linux kernel, providing firewall/natting and packet filtering capabilities. It was introduced as part of the Linux 3.13 kernel and is intended to replace the legacy iptables service. It offers a simplified, consistent syntax and a single framework for both IPv4 and IPv6 protocols. Key features include:

  • Improved Performance: Nftables uses a more efficient in-kernel bytecode interpreter which enhances both speed and security.

  • Simpler Syntax: It offers a more straightforward syntax and better structured command lines, making the rules easier to maintain and understand.

  • Enhanced Flexibility: Nftables integrates with the Netfilter framework which supports various protocols, providing a more flexible rule set.

Transitioning from iptables to nftables

Transitioning is fairly straightforward. Most distributions come with a translation tool called iptables-translate and ip6tables-translate that will help you convert your iptables rules to nftables rules. However, it's often a good opportunity to review and optimise your existing rules as you make the switch.

Installing Nftables

Here's how you can install nftables on various Linux distributions:

Debian/Ubuntu (Using apt)

For Debian-based distributions like Ubuntu, you can install nftables using apt. First, update your package list:

sudo apt update

Then install nftables:

sudo apt install nftables
Fedora (Using dnf)

On Fedora, the dnf package manager is used for installations. First, ensure your packages are up-to-date:

sudo dnf makecache

Then, install nftables:

sudo dnf install nftables
openSUSE (Using zypper)

For openSUSE, zypper is the package manager. Start by refreshing the repository information:

sudo zypper refresh

Then install nftables:

sudo zypper install nftables

Configuring nftables

Once installed, you can begin configuring your rules. Nftables configurations are stored in /etc/nftables.conf. Here’s a simple example to get you started:

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;

        # Accept any localhost traffic
        iif lo accept

        # Accept traffic originated from us
        ct state established,related accept

        # Accept incoming SSH connections
        tcp dport 22 accept
    }
}

This basic configuration sets up a default drop policy for incoming connections, while allowing localhost traffic, established connections, and SSH on port 22.

Managing nftables

To start, stop, and check the status of nftables, use:

sudo systemctl start nftables
sudo systemctl stop nftables
sudo systemctl status nftables

To enable nftables to start at boot:

sudo systemctl enable nftables

Nftables offers a robust and modern framework for managing your network traffic with ease and efficiency. Whether you're a novice interested in setting up a secure system or an experienced admin in need of a powerful toolset, nftables provides the capabilities required to manage complex tasks through straightforward commands and configurations. Making the switch may seem daunting at first, but the long-term benefits in performance and manageability are well worth the effort.