[Bug] Part of network not avail when the DERP list load is failed #1068

Closed
opened 2025-12-29 02:28:05 +01:00 by adam · 2 comments
Owner

Originally created by @x1arch on GitHub (Jul 18, 2025).

Is this a support request?

  • This is not a support request

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Half of network is died when the headscale server didn't got DERP list from Tailscale:

headscale | 2025-07-18T02:27:17Z ERR Could not load DERP map from path error="Get "https://controlplane.tailscale.com/derpmap/default": context deadline exceeded" func=GetDERPMap url=https://controlplane.tailscale.com/derpmap/default

Expected Behavior

The server will try to download DERP servers list recursively, while did not got an answer. And will clean old list only after getting new one.

Steps To Reproduce

Reject connection to Tailscale on the firewall when it will try to get DERP list.

Environment

- OS: Ubuntu 24.04
- Headscale version: 0.26.1
- Tailscale version: 1.80.0

Runtime environment

  • Headscale is behind a (reverse) proxy
  • Headscale runs in a container

Debug information

The nodes showed on admin panel as online, but can't connect with another nodes.
I shutted it down tailscale app on my phone and in Headscale Admin the phone change status to offline, then I open app again and phone change status to online, but the connection icon stay active in loading state. Of course pings to phone are failed. After Headscale server restart all network returned online.

Originally created by @x1arch on GitHub (Jul 18, 2025). ### Is this a support request? - [x] This is not a support request ### Is there an existing issue for this? - [x] I have searched the existing issues ### Current Behavior Half of network is died when the headscale server didn't got DERP list from Tailscale: > headscale | 2025-07-18T02:27:17Z ERR Could not load DERP map from path error="Get \"https://controlplane.tailscale.com/derpmap/default\": context deadline exceeded" func=GetDERPMap url=https://controlplane.tailscale.com/derpmap/default ### Expected Behavior The server will try to download DERP servers list recursively, while did not got an answer. And will clean old list only after getting new one. ### Steps To Reproduce Reject connection to Tailscale on the firewall when it will try to get DERP list. ### Environment ```markdown - OS: Ubuntu 24.04 - Headscale version: 0.26.1 - Tailscale version: 1.80.0 ``` ### Runtime environment - [x] Headscale is behind a (reverse) proxy - [x] Headscale runs in a container ### Debug information The nodes showed on admin panel as online, but can't connect with another nodes. I shutted it down tailscale app on my phone and in Headscale Admin the phone change status to offline, then I open app again and phone change status to online, but the connection icon stay active in loading state. Of course pings to phone are failed. After Headscale server restart all network returned online.
adam added the bugDERP labels 2025-12-29 02:28:05 +01:00
adam closed this issue 2025-12-29 02:28:06 +01:00
Author
Owner

@Pdobry commented on GitHub (Jul 18, 2025):

I am experiencing same issue. I am running headscale/headscale:0.26.1 in Docker. Initial DERP server list download during startup is fine:

2025-07-18T07:52:19Z INF Opening database database=sqlite3 path=/var/lib/headscale/db.sqlite
2025-07-18T07:52:19Z INF Using policy manager version: 2
2025-07-18T07:52:19Z INF Starting Headscale commit=474ea236d0c6d393dbcf7baa98da240ad20c1b66 version=0.26.1
2025-07-18T07:52:19Z INF Clients with a lower minimum version will be rejected minimum_version=v1.62.0
2025-07-18T07:52:19Z DBG Loading DERPMap from path func=GetDERPMap url=https://controlplane.tailscale.com/derpmap/default

But the refresh fails:

2025-07-17T14:35:55Z INF Fetching DERPMap updates
2025-07-17T14:36:25Z ERR Could not load DERP map from path error="Get \"https://controlplane.tailscale.com/derpmap/default\": context deadline exceeded" func=GetDERPMap url=https://controlplane.tailscale.com/derpmap/default
@Pdobry commented on GitHub (Jul 18, 2025): I am experiencing same issue. I am running `headscale/headscale:0.26.1` in Docker. Initial DERP server list download during startup is fine: ``` 2025-07-18T07:52:19Z INF Opening database database=sqlite3 path=/var/lib/headscale/db.sqlite 2025-07-18T07:52:19Z INF Using policy manager version: 2 2025-07-18T07:52:19Z INF Starting Headscale commit=474ea236d0c6d393dbcf7baa98da240ad20c1b66 version=0.26.1 2025-07-18T07:52:19Z INF Clients with a lower minimum version will be rejected minimum_version=v1.62.0 2025-07-18T07:52:19Z DBG Loading DERPMap from path func=GetDERPMap url=https://controlplane.tailscale.com/derpmap/default ``` But the refresh fails: ``` 2025-07-17T14:35:55Z INF Fetching DERPMap updates 2025-07-17T14:36:25Z ERR Could not load DERP map from path error="Get \"https://controlplane.tailscale.com/derpmap/default\": context deadline exceeded" func=GetDERPMap url=https://controlplane.tailscale.com/derpmap/default ```
Author
Owner

@kradalby commented on GitHub (Aug 22, 2025):

Fixed in #2741

@kradalby commented on GitHub (Aug 22, 2025): Fixed in #2741
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/headscale#1068