Deferred from #765/#771.
Both gateway transports now intercept UDP/53 to any destination in-flight (WG promiscuous forwarder; tsnet GetUDPHandlerForFlow catch-all), so a daemon-side rewrite is redundant against current gateways. It would still help when a new client talks to a gateway old enough to predate the tsnet catch-all, and it removes any residual dependence on the bind-mounted resolv.conf content.
Sketch: in runUDPForwarder.handle (daemon_session_linux.go), when dstPort == 53 in tsnet mode, dial <tailnet-gateway-ip>:53 instead of the packet's destination, keeping the original 4-tuple as the flow key so replies are spoofed from the resolver the child asked — mirrors the macOS Provider.swift pumpUDP rewrite.
Low priority; only worth doing if we care about mixed-version deployments.
Deferred from #765/#771.
Both gateway transports now intercept UDP/53 to any destination in-flight (WG promiscuous forwarder; tsnet
GetUDPHandlerForFlowcatch-all), so a daemon-side rewrite is redundant against current gateways. It would still help when a new client talks to a gateway old enough to predate the tsnet catch-all, and it removes any residual dependence on the bind-mounted resolv.conf content.Sketch: in
runUDPForwarder.handle(daemon_session_linux.go), whendstPort == 53in tsnet mode, dial<tailnet-gateway-ip>:53instead of the packet's destination, keeping the original 4-tuple as the flow key so replies are spoofed from the resolver the child asked — mirrors the macOSProvider.swiftpumpUDPrewrite.Low priority; only worth doing if we care about mixed-version deployments.