cmd/tailscaled: default to userspace-networking mode on gokrazy, set paths
One of the current few steps to run Tailscale on gokrazy is to specify the --tun=userspace-networking flag: https://gokrazy.org/userguide/install/tailscale/ Instead, make it the default for now. Later we can change the default to kernel mode if available and fall back to userspace mode like Synology, once #391 is done. Likewise, set default paths for Gokrazy, as its filesystem hierarchy is not the Linux standard one. Instead, use the conventional paths as documented at https://gokrazy.org/userguide/install/tailscale/. Updates #1866 RELNOTE=default to userspace-networking mode on gokrazy Change-Id: I3766159a294738597b4b30629d2860312dbb7609 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>pull/4064/head
parent
c9a5dadce8
commit
db85384f9c
|
@ -70,11 +70,27 @@ func defaultTunName() string {
|
||||||
// as a magic value that uses/creates any free number.
|
// as a magic value that uses/creates any free number.
|
||||||
return "utun"
|
return "utun"
|
||||||
case "linux":
|
case "linux":
|
||||||
if distro.Get() == distro.Synology {
|
switch distro.Get() {
|
||||||
|
case distro.Synology:
|
||||||
// Try TUN, but fall back to userspace networking if needed.
|
// Try TUN, but fall back to userspace networking if needed.
|
||||||
// See https://github.com/tailscale/tailscale-synology/issues/35
|
// See https://github.com/tailscale/tailscale-synology/issues/35
|
||||||
return "tailscale0,userspace-networking"
|
return "tailscale0,userspace-networking"
|
||||||
|
case distro.Gokrazy:
|
||||||
|
// Gokrazy doesn't yet work in tun mode because the whole
|
||||||
|
// Gokrazy thing is no C code, and Tailscale currently
|
||||||
|
// depends on the iptables binary for Linux's
|
||||||
|
// wgengine/router.
|
||||||
|
// But on Gokrazy there's no legacy iptables, so we could use netlink
|
||||||
|
// to program nft-iptables directly. It just isn't done yet;
|
||||||
|
// see https://github.com/tailscale/tailscale/issues/391
|
||||||
|
//
|
||||||
|
// But Gokrazy does have the tun module built-in, so users
|
||||||
|
// can stil run --tun=tailscale0 if they wish, if they
|
||||||
|
// arrange for iptables to be present or run in "tailscale
|
||||||
|
// up --netfilter-mode=off" mode, perhaps. Untested.
|
||||||
|
return "userspace-networking"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return "tailscale0"
|
return "tailscale0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,8 @@ func DefaultTailscaledSocket() string {
|
||||||
if runtime.GOOS == "darwin" {
|
if runtime.GOOS == "darwin" {
|
||||||
return "/var/run/tailscaled.socket"
|
return "/var/run/tailscaled.socket"
|
||||||
}
|
}
|
||||||
if distro.Get() == distro.Synology {
|
switch distro.Get() {
|
||||||
|
case distro.Synology:
|
||||||
// TODO(maisem): be smarter about this. We can parse /etc/VERSION.
|
// TODO(maisem): be smarter about this. We can parse /etc/VERSION.
|
||||||
const dsm6Sock = "/var/packages/Tailscale/etc/tailscaled.sock"
|
const dsm6Sock = "/var/packages/Tailscale/etc/tailscaled.sock"
|
||||||
const dsm7Sock = "/var/packages/Tailscale/var/tailscaled.sock"
|
const dsm7Sock = "/var/packages/Tailscale/var/tailscaled.sock"
|
||||||
|
@ -38,6 +39,8 @@ func DefaultTailscaledSocket() string {
|
||||||
if fi, err := os.Stat(dsm7Sock); err == nil && !fi.IsDir() {
|
if fi, err := os.Stat(dsm7Sock); err == nil && !fi.IsDir() {
|
||||||
return dsm7Sock
|
return dsm7Sock
|
||||||
}
|
}
|
||||||
|
case distro.Gokrazy:
|
||||||
|
return "/perm/tailscaled/tailscaled.sock"
|
||||||
}
|
}
|
||||||
if fi, err := os.Stat("/var/run"); err == nil && fi.IsDir() {
|
if fi, err := os.Stat("/var/run"); err == nil && fi.IsDir() {
|
||||||
return "/var/run/tailscale/tailscaled.sock"
|
return "/var/run/tailscale/tailscaled.sock"
|
||||||
|
|
|
@ -14,6 +14,7 @@ import (
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
"golang.org/x/sys/unix"
|
||||||
|
"tailscale.com/version/distro"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -34,6 +35,9 @@ func statePath() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func stateFileUnix() string {
|
func stateFileUnix() string {
|
||||||
|
if distro.Get() == distro.Gokrazy {
|
||||||
|
return "/perm/tailscaled/tailscaled.state"
|
||||||
|
}
|
||||||
path := statePath()
|
path := statePath()
|
||||||
if path == "" {
|
if path == "" {
|
||||||
return ""
|
return ""
|
||||||
|
|
Loading…
Reference in New Issue