net/tstun: return the real interface name at device creation.

This is usually the same as the requested interface, but on some
unixes can vary based on device number allocation, and on Windows
it's the GUID instead of the pretty name, since everything relating
to configuration wants the GUID.

Signed-off-by: David Anderson <danderson@tailscale.com>
This commit is contained in:
David Anderson
2021-04-05 21:45:56 -07:00
committed by Dave Anderson
parent d2f838c058
commit bc4381447f
5 changed files with 39 additions and 14 deletions

View File

@@ -338,7 +338,7 @@ func tryEngine(logf logger.Logf, linkMon *monitor.Mon, name string) (e wgengine.
}
useNetstack = name == "userspace-networking"
if !useNetstack {
dev, err := tstun.New(logf, name)
dev, devName, err := tstun.New(logf, name)
if err != nil {
tstun.Diagnose(logf, name)
return nil, false, err
@@ -350,13 +350,7 @@ func tryEngine(logf logger.Logf, linkMon *monitor.Mon, name string) (e wgengine.
return nil, false, err
}
conf.Router = r
tunname, err := dev.Name()
if err != nil {
r.Close()
dev.Close()
return nil, false, err
}
conf.DNS = dns.NewOSConfigurator(logf, tunname)
conf.DNS = dns.NewOSConfigurator(logf, devName)
}
e, err = wgengine.NewUserspaceEngine(logf, conf)
if err != nil {

View File

@@ -30,6 +30,7 @@ import (
"golang.zx2c4.com/wireguard/windows/tunnel/winipcfg"
"tailscale.com/ipn/ipnserver"
"tailscale.com/logpolicy"
"tailscale.com/net/dns"
"tailscale.com/net/tstun"
"tailscale.com/tempfork/wireguard-windows/firewall"
"tailscale.com/types/logger"
@@ -161,7 +162,7 @@ func startIPNServer(ctx context.Context, logid string) error {
var err error
getEngine := func() (wgengine.Engine, error) {
dev, err := tstun.New(logf, "Tailscale")
dev, devName, err := tstun.New(logf, "Tailscale")
if err != nil {
return nil, err
}
@@ -173,6 +174,7 @@ func startIPNServer(ctx context.Context, logid string) error {
eng, err := wgengine.NewUserspaceEngine(logf, wgengine.Config{
Tun: dev,
Router: r,
DNS: dns.NewOSConfigurator(logf, devName),
ListenPort: 41641,
})
if err != nil {