mirror of
https://github.com/tailscale/tailscale.git
synced 2025-03-29 12:32:24 +00:00
cmd/tailscaled: don't require root on darwin with --tun=userspace-networking
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
31721759f3
commit
0d0ec7853c
@ -137,9 +137,9 @@ func main() {
|
|||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
if runtime.GOOS == "darwin" && os.Getuid() != 0 {
|
if runtime.GOOS == "darwin" && os.Getuid() != 0 && useTUN() {
|
||||||
log.SetFlags(0)
|
log.SetFlags(0)
|
||||||
log.Fatalf("tailscaled requires root; use sudo tailscaled")
|
log.Fatalf("tailscaled requires root; use sudo tailscaled (or use --tun=userspace-networking)")
|
||||||
}
|
}
|
||||||
|
|
||||||
if args.socketpath == "" && runtime.GOOS != "windows" {
|
if args.socketpath == "" && runtime.GOOS != "windows" {
|
||||||
@ -215,11 +215,11 @@ func run() error {
|
|||||||
ListenPort: args.port,
|
ListenPort: args.port,
|
||||||
LinkMonitor: linkMon,
|
LinkMonitor: linkMon,
|
||||||
}
|
}
|
||||||
if args.tunname == "userspace-networking" {
|
if useTUN() {
|
||||||
|
conf.TUNName = args.tunname
|
||||||
|
} else {
|
||||||
conf.TUN = tstun.NewFakeTUN()
|
conf.TUN = tstun.NewFakeTUN()
|
||||||
conf.RouterGen = router.NewFake
|
conf.RouterGen = router.NewFake
|
||||||
} else {
|
|
||||||
conf.TUNName = args.tunname
|
|
||||||
}
|
}
|
||||||
|
|
||||||
e, err := wgengine.NewUserspaceEngine(logf, conf)
|
e, err := wgengine.NewUserspaceEngine(logf, conf)
|
||||||
@ -229,7 +229,7 @@ func run() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var ns *netstack.Impl
|
var ns *netstack.Impl
|
||||||
if args.tunname == "userspace-networking" {
|
if useNetstack() {
|
||||||
tunDev, magicConn := e.(wgengine.InternalsGetter).GetInternals()
|
tunDev, magicConn := e.(wgengine.InternalsGetter).GetInternals()
|
||||||
ns, err = netstack.Create(logf, tunDev, e, magicConn)
|
ns, err = netstack.Create(logf, tunDev, e, magicConn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -244,7 +244,7 @@ func run() error {
|
|||||||
srv := &socks5.Server{
|
srv := &socks5.Server{
|
||||||
Logf: logger.WithPrefix(logf, "socks5: "),
|
Logf: logger.WithPrefix(logf, "socks5: "),
|
||||||
}
|
}
|
||||||
if args.tunname == "userspace-networking" {
|
if useNetstack() {
|
||||||
srv.Dialer = func(ctx context.Context, network, addr string) (net.Conn, error) {
|
srv.Dialer = func(ctx context.Context, network, addr string) (net.Conn, error) {
|
||||||
return ns.DialContextTCP(ctx, addr)
|
return ns.DialContextTCP(ctx, addr)
|
||||||
}
|
}
|
||||||
@ -329,3 +329,6 @@ func runDebugServer(mux *http.ServeMux, addr string) {
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func useTUN() bool { return args.tunname != "userspace-networking" }
|
||||||
|
func useNetstack() bool { return !useTUN() }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user