Tray reports Coder Connect as healthy while tunnel/DNS is broken; stale NRPT rule causes downstream tooling to hang or fail
@aslilac đang làm issue này rồi.
Từ ngày 20/8/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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
- Ngôn ngữ chính
- C#
- Star
- 29
- Fork
- 12
- Merge trung bình
- 4 giờ 15 phút
- Pull request đã merge (30 ngày)
- 2
Chuẩn bị môi trường
Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của coder/coder-desktop-windows
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
coder/coder-desktop-windows#166 ·
-
CoderVPN UnsignedĐang mởbug
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 52/100
coder/coder-desktop-windows#179 · 3 bình luận ·
-
bug coder-desktop networking
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
coder/coder-desktop-windows#177 · 2 bình luận ·
-
bug github-sync
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
coder/coder-desktop-windows#170 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
coder/coder-desktop-windows#151 ·
Tất cả issue của coder/coder-desktop-windows
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
microsoft/onnxruntime-genai#2633 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
python triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
microsoft/semantic-kernel#14491 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
area:jobads-cv FE mvp P3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
klasolsson81/jobbliggaren#1878 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
pnp/pnpcore#1878 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
SubtitleEdit/subtitleedit#15331 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày