Tailscale works for hours advertising subnet routes, then stops. Using Starlink

Tailscale / OpenWRT One working for hours advertising static IPs over Starlink, then the router drops off the machines tasilcale admin page and is unconctactable. Rebooting the router solves the issue for a while.

If i disconnect Starlink from the router and connect a laptop i can access the internet ok, but the router can’t be seen. Rebooting the router fixes the issue for a while.

I’m not sure of the correct format to include information from the system log on this post, hopefully this is suitable.

I can’t say i’ve definitley captured the first error in the log, i’ll try again.

Thanks

Wed Jan 21 15:54:57 2026 daemon.warn odhcpd[1912]: No default route present, overriding ra_lifetime to 0!Wed Jan 21 15:54:57 2026 daemon.err
 
tailscaled[2316]: 2026/01/21 15:54:57 health(warnable=no-derp-connection): error: Tailscale could not connect to the 'London' relay server. Your Internet connection might be down, or the server might be temporarily unavailable.

Wed Jan 21 15:54:57 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:57 [RATELIMIT] format("health(warnable=%s): error: %s")

Wed Jan 21 15:54:57 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:57 magicsock: [0x4004262dc0] derp.Recv(derp-8): derphttp.Client.Recv connect to region 8 (lhr): dial tcp4 176.58.92.254:443: connect: network is unreachable

Wed Jan 21 15:54:57 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:57 [RATELIMIT] format("magicsock: [%p] derp.Recv(derp-%d): %v")

Wed Jan 21 15:54:57 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:57 [RATELIMIT] format("health: connectivity impacted; triggering captive portal detection") (80 dropped)

Wed Jan 21 15:54:57 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:57 health: connectivity impacted; triggering captive portal detection

Wed Jan 21 15:54:57 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:57 [RATELIMIT] format("DetectCaptivePortal(found=false)") (3 dropped)

Wed Jan 21 15:54:57 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:57 DetectCaptivePortal(found=false)

Wed Jan 21 15:54:57 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:57 health: connectivity impacted; triggering captive portal detection

Wed Jan 21 15:54:57 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:57 [RATELIMIT] format("health: connectivity impacted; triggering captive portal detection")

Wed Jan 21 15:54:58 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:58 [RATELIMIT] format("%s: connecting to derp-%d (%v)") (27 dropped)

Wed Jan 21 15:54:58 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:58 derphttp.Client.Recv: connecting to derp-8 (lhr)

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 control: controlhttp: failed dialing using DialPlan, falling back to DNS; errs=multiple errors:

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 	connection attempts aborted by context: context deadline exceeded

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 	connection attempts aborted by context: context deadline exceeded

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 	connection attempts aborted by context: context deadline exceeded

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 	connection attempts aborted by context: context deadline exceeded

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 	connection attempts aborted by context: context deadline exceeded

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 	connection attempts aborted by context: context deadline exceeded

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 	connection attempts aborted by context: context deadline exceeded

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 	connection attempts aborted by context: context deadline exceeded

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 netcheck: netcheck: UDP is blocked, trying HTTPS

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 netcheck: UDP is blocked, trying ICMP

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 [RATELIMIT] format("magicsock: last netcheck reported send error. Rebinding.") (2 dropped)

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 magicsock: last netcheck reported send error. Rebinding.

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 [RATELIMIT] format("Rebind; defIf=%q, ips=%v") (2 dropped)

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 Rebind; defIf="", ips=

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 derphttp.Client.Recv: connecting to derp-8 (lhr)

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 [RATELIMIT] format("%s: connecting to derp-%d (%v)")

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 DetectCaptivePortal(found=false)

Wed Jan 21 15:54:59 2026 daemon.err tailscaled[2316]: 2026/01/21 15:54:59 [RATELIMIT] format("DetectCaptivePortal(found=false)")

Wed Jan 21 15:55:02 2026 daemon.err tailscaled[2316]: 2026/01/21 15:55:02 netcheck: netcheck: UDP is blocked, trying HTTPS

Wed Jan 21 15:55:02 2026 daemon.err tailscaled[2316]: 2026/01/21 15:55:02 [RATELIMIT] format("netcheck: netcheck: UDP is blocked, trying HTTPS")

Wed Jan 21 15:55:02 2026 daemon.err tailscaled[2316]: 2026/01/21 15:55:02 netcheck: UDP is blocked, trying ICMP


Not a solution but consider using e.g. watchcat to check the connection and reboot or restart tailscale if the connection is lost automatically.

if a connection is lost or the connection path is changed which happens with these kind of connections then the only way to recover might be to restart tailscale.

But I am not familiar with tailscale so there might be other options available.

I use Netbird but I doubt that will do any better in these cases

Is starlink in direct or in nat mode?

I’m not sure, whatever the default mode is. I haven’t seen those options before I don’t think, I can’t remember seeing them when I used the app with Starlink. I haven’t seen those seen bypass mode, but I thought that was for the Starlink router, which I’m not using.

I’ll have a look into watchat, thanks.

I noticed today on the Luci main status page that there’s details populated for the IPV4 upstream with DHCP address etc, it worked fine for about 4 hours before dropping out. When I connected back to the router, that network section on the status page was empty.

I didn’t copy the system log off in time to see the actual time it dropped out.

Restarting the router solved the issue

I'm not very familiar with Tailscale, but this error indicates you have something wrong with your ipv6 config. Starlink provides ipv6 feed, so you would not expect this error. With a broken config, the ipv6 connection could time out after a few hours - and if Tailscale is using ipv6, this could be your problem....

Maybe share your configs.....
Particularly:

uci show network
uci show dhcp
1 Like

Hi, thanks for the reply. I’ll double check the config, I’ve got a feeling I may have disabled the IPV6 during testing.

It can work for hours before an issue arises, is confusing me.

those uci commands, are they entered in when SSH into the router?

Thanks

SSH into the router

This is what I see running those commands At the moment, that is in a working state. I’ll try again when it drops out.

Thanks

In future, please copy and paste the text, not post screenshots. It makes it easier to reply if anyone wants to point out something.
Place what you paste between two pairs of triple backtics, ie put ```
on a line by itself, paste your text, then end with another ``` on a line by itself.

Your network config looks weird.

Why do you have a network.Starlink=interface section?
The connection for the Starlink router should be your wan connection.

If the link to the Starlink router is connected to your eth1 port, I would expect to see, for your ipv6 config, something like:

network.wan6=interface
network.wan6.device='eth1'
network.wan6.proto='dhcpv6'
network.wan6.reqprefix='auto'
network.wan6.reqaddress='try'

To get any help, you will have to explain why your config is as it is.

Fair enough, will do.

I can’t really explain the configuration, I did it through a mix of guides and information I found online.

I’ll look at reconfiguring.