[GH-ISSUE #2725] New 0.30.x ACL features break iptables-nft routing table #5984

Open
opened 2026-08-05 01:06:10 -04:00 by saavagebueno · 0 comments
Owner

Originally created by @Spiritreader on GitHub (Oct 10, 2024).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/2725

Describe the problem

It is no longer possible to list the routing table when netbird is active because it inserts incompatible rules.
I cannot fully switch over to nftables because docker requires iptables and modifying existing chains via nft is discouraged.

There are also side effects where you cannot insert certain rules anymore (which affects services like docker when it is creating new networks as it needs to modify iptables rules). Some iptables insertion and delete commands depend on the table being parsable.

To Reproduce

While netbird is running

❯ sudo iptables -L
iptables v1.8.9 (nf_tables): table `filter' is incompatible, use 'nft' tool.
❯ netbird down
Disconnected
❯ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (3 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             172.19.0.2           tcp dpt:http
ACCEPT     tcp  --  anywhere             172.18.0.2           tcp dpt:http
ACCEPT     tcp  --  anywhere             172.18.0.2           tcp dpt:https

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-ISOLATION-STAGE-2 (3 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

Expected behavior

iptables work as expected (before 0.30).
Netbird does not modify any tables managed by iptables-nft via nftables.

Netbird either uses iptables commands to modify iptables-nft-managed tables, or injects its own forward chain into `table ip netbird`` by setting a lower priority than the default of iprables-nft. won't work as outlined by https://github.com/netbirdio/netbird/issues/2725#issuecomment-2407408524

Are you using NetBird Cloud?

selfhosted

NetBird version

0.30.1

Do you face any (non-mobile) client issues?

The aforementioned issue affects linux clients with iptables installed.

Originally created by @Spiritreader on GitHub (Oct 10, 2024). Original GitHub issue: https://github.com/netbirdio/netbird/issues/2725 **Describe the problem** It is no longer possible to list the routing table when netbird is active because it inserts incompatible rules. I cannot fully switch over to nftables because docker requires iptables and modifying existing chains via nft is discouraged. There are also side effects where you cannot insert certain rules anymore (which affects services like docker when it is creating new networks as it needs to modify iptables rules). Some iptables insertion and delete commands depend on the table being parsable. **To Reproduce** While netbird is running ``` ❯ sudo iptables -L iptables v1.8.9 (nf_tables): table `filter' is incompatible, use 'nft' tool. ``` ``` ❯ netbird down Disconnected ``` ``` ❯ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy DROP) target prot opt source destination DOCKER-USER all -- anywhere anywhere DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED DOCKER all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED DOCKER all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED DOCKER all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain DOCKER (3 references) target prot opt source destination ACCEPT tcp -- anywhere 172.19.0.2 tcp dpt:http ACCEPT tcp -- anywhere 172.18.0.2 tcp dpt:http ACCEPT tcp -- anywhere 172.18.0.2 tcp dpt:https Chain DOCKER-ISOLATION-STAGE-1 (1 references) target prot opt source destination DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere RETURN all -- anywhere anywhere Chain DOCKER-ISOLATION-STAGE-2 (3 references) target prot opt source destination DROP all -- anywhere anywhere DROP all -- anywhere anywhere DROP all -- anywhere anywhere RETURN all -- anywhere anywhere Chain DOCKER-USER (1 references) target prot opt source destination RETURN all -- anywhere anywhere ``` **Expected behavior** iptables work as expected (before 0.30). Netbird does not modify any tables managed by iptables-nft via nftables. Netbird either uses iptables commands to modify iptables-nft-managed tables, ~~or injects its own forward chain into `table ip netbird`` by setting a lower priority than the default of iprables-nft.~~ won't work as outlined by https://github.com/netbirdio/netbird/issues/2725#issuecomment-2407408524 **Are you using NetBird Cloud?** selfhosted **NetBird version** 0.30.1 **Do you face any (non-mobile) client issues?** The aforementioned issue affects linux clients with iptables installed.
saavagebueno added the triage-needed label 2026-08-05 01:06:10 -04:00
Sign in to join this conversation.
No Label triage-needed
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#5984