[GH-ISSUE #5812] macOS: Network route not installed in OS routing table despite Status: Selected #12060

Closed
opened 2026-08-05 01:32:19 -04:00 by saavagebueno · 6 comments
Owner

Originally created by @Optic00 on GitHub (Apr 7, 2026).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/5812

Describe the problem:
On macOS, a configured Network (192.168.178.0/24) shows as Status: Selected in netbird networks ls, and the log shows the route being added as WireGuard AllowedIP on utun100 — but the route is never written to the macOS routing table. Traffic continues to flow via the default gateway.

Manually adding the route fixes the issue immediately:

sudo route add -net 192.168.178.0/24 -interface utun100

To Reproduce:

  • Configure a Network in Netbird dashboard with a remote LAN (e.g. 192.168.178.0/24)
  • Set a Debian Linux peer as routing peer
  • Connect macOS client
  • Run netbird networks ls → Status shows Selected
  • Run netstat -rn | grep 192.168.178 → no entry
  • Run traceroute 192.168.178.1 → goes via default gateway, not via utun

Expected behavior:
The route should be installed in the macOS routing table automatically when the Network Status is Selected.

Workaround:
Manually setting the route works:

sudo route add -net 192.168.178.0/24 -interface utun100

Logs:
Adding allowed IP to interface utun100 and peer ...: allowed IP 192.168.178.0/24
AllowedIP is set correctly on the WireGuard interface, but no corresponding OS route is written to the macOS routing table.

Environment:

OS: macOS Tahoe 26.3, Apple Silicon (Mac Mini M4)
Daemon version: 0.67.4
CLI version: 0.67.4
Interface type: Kernel
Routing peer OS: Debian Linux
Routing peer Netbird version: 0.67.4

Originally created by @Optic00 on GitHub (Apr 7, 2026). Original GitHub issue: https://github.com/netbirdio/netbird/issues/5812 **Describe the problem:** On macOS, a configured Network (192.168.178.0/24) shows as Status: Selected in netbird networks ls, and the log shows the route being added as WireGuard AllowedIP on utun100 — but the route is never written to the macOS routing table. Traffic continues to flow via the default gateway. Manually adding the route fixes the issue immediately: `sudo route add -net 192.168.178.0/24 -interface utun100 ` **To Reproduce:** - Configure a Network in Netbird dashboard with a remote LAN (e.g. 192.168.178.0/24) - Set a Debian Linux peer as routing peer - Connect macOS client - Run netbird networks ls → Status shows Selected - Run netstat -rn | grep 192.168.178 → no entry - Run traceroute 192.168.178.1 → goes via default gateway, not via utun **Expected behavior:** The route should be installed in the macOS routing table automatically when the Network Status is Selected. **Workaround:** Manually setting the route works: `sudo route add -net 192.168.178.0/24 -interface utun100 ` **Logs:** Adding allowed IP to interface utun100 and peer ...: allowed IP 192.168.178.0/24 AllowedIP is set correctly on the WireGuard interface, but no corresponding OS route is written to the macOS routing table. **Environment:** OS: macOS Tahoe 26.3, Apple Silicon (Mac Mini M4) Daemon version: 0.67.4 CLI version: 0.67.4 Interface type: Kernel Routing peer OS: Debian Linux Routing peer Netbird version: 0.67.4
saavagebueno added the triage-needed label 2026-08-05 01:32:19 -04:00
Author
Owner

@lixmal commented on GitHub (Apr 7, 2026):

Please provide the debug bundle from the template

<!-- gh-comment-id:4198015977 --> @lixmal commented on GitHub (Apr 7, 2026): Please provide the debug bundle from the template
Author
Owner

@Optic00 commented on GitHub (Apr 7, 2026):

file key: 33647ccc1ad30ee83e71e2b120252e4292d141587aa02e1f40dc7a11720e568c/7dbde470-2835-40a9-9b2f-17f19f7604ba

<!-- gh-comment-id:4198415015 --> @Optic00 commented on GitHub (Apr 7, 2026): file key: 33647ccc1ad30ee83e71e2b120252e4292d141587aa02e1f40dc7a11720e568c/7dbde470-2835-40a9-9b2f-17f19f7604ba
Author
Owner

@Optic00 commented on GitHub (Apr 7, 2026):

tested this with an iphone and linux desktop, route works there instantly after setting up the policy for those 2 machines.

<!-- gh-comment-id:4198499817 --> @Optic00 commented on GitHub (Apr 7, 2026): tested this with an iphone and linux desktop, route works there instantly after setting up the policy for those 2 machines.
Author
Owner

@lixmal commented on GitHub (Apr 7, 2026):

You have client routes disabled:

DisableClientRoutes: true
<!-- gh-comment-id:4198521286 --> @lixmal commented on GitHub (Apr 7, 2026): You have client routes disabled: ``` DisableClientRoutes: true ```
Author
Owner

@Optic00 commented on GitHub (Apr 7, 2026):

@lixmal - i must have activated that in settings when i first tested around with netbird a while back.

I apologize for that oversight and thank you for the swift help! it works now!

<!-- gh-comment-id:4198597506 --> @Optic00 commented on GitHub (Apr 7, 2026): @lixmal - i must have activated that in settings when i first tested around with netbird a while back. I apologize for that oversight and thank you for the swift help! it works now!
Author
Owner

@lixmal commented on GitHub (Apr 7, 2026):

You're welcome!

<!-- gh-comment-id:4198629153 --> @lixmal commented on GitHub (Apr 7, 2026): You're welcome!
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#12060