Pulse/pkg/tlsutil
rcourtman f2fe81bf97 fix: route local-network API connections through subprocess to bypass Tailscale NECP
The Tailscale system extension on macOS applies an NECP policy that captures
the Pulse process outbound Go TCP connections, routing them through utun4.
RFC 1918 addresses (192.168.0.x) fail with EHOSTUNREACH; Tailscale CGNAT
addresses (100.x.x.x) work normally. exec.Command subprocesses bypass NECP.

Add a subprocessConn type (subprocess_conn.go) that wraps nc stdin/stdout
as a net.Conn with real deadline enforcement (closes the connection on
timeout). Modify DialContextWithCache (dnscache.go) to route RFC 1918
addresses through the subprocess relay on macOS, while Tailscale IPs and
public IPs continue using the normal dialer.

Result: pbs-docker and pi Proxmox/PBS nodes now connect at the transport
layer. Remaining pi poll timeouts are caused by a pre-existing server-side
reverse DNS lookup delay (3s per HTTPS request); fix is NO_RESOLVE=1 in
/etc/default/pveproxy on each Proxmox node.
2026-06-26 22:13:22 +01:00
..
dnscache.go fix: route local-network API connections through subprocess to bypass Tailscale NECP 2026-06-26 22:13:22 +01:00
dnscache_test.go Enhance devcontainer and CI workflows 2026-01-01 22:29:15 +00:00
extra_test.go feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
fingerprint.go Fix local infrastructure proxy bypass 2026-06-25 18:17:12 +01:00
subprocess_conn.go fix: route local-network API connections through subprocess to bypass Tailscale NECP 2026-06-26 22:13:22 +01:00
tlsutil_test.go Fix local infrastructure proxy bypass 2026-06-25 18:17:12 +01:00