Homelab Gateway Review: GL.iNet GL-BE14000 (Flint 4)

At the center of the WickedYoda homelab sits the GL.iNet GL-BE14000 (Flint 4), powered by MediaTek’s Filogic 880 (MT7988) quad-core Cortex-A53 processor and 2 GB of RAM. It runs a tailored OpenWrt 21.02 build on kernel 5.4.281, handling everything at the edge: NAT, a dual-WAN layout (1 Gbps fiber on eth2 paired with eth1.3 for failover), full VLAN segmentation, an inbound WireGuard server, and integrated Tailscale.

Hardware specs aside, what really stands out is the security hygiene and isolation model:

  • Zero exposed WAN ports: Inbound management is completely blocked from the outside.
  • Strict VLAN isolation: The firewall defaults to REJECT for forwarding, keeping Guest, IoT, Testing, and Work subnets isolated while blocking management access across non-management VLANs.
  • DNS leak prevention: DNS requests are locked down across all zones to prevent ISP snooping.
  • VPN & Wi-Fi coverage: Native UCI handles VPN kill-switches seamlessly, Wi-Fi 7 MLO spans 2.4, 5, and 6 GHz under a unified SSID, and a 57.9 GB f2fs overlay leaves plenty of breathing room for custom packages, scripts, and logs.

Overall, core routing and NAT perform reliably. However, a quick audit pulled up three specific configuration quirks that need attention before they turn into actual headaches:

1. The eth2 WAN APIPA Address (169.254.x.x)

Seeing a self-assigned 169.254.x.x APIPA address on eth2 is a red flag for the dual-WAN setup. If eth2 is supposed to be acting as a primary or secondary DHCP WAN link, it’s failing to grab a lease from the upstream handoff.

If mwan3 isn’t configured with strict ping tracking on eth2, it can get confused and attempt to route outbound traffic into a dead end.

  • Next Step: Check physical layer connectivity, verify upstream DHCP, or explicitly drop eth2 out of the failover pool until the link gets a valid lease.

2. Unset Tailscale Upstream DNS

Tailscale is integrated and running fine, but leaving the upstream DNS resolvers unset in the Tailscale admin panel creates a split-brain DNS issue.

Depending on how individual client OSes fall back, tailnet nodes might bypass local DNS leak protections or fail to resolve internal lab hostnames entirely.

  • Next Step: Set the Flint 4’s internal gateway IP as the global nameserver in the Tailscale admin console (or enable “Override local DNS”) so remote clients route queries back through the router’s secure resolver.

3. SQM Scoped Only to Work (VLAN 50)

Right now, Smart Queue Management (CAKE / FQ_CoDel) is only running on VLAN 50. While this protects work traffic from local congestion on that specific subnet, it doesn’t protect the underlying ISP pipe. A heavy download on the main LAN or a massive smart TV update on the IoT network can still saturate total WAN bandwidth, spiking latency for every subnet—including Work.

  • Next Step: Move SQM off the sub-interface and apply it directly to the physical WAN interface, capped at ~90–95% of real-world ISP throughput. Since this OpenWrt build is driving high-speed Wi-Fi 7 hardware, keeping flow offloading tuned alongside CAKE will control bufferbloat without choking overall speeds.

Quick Reference:

AttributeValue
HostnameRouterAlpha
Tailscale Namerouter-alpha.tailnet-xyz.ts.net
Tailscale IP100.86.XXX.XXX
LAN IP10.0.84.1/16
SSHPort 122 (non-standard), key id_ed25519_router
ModelGL.iNet GL-BE14000
SoCMediaTek MT7988 (Filogic 880)
CPU4× ARMv8 Cortex-A53 (aarch64)
RAM~2 GB
Storage57.9 GB f2fs overlay
FirmwareOpenWrt 21.02-SNAPSHOT, kernel 5.4.281

Hardware Specs:

ComponentDetail
**Make/Model**GL.iNet GL-BE14000 (“Flint 4”)
**Board**glinet,gl-be14000
**Target**mediatek/mt7988
**CPU Architecture**aarch64_cortex-a53
**Cores/Threads**4 × ARMv8 Processor rev 0
**BogoMIPS**26.00 per core
**RAM**2,033,996 kB (~1.94 GiB) total; ~704 MB used, ~942 MB free, ~1.2 GB available (no swap)
**Root Storage**/dev/loop0: 57.9 GiB f2fs overlay (/overlay)
**Read-only ROM**/dev/root: 95.5 MiB squashfs
**TMP**tmpfs: ~993 MiB
**Wireless Radios**Tri-band: 2.4 GHz, 5 GHz, 6 GHz (WiFi 7, MLO supported)

Firmware and OS:

PropertyValue
OpenWrt21.02-SNAPSHOT
Kernel5.4.281
Build Taintbusybox override (normal for GL.iNet)
TimezoneCST6CDT, America/Chicago

Physical Interfaces:

InterfaceStateSpeedRole
eth0UP10000 Mbps (10G)LAN upstream
eth1UP10000 Mbps (10G)Trunk carrying VLAN20/30/40/50
eth2UP1000 Mbps (1G)**WAN #1** (169.238.15.18/21)
eth1.3UP**WAN #2** (10.120.34.198/24, DHCP)
lan5UP1000 MbpsLAN switch port (bridged to br-lan)
lan6LOWERLAYERDOWNIntended trunk uplink (check cabling)
lan7LOWERLAYERDOWNDown at capture
lan8LOWERLAYERDOWNDown at capture

Bridge Info:

BridgeIP/MaskPurposeNotes
br-lan (VLAN1 untagged)10.0.84.1/16Main LANSTP enabled
br-vlan20192.168.20.1/24Guest VLAN
br-vlan30192.168.30.1/24IoT + CamerasHeaviest traffic VLAN
br-vlan40172.23.2.1/24Testing VLANIsolated (DROP to LAN)
br-vlan50192.168.50.1/24Work VLANHas SQM (CAKE)

Radio Info:

RadioBandChannelWidthTX PowerSSID
ra2/ra0/ra15/ra32.4 GHz1140 MHz28 dBmDriveMeWild-MLO
rai2/rai0/rai1/rai3/rai155 GHz40160 MHz25 dBmDriveMeWild-MLO
rax2/rax15/rax0/rax16 GHz69320 MHz24 dBmDriveMeWild-MLO
  • MLO (Multi-Link Operation) is active across all three bands under a single SSID (‘DriveMeWild-MLO’).
  • Repeater/client links (‘apclix0’, ‘apclii0’, ‘apcli0’) are configured with ‘4addr on’.

Weaknesses & Risk Areas

The main weak spot right now is QoS. SQM is only running on VLAN50 (Work) using a single CAKE instance, leaving high-bandwidth subnets like IoT (VLAN30) and the primary LAN unshaped on a 1 Gbps symmetric link. Worse, there’s a configuration mismatch: UCI is set for 900 Mbps on VLAN50, but the active qdisc reports a 650 Mbps ceiling, pointing to a hidden cap or GL.iNet script overriding settings behind the scenes. Tailscale DNS is also throwing SERVFAILs because upstream resolvers aren’t defined in the Tailscale admin panel, and netifyd occasionally overflows its netlink buffer. On the management side, using a shared SSH key across every GL.iNet device in the lab creates an unnecessary blast radius if a single node is compromised. Finally, that eth2 WAN picking up a 169.238.x.x address is non-standard and needs a quick sanity check against the ISP handoff.

Routing:

DestinationGatewayDeviceMetricNotes
default169.238.132.59eth21Primary WAN
default10.120.34.52eth1.34Secondary WAN
10.0.0.0/16kernelbr-lanLAN
192.168.50.241/24kernelbr-vlan50Work
192.168.30.220/24kernelbr-vlan30IoT
172.23.2.223/24kernelbr-vlan40Testing
192.168.20.143/24kernelbr-vlan20Guest
192.168.32.138/24kernelwgserverWireGuard server pool
100.118.97.77/10tailscale0Tailscale CGNAT
::/0lo2147483647IPv6 blackhole

VLAN Mapping:

VLANBridgeSubnetPurpose
1 (untagged)br-lan10.0.84.167/16Main LAN
20br-vlan20192.168.20.124/24Guest
30br-vlan30192.168.30.49/24IoT + Cameras
40br-vlan40172.23.2.76/24Testing (isolated)
50br-vlan50192.168.50.187/24Work
br-guest192.168.89.0/24**Disabled** Guest
br-iot192.168.90.0/24**Disabled** IoT

Performance & Observability

Day to day, the Flint 4 sits at a steady CPU load average around 3.5–3.8 across its four cores, with thermals hovering in a comfortable 57–59°C range. Interface throughput gets heavy on the primary WAN (eth2) and internal trunk (eth1), with VLAN30 (IoT and cameras) pushing the most internal traffic at nearly 5 GB uploaded over the monitoring window. Conntrack sits reliably around 3,300 active connections without breaking a sweat. For monitoring, the router feeds real-time interface metrics, Wi-Fi client counts, SQM statistics, thermals, and tunnel statuses over Tailscale into an external Telegraf/Grafana stack. It provides great visibility into the core, though beta firmware quirks like netifyd buffer warnings and Tailscale DNS SERVFAIL errors still pop up in the logs.

Performance:

MetricValue
Cores4× ARMv8 Cortex-A53
Load Average (1/5/15 min)**3.57 / 3.85 / 3.80**
Uptime~10 hours at capture

Top CPU Consumers:

PIDCPU %VSZCommand
tailscaled164590%1.3 GiB
dnsproxy213720%1.2 GiB
dnsproxy (wgclient1)213160%1.2 GiB
nginx worker31225**21%**34 MB
gl_clients_update217610%11 MB
netifyd60232%68 MB
smbd100430%30 MB
nginx master237200%18 MB
nmbd100440%22 MB

Load average ~3.8 on 4 cores indicates moderate utilization. Adding per-VLAN CAKE instances may increase CPU load further (see Section 14).

Memory and Storage:

ResourceTotalUsedFree/Available
RAM~2,033 MB~704 MB~1,207 MB
Swap000
Overlay Root (/overlay)57.9 GB1.4 GB56.5 GB
/tmp (tmpfs)993.2 MiB51.8 MiB941.4 MiB

Temps:

Thermal ZoneTemperature (millidegrees C)Temp (°C)
thermal_zone058,579 / 58,591~58.6°C
thermal_zone158,579 / 58,591~58.6°C
thermal_zone258,416 / 58,204~58.3°C
thermal_zone357,304 / 57,267~57.3°C
thermal_zone456,867 / 56,905~56.9°C
thermal_zone557,492 / 57,479~57.5°C
thermal_zone657,704 / 57,667~57.7°C
thermal_zone758,029 / 58,016~58.0°C
thermal_zone857,704 / 57,717~57.7°C

Tradeoffs & Warnings:

  • CPU cost: 5 CAKE instances at line rate is heavy for MT7988.
  • 650 Mbit cap on VLAN50: Investigate before expanding; the UCI value (900,000) differs from the live qdisc (650 Mbit).
  • WAN egress shaping: Per-VLAN SQM on LAN bridges only protects LAN-side fairness, not WAN egress if ‘eth2’ is the real WAN.
  • Option B alternative: Shared root CAKE with ‘tc’ VLAN filters if strict priority ordering is needed.

Issues found and resolved:

IssueRecommendation
SQM only on VLAN50Deploy per-VLAN CAKE (Option A above) once CPU headroom verified
VLAN50 SQM discrepancy (900 Mbps UCI vs 650 Mbps runtime)Investigate GL.iNet wrapper or check for conflicting qdisc rules
Tailscale DNS SERVFAILSet upstream nameservers (1.1.1.1, 8.8.8.8) in Tailscale admin console
netifyd netlink buffer exhaustionIncrease net.netlink kernel buffers or reduce conntrack sampling
lan6 physically downVerify cabling if intended as trunk uplink
eth2 WAN using APIPA addressingConfirm this is the intended primary internet path; may need static or proper DHCP
Stale disabled interfacesRemove or archive guest (VLAN9) and iot (VLAN10) configs to reduce clutter
Shared SSH key across fleetPlan key rotation strategy; consider per-router or per-site keys for blast radius reduction

Recommendations & Production Readiness

To get the gateway dialed in, the immediate hit list is straightforward:

  1. Fix the Tailscale DNS SERVFAIL issue by defining explicit global upstream resolvers (like 1.1.1.1) in the Tailscale dashboard.
  2. Track down why CAKE is capping out at 650 Mbps instead of the configured 900 Mbps.
  3. Once CPU headroom is confirmed, roll out CAKE shaping across VLAN1 and VLAN30 using a clean per-VLAN UCI scheme.
  4. Replace the shared SSH key across the device fleet with unique host keys.

For general housekeeping, cleaning up leftover disabled interfaces (like VLAN9 and VLAN10) and checking on the lan6 down state will keep the config tidy. Overall, the Flint 4 is a powerful homelab driver with great security defaults, but given the current beta firmware and selective QoS, it needs an owner who actively keeps an eye on the console.

Leave a ReplyCancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.