Node version: 2.8.0 (Docker, remnawave/node:latest), panel 2.8.0
Symptom: with any plugin config where egressFilter.enabled: true, all outbound traffic from the node host is dropped: clients complete the handshake (VLESS Reality / Hysteria2), xray access.log shows connections "accepted", but no data flows — browsers show ERR_CONNECTION_CLOSED. Disabling only the egressFilter (all other plugins still enabled) fully restores traffic.
Bisection (single node, vanilla config: one vless-reality inbound + freedom outbound, tested one change at a time):
| egressFilter |
blockedIps |
blockedPorts |
result |
| on |
RFC1918 + bogons (17 entries) |
25,465,587,2525 |
broken |
| on |
same minus 240.0.0.0/4 |
same |
broken |
| on |
same minus 0.0.0.0/8, ::/128, ::1/128 |
same |
broken |
| on |
full (17) |
[] (empty) |
broken |
| off |
— |
— |
works |
The breakage is independent of the set contents — it looks like the egress chain itself drops/rejects everything once it is created.
Other plugins verified fine in isolation on 2.8.0: connectionDrop (with node IPs whitelisted), ingressFilter, torrentBlocker.
Why this wasn't visible before 2.8.0: node 2.7.0 was built on node:24.14-alpine (musl), while nftables-napi ≤ 0.4.4 and sockdestroy ≤ 1.3.0 shipped no musl prebuilds — the native binding failed to load, so plugin enforcement was silently a no-op (sync logs looked normal). 2.8.0 moved to Debian trixie (glibc), so the nft rules actually get installed for the first time — and the egress chain issue surfaces immediately.
Filed a companion issue in nftables-napi as the chain/rule creation lives there.
Happy to provide more details (plugin JSON, nft ruleset dump from an affected host).
Node version: 2.8.0 (Docker,
remnawave/node:latest), panel 2.8.0Symptom: with any plugin config where
egressFilter.enabled: true, all outbound traffic from the node host is dropped: clients complete the handshake (VLESS Reality / Hysteria2), xray access.log shows connections "accepted", but no data flows — browsers show ERR_CONNECTION_CLOSED. Disabling only the egressFilter (all other plugins still enabled) fully restores traffic.Bisection (single node, vanilla config: one vless-reality inbound + freedom outbound, tested one change at a time):
240.0.0.0/40.0.0.0/8,::/128,::1/128[](empty)The breakage is independent of the set contents — it looks like the egress chain itself drops/rejects everything once it is created.
Other plugins verified fine in isolation on 2.8.0: connectionDrop (with node IPs whitelisted), ingressFilter, torrentBlocker.
Why this wasn't visible before 2.8.0: node 2.7.0 was built on
node:24.14-alpine(musl), whilenftables-napi≤ 0.4.4 andsockdestroy≤ 1.3.0 shipped no musl prebuilds — the native binding failed to load, so plugin enforcement was silently a no-op (sync logs looked normal). 2.8.0 moved to Debian trixie (glibc), so the nft rules actually get installed for the first time — and the egress chain issue surfaces immediately.Filed a companion issue in nftables-napi as the chain/rule creation lives there.
Happy to provide more details (plugin JSON, nft ruleset dump from an affected host).