mirror of
https://github.com/coder/coder.git
synced 2026-06-03 04:58:23 +00:00
adc7775405
This change adds Linux support for Desktop VPN by aligning Linux behavior with the existing Windows daemon implementation and adding a Linux networking stack implementation. ### What changed - Consolidated the daemon command implementation into a shared file: - `cli/vpndaemon_windows_linux.go` (`//go:build windows || linux`) - Consolidated daemon tests into a shared file: - `cli/vpndaemon_windows_linux_test.go` (`//go:build windows || linux`) - Removed Linux-only duplicate daemon files: - `cli/vpndaemon_linux.go` - `cli/vpndaemon_linux_test.go` - Removed unsupported-platform stubs per current supported OS targets: - `cli/vpndaemon_other.go` - `vpn/tun.go` - Kept Linux networking stack implementation in: - `vpn/tun_linux.go` ### Notes - Linux now uses the same `rpc-read-handle` / `rpc-write-handle` flags and env vars as Windows. - The daemon logs to stderr (via CLI logger sinks), and does not forward logs over the RPC pipe.
46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
//go:build linux
|
|
|
|
package vpn
|
|
|
|
import (
|
|
"golang.org/x/xerrors"
|
|
"tailscale.com/net/dns"
|
|
"tailscale.com/net/netmon"
|
|
"tailscale.com/net/tstun"
|
|
"tailscale.com/wgengine/router"
|
|
|
|
"cdr.dev/slog/v3"
|
|
"github.com/coder/coder/v2/tailnet"
|
|
)
|
|
|
|
const defaultTunName = "coder0"
|
|
|
|
func GetNetworkingStack(_ *Tunnel, _ *StartRequest, logger slog.Logger) (NetworkStack, error) {
|
|
tunDev, tunName, err := tstun.New(tailnet.Logger(logger.Named("net.tun.device")), defaultTunName)
|
|
if err != nil {
|
|
return NetworkStack{}, xerrors.Errorf("create tun device: %w", err)
|
|
}
|
|
|
|
wireguardMonitor, err := netmon.New(tailnet.Logger(logger.Named("net.wgmonitor")))
|
|
if err != nil {
|
|
return NetworkStack{}, xerrors.Errorf("create wireguard monitor: %w", err)
|
|
}
|
|
|
|
coderRouter, err := router.New(tailnet.Logger(logger.Named("net.router")), tunDev, wireguardMonitor)
|
|
if err != nil {
|
|
return NetworkStack{}, xerrors.Errorf("create router: %w", err)
|
|
}
|
|
|
|
dnsConfigurator, err := dns.NewOSConfigurator(tailnet.Logger(logger.Named("net.dns")), tunName)
|
|
if err != nil {
|
|
return NetworkStack{}, xerrors.Errorf("create dns configurator: %w", err)
|
|
}
|
|
|
|
return NetworkStack{
|
|
WireguardMonitor: wireguardMonitor,
|
|
TUNDevice: tunDev,
|
|
Router: coderRouter,
|
|
DNSConfigurator: dnsConfigurator,
|
|
}, nil
|
|
}
|