Tray reports Coder Connect as healthy while tunnel/DNS is broken; stale NRPT rule causes downstream tooling to hang or fail
@aslilac ya está trabajando en esto.
Desde el 20/8/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Summary
The Coder Desktop tray indicator currently reflects "service running / signed in"
rather than "tunnel + DNS are actually serving traffic." When the dataplane goes
unhealthy (network flap, sleep/wake, control-plane DNS hiccup, etc.) but the
service is still running, the tray stays green while:
- The
.coderNRPT rule and Wintun adapter remain in place. - The embedded DNS server either keeps answering with
fd60:627a:a42b::/48
addresses that no longer route, or silently returns empty answers.
This misleads both users and downstream tooling that relies on *.coder
resolving correctly, producing two distinct user-visible failure modes.
Failure mode 1 — stale DNS still answering
Embedded DNS continues to return fd60::/48 addresses for <workspace>.coder,
but packets to those addresses go nowhere. Downstream effects:
ssh coder.<workspace>(via acoder config-ssh-style ProxyCommand) hitscoder ssh --stdio, which callsworkspacesdk.ExistsViaCoderConnect,
sees afd60::/48answer, commits to the direct-Connect path, and times out
withdial tcp [fd60:...]:22: connect: operation timed out.coder ssh <workspace>(no--stdio) still works because it bypasses the
Connect probe and builds its own tailnet client.- Reported recovery in the field has been "reboot the laptop," which tears down
the stale state.
(Filed separately against coder/coder as coder/coder#26669 for the CLI-side
defensive fix.)
Failure mode 2 — embedded DNS returns empty answers
Conversely, the embedded DNS server stops returning anything for <workspace>.coder
while the tray still shows connected:
> Resolve-DnsName -Name myworkspace.coder -Server fd60:627a:a42b::53
(empty answer — no IPAddress, no NXDOMAIN)
Downstream effects:
- File sync's remote directory picker (
POST /api/v0/list-directoryagainsthttp://<workspace>.coder:4/) fails with a rawSystem.Net.Sockets.SocketException (11001): No such host is known.
surfaced to the user as a wall of stack trace in the directory picker dialog. - Mutagen sync daemon repeatedly fails to resolve
<workspace>.coderhostnames. - Tailnet logs show
failed to dial tailnet v2+ API,no matching peer, etc.
This is the same underlying state-management gap as coder/coder-desktop-windows#170, and tends to follow
the "service restarted without full off/on toggle" path from #149.
What I'd like to see
- Tray indicator should reflect dataplane health, not just service state.
When the tunnel cannot carry traffic (no peers, can't dial coordinator, embedded
DNS not serving), the tray should turn yellow/red and surface a one-click
recovery action ("Restart Coder Connect"). - State should be coherent on tunnel-unhealthy. If the tunnel is not
actually serving traffic, the NRPT rule and embedded DNS should either be
torn down (so callers get a clean NXDOMAIN) or kept in lockstep with the
tunnel's real status. The current "DNS lingers, tunnel is gone" intermediate
state is what trips both failure modes above. - Friendlier error in the directory picker. Even after the underlying
issue is fixed,list-directoryshould not surface a rawAggregateException
stack to the user. Catch the socket / DNS failure class and render
"Workspace unreachable — check Coder Connect status," ideally with a link to
the tray. - Recovery shouldn't require a reboot. Today users in the field are
resolving this by rebooting, or by toggling Coder Connect off/on (#149 notes
that a service restart alone leaves the system in a broken state — the
off/on toggle from the tray is the documented recovery path). Either the
service-restart path should fully re-establish state, or the off/on toggle
should be discoverable from inside the broken state (e.g. surfaced by item 1).
Reproduction
Hard to deterministically reproduce, but reported triggers include:
- Waking from sleep on a corporate machine (Zscaler / split-horizon DNS in the
mix, per #149). - Network flap while signed in.
- Control-plane DNS briefly failing to resolve, then recovering.
- Restarting the Coder Desktop Windows service while signed in (per coder/coder-desktop-windows#170:
deletes the Wintun adapter, NRPT rule, andCoderVpnServiceentry without
recreating them).
In all cases the tray UI continues to display the connected state.
Related
- coder/coder#26669 — companion CLI-side issue for
ExistsViaCoderConnectto
add a liveness probe so the CLI degrades gracefully even if Desktop is in
this state. - coder/coder-desktop-windows#170 — DNS publishing silently fails — workspace lookups return empty answers
despite Connect being on. - #149 — Not connected after waking from sleep.
Created on behalf of @mdanter
- Lenguaje dominante
- C#
- Estrellas
- 29
- Forks
- 12
- Merge medio
- 4 h 15 min
- PR fusionados (30 d)
- 2
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de coder/coder-desktop-windows
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
coder/coder-desktop-windows#166 ·
-
CoderVPN Unsigned Abiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
coder/coder-desktop-windows#179 · 3 comentarios ·
-
bug coder-desktop networking
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
coder/coder-desktop-windows#177 · 2 comentarios ·
-
bug github-sync
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
coder/coder-desktop-windows#170 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
coder/coder-desktop-windows#151 ·
Todos los issues de coder/coder-desktop-windows
Issues similares
-
CS0162 "Unreachable code detected" warning from a MSBuildTemp .tmp file in every game project Abiertobug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
Type: enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
apache/arrow-adbc#4809 ·
-
type/automation type/tech-debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
microsoft/vscode-azurefunctions#5197 · 1 comentario ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
microsoft/microsoft-ui-reactor#1274 ·