TTR Networks

Intermediate · Debian as an office router: interfaces, VLANs and a firewall · section 7 of 8

Troubleshooting

✓ Lab-tested 5 November 2026 on Debian 13.7, systemd 257, nftables 1.1.3

Most problems with a Debian router are in one of three places, and each has a command that tells you which: networkctl for interfaces, sysctl net.ipv4.ip_forward for routing, and the nftables counters for the policy.

The VLAN that never appears

A .netdev file for a VLAN does nothing on its own. networkd creates a VLAN only when the parent interface's .network file names it with VLAN=. In the lab, a new printers VLAN had its .netdev and .network files, networkctl reload succeeded, and the interface simply didn't exist. Adding VLAN=printers to the trunk's file, and reloading again, created it at once. There's no error message for this, so it's the first thing to check.

Symptoms and causes

SymptomCheckLikely cause
A link stays pending in networkctlsystemctl status systemd-udevdnetworkd waits for udev to set up each link; udev isn't running
A link is unmanagednetworkctl status <link>No .network file matches its name; check [Match] Name=
A VLAN interface doesn't existgrep VLAN= /etc/systemd/network/*.networkThe parent's .network doesn't list it
VLAN up, but hosts can't reach the gatewaytcpdump -nei eth1 vlanThe switch port isn't tagging that VLAN, or the IDs differ
Nothing is forwarded between VLANssysctl net.ipv4.ip_forwardForwarding off: the sysctl.d file is missing or not applied
One pair of VLANs can't talknft list chain inet filter forwardThat pair isn't in the verdict map: the final counter climbs
Internet fails, VLANs workThe ISP side of a captureNo masquerade, or it matches the wrong output interface
Can't reach the router itselfnft list chain inet filter inputThe input chain doesn't allow it from that VLAN

Cheat sheets: nftables, Network error messages explained, Common ports.

A VLAN that never appears (real output)
root@router:~# ls /etc/systemd/network | grep printers; networkctl reload; sleep 2; networkctl list printers
30-printers.netdev
30-printers.network
Interface "printers" not found.

root@router:~# sed -i 's/^VLAN=servers$/VLAN=servers\nVLAN=printers/' /etc/systemd/network/20-trunk.network && grep VLAN= /etc/systemd/network/20-trunk.network && networkctl reload && sleep 2 && networkctl list printers
VLAN=staff
VLAN=guest
VLAN=servers
VLAN=printers
IDX LINK     TYPE OPERATIONAL SETUP
 16 printers vlan routable    configured

1 links listed.
  • Lines 1–4: Both files exist and the reload succeeds, but the VLAN doesn't.
  • Lines 6–10: Name it in the trunk's .network file…
  • Lines 11–12: …and reload again: now it exists.

Check your understanding

A new VLAN's interface doesn't exist after networkctl reload, and nothing is logged. What do you check first?

  • That the parent port's .network file lists it with VLAN=.
  • That forwarding is on.
  • The nftables forward chain.
  • That the switch port is tagged.