[GH-ISSUE #5551] NetBird v0.64.1+ crashes on kernels without iptable_raw module due to unconditional initNoTrackChain() call #10759

Closed
opened 2026-08-05 01:27:11 -04:00 by saavagebueno · 0 comments
Owner

Originally created by @thvevirtue on GitHub (Mar 9, 2026).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/5551

Environment:
• Ubiquiti UXG-Enterprise gateway
• Kernel: 5.15.72-ui-cn9670 (ARM64, Marvell OcteonTX CN9670)
• Debian 11 (bullseye)
• Available iptables tables: filter, nat, mangle — no raw table
• The iptable_raw kernel module is not shipped with this kernel (not on disk, can't be loaded)

Problem:

NetBird v0.66.2 fails to start with netbird firewall enabled:
create firewall manager: init firewall: init notrack chain: create chain:
running [/usr/sbin/iptables -t raw -N NETBIRD-RAW --wait]: exit status 3:
iptables v1.8.7 (legacy): can't initialize iptables table 'raw': Table does not exist

Root cause:

PR #5166 (d4f7df2, merged Jan 27, 2026) added initNoTrackChain() to manager_linux.go, which is called unconditionally during Init(). This creates a NETBIRD-RAW chain in the raw iptables table on every startup, regardless of whether the eBPF proxy is actually in use.

On kernels that don't ship the iptable_raw module, this is a fatal error. Combined with #5208 ("Ensured NetBird stops on firewall initialization failure"), the client cannot start at all with DisableFirewall: false.

Workaround:

Downgrading to v0.64.0 (released Jan 20, 2026, before #5166) resolves the issue. The firewall works correctly using only the filter, nat, and mangle tables.

Suggested fix:

initNoTrackChain() should either:

  1. Be called lazily — only when SetupEBPFProxyNoTrack() is actually invoked, or
  2. Gracefully degrade when the raw table is unavailable (log a warning, skip notrack setup), since the NOTRACK rules are only needed to prevent conntrack interference with eBPF proxy loopback traffic — not for core firewall functionality.
Originally created by @thvevirtue on GitHub (Mar 9, 2026). Original GitHub issue: https://github.com/netbirdio/netbird/issues/5551 Environment: • Ubiquiti UXG-Enterprise gateway • Kernel: 5.15.72-ui-cn9670 (ARM64, Marvell OcteonTX CN9670) • Debian 11 (bullseye) • Available iptables tables: filter, nat, mangle — no raw table • The iptable_raw kernel module is not shipped with this kernel (not on disk, can't be loaded) Problem: NetBird v0.66.2 fails to start with netbird firewall enabled: create firewall manager: init firewall: init notrack chain: create chain: running [/usr/sbin/iptables -t raw -N NETBIRD-RAW --wait]: exit status 3: iptables v1.8.7 (legacy): can't initialize iptables table 'raw': Table does not exist Root cause: PR #5166 (d4f7df2, merged Jan 27, 2026) added initNoTrackChain() to manager_linux.go, which is called unconditionally during Init(). This creates a NETBIRD-RAW chain in the raw iptables table on every startup, regardless of whether the eBPF proxy is actually in use. On kernels that don't ship the iptable_raw module, this is a fatal error. Combined with #5208 ("Ensured NetBird stops on firewall initialization failure"), the client cannot start at all with DisableFirewall: false. Workaround: Downgrading to v0.64.0 (released Jan 20, 2026, before #5166) resolves the issue. The firewall works correctly using only the filter, nat, and mangle tables. Suggested fix: initNoTrackChain() should either: 1. Be called lazily — only when SetupEBPFProxyNoTrack() is actually invoked, or 2. Gracefully degrade when the raw table is unavailable (log a warning, skip notrack setup), since the NOTRACK rules are only needed to prevent conntrack interference with eBPF proxy loopback traffic — not for core firewall functionality.
saavagebueno added the triage-needed label 2026-08-05 01:27:11 -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#10759