tailscale: windows: CreateTUN: Error registering rings: Error listing NDIS interfaces: no interfaces found

The Tailscale service doesn’t start for some Windows users. Logs:

...
2020-07-05 01:26:33.6081829 +0300 +0300: exec: "C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe" [/subproc d97dc6ff5d0a8c099bb92d33ac5225271e40a3a461ed1166c09e8d33b7514c9d]
2020-07-05 01:26:33.6301312 +0300 +0300: Program starting: v0.95-0: []string{"C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe", "/subproc", "d97dc6ff5d0a8c099bb92d33ac5225271e40a3a461ed1166c09e8d33b7514c9d"}
2020-07-05 01:26:33.6301312 +0300 +0300: subproc mode: logid=d97dc6ff5d0a8c099bb92d33ac5225271e40a3a461ed1166c09e8d33b7514c9d
2020-07-05 01:26:33.6301312 +0300 +0300: srv: 1.3M/0.0M Starting userspace wireguard engine.
2020-07-05 01:26:33.6301312 +0300 +0300: srv: 1.3M/0.0M external packet routing via --tun=Tailscale enabled
2020-07-05 01:26:35.0389907 +0300 +0300: CreateTUN: Error registering rings: Error listing NDIS interfaces: no interfaces found
2020-07-05 01:26:35.0389907 +0300 +0300: wgengine.New: Error registering rings: Error listing NDIS interfaces: no interfaces found
2020-07-05 01:26:35.0509909 +0300 +0300: subprocess exited: exit status 1
2020-07-05 01:26:35.0509909 +0300 +0300: BabysitProc: backoff: 39637 msec
...

The Error listing NDIS interfaces is from:

https://github.com/tailscale/wireguard-go/blob/main/tun/wintun/wintun_windows.go

// handle returns a handle to the interface device object.                                                                                                                                  
func (wintun *Interface) handle() (windows.Handle, error) {
        interfaces, err := setupapi.CM_Get_Device_Interface_List(wintun.devInstanceID, &deviceInterfaceNetGUID, setupapi.CM_GET_DEVICE_INTERFACE_LIST_PRESENT)
        if err != nil {
                return windows.InvalidHandle, fmt.Errorf("Error listing NDIS interfaces: %v", err)
        }

Which calls this, which returns the no interfaces found:

https://github.com/tailscale/wireguard-go/blob/de1f1af1f35f0892b833a64c7080b265d18cf17a/tun/wintun/setupapi/setupapi_windows.go#L503

...
	if interfaces == nil {
		return nil, fmt.Errorf("no interfaces found")
	}
...

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 23 (15 by maintainers)

Commits related to this issue

Most upvoted comments

So I finally managed to try out a new build, sadly:

---------------------------
Error
---------------------------
Tailscale backend error:

wgengine.NewUserspaceEngine: Error creating interface: GetStringValueWait(NetCfgInstanceId) failed: Timeout waiting for registry value

logid: 55d55dd3266d215e76e49ccf84464f5e47405e678e031a8994008d19a3f35385

---------------------------
OK   
---------------------------

However, on another machine that is running a different Windows build (and didn’t have tailscale installed), not such errors.

Working Windows Version: 10.0.20175 Build 20175 (Insider Preview) Failing Windows Version: 10.0.19042 Build 19042

Update to add the log:

C:\Program Files (x86)\Tailscale IPN>start /w tailscale-ipn.exe /server
logtail started
Program starting: v0.100.0-53-gd76b4e50a, Go 1.14.4-ts56db765: []string{"tailscale-ipn.exe", "/server"}
LogID: c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2
stdout ok.
stderr ok.
printf ok.
log ok.
Running server directly...
exec: "C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe" [/subproc c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2]
Program starting: v0.100.0-53-gd76b4e50a: []string{"C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe", "/subproc", "c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2"}
subproc mode: logid=c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2
srv: 0.9M/0.0M Starting userspace wireguard engine with tun device "Tailscale"
logtail: dialed "log.tailscale.io:443" in 457ms
srv: 1.1M/0.0M CreateTUN ok.
srv: 3.3M/0.0M Routine: event worker - started
srv: 3.6M/0.0M UDP bind has been updated
WARNING: skipping windows socket binding.
MonitorDefaultRoutes: iphlpapi.GetIpInterfaceEntry: Element not found.
subprocess exited: exit status 1
BabysitProc: backoff: 6 msec
exec: "C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe" [/subproc c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2]
Program starting: v0.100.0-53-gd76b4e50a: []string{"C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe", "/subproc", "c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2"}
subproc mode: logid=c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2
srv: 0.9M/0.0M Starting userspace wireguard engine with tun device "Tailscale"
srv: 1.3M/0.0M CreateTUN ok.
srv: 3.5M/0.0M Routine: event worker - started
srv: 3.7M/0.0M UDP bind has been updated
WARNING: skipping windows socket binding.
MonitorDefaultRoutes: iphlpapi.GetIpInterfaceEntry: Element not found.
subprocess exited: exit status 1
BabysitProc: backoff: 27 msec
exec: "C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe" [/subproc c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2]
Program starting: v0.100.0-53-gd76b4e50a: []string{"C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe", "/subproc", "c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2"}
subproc mode: logid=c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2
srv: 0.9M/0.0M Starting userspace wireguard engine with tun device "Tailscale"
srv: 1.2M/0.0M CreateTUN ok.
srv: 3.4M/0.0M Routine: event worker - started
srv: 3.7M/0.0M UDP bind has been updated
WARNING: skipping windows socket binding.
MonitorDefaultRoutes: iphlpapi.GetIpInterfaceEntry: Element not found.
subprocess exited: exit status 1
BabysitProc: backoff: 92 msec
exec: "C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe" [/subproc c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2]
Program starting: v0.100.0-53-gd76b4e50a: []string{"C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe", "/subproc", "c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2"}
subproc mode: logid=c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2
srv: 1.0M/0.0M Starting userspace wireguard engine with tun device "Tailscale"
srv: 1.3M/0.0M CreateTUN ok.
srv: 3.4M/0.0M Routine: event worker - started
srv: 3.7M/0.0M UDP bind has been updated
WARNING: skipping windows socket binding.
MonitorDefaultRoutes: iphlpapi.GetIpInterfaceEntry: Element not found.
subprocess exited: exit status 1
BabysitProc: backoff: 139 msec
exec: "C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe" [/subproc c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2]
Program starting: v0.100.0-53-gd76b4e50a: []string{"C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe", "/subproc", "c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2"}
subproc mode: logid=c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2
srv: 0.9M/0.0M Starting userspace wireguard engine with tun device "Tailscale"
srv: 1.2M/0.0M CreateTUN ok.
srv: 3.4M/0.0M Routine: event worker - started
srv: 3.6M/0.0M UDP bind has been updated
WARNING: skipping windows socket binding.
MonitorDefaultRoutes: iphlpapi.GetIpInterfaceEntry: Element not found.
subprocess exited: exit status 1
BabysitProc: backoff: 206 msec
exec: "C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe" [/subproc c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2]
Program starting: v0.100.0-53-gd76b4e50a: []string{"C:\\Program Files (x86)\\Tailscale IPN\\tailscale-ipn.exe", "/subproc", "c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2"}
subproc mode: logid=c67390e9e37ef04efdebbb12b053a3fb094b605366ca85e17ba56f39bc706aa2
srv: 1.0M/0.0M Starting userspace wireguard engine with tun device "Tailscale"
srv: 1.3M/0.0M CreateTUN ok.
srv: 3.4M/0.0M Routine: event worker - started
srv: 3.7M/0.0M UDP bind has been updated
WARNING: skipping windows socket binding.
MonitorDefaultRoutes: iphlpapi.GetIpInterfaceEntry: Element not found.
subprocess exited: exit status 1```

(the above keeps repeating)

Thanks.

BTW, little known Windows trick: you can focus those message box dialogs and hit Control-C and even though the text can’t be selected, that Control-C should make a sound and copy the full text to your clipboard which you can paste in here.