tailscale / tailscale/tailscale
Windows exit node completely non-functional - tunnel breaks when exit node enabled (1.94.2)
- Dominant language
- Go
- Stars
- 36.5k
- Forks
- 3.2k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 123
Description
What is your environment?
- OS: Windows 10, Intel Wireless-AC 9560
- Tailscale version: 1.94.2-t0a29cf18b-g3f044c9f6 (Windows client)
- Exit node: Linux (GCP e2-micro, Ubuntu, Tailscale 1.94.2), IP forwarding enabled, --advertise-exit-node set
What did you expect?
Using the Linux machine as an exit node should route all Windows traffic through it.
What happened instead?
When enabling the exit node from Windows, all connectivity is lost — including tailscale ping to the exit node itself. ICMP to external IPs (8.8.8.8)
times out. TCP connections fail. tailscale status --json shows Self.ExitNode: false even after setting the exit node.
Key findings from debugging:
1. iOS device on the same WiFi, same exit node works perfectly
2. tcpdump on Linux physical interface (ens4) shows WireGuard UDP packets arriving from Windows and responses being sent back — bidirectional
3. tcpdump on Linux tailscale0 shows zero packets from Windows (iPhone traffic appears normally)
4. Linux logs show the Windows node's disco key changes every time exit node is enabled, triggering WireGuard reconfiguration:
wgengine: Reconfig: [v56da] changed from "discokey:..." to "discokey:..."
5. After disco key change, direct connection appears to establish (now using :41641 mtu=1360) but then falls back to DERP relay attempts that also fail
6. Windows firewall disabled — no change
7. No VPN/proxy software active
8. tailscale netcheck shows UDP works, NAT mapping does not vary by destination
Bug report ID: BUG-46acb18de4ca9eb8cfb7767a415c211a9676b0a3aafc1ec7eb3efaec9a6621a2-20260225142904Z-f490afd31a99eb5c
Contributor guide
Assessment
This issue has not been assessed yet.