tailscale/tailscale · error

failed to listen on either IPv4 or IPv6 localhost port: %v

Error message

failed to listen on either IPv4 or IPv6 localhost port: %v

What it means

Raised via panic in realNetwork.NewLocalTCPListener when binding a wildcard-port listener on both 127.0.0.1 and [::1] fails: no loopback TCP socket could be created, so local TCP listening is impossible.

Source

Thrown at net/netx/netx.go:49

func RealNetwork() Network { return realNetwork{} }

// realNetwork implements [Network] using the real net package.
type realNetwork struct{}

func (realNetwork) Listen(network, address string) (net.Listener, error) {
	return net.Listen(network, address)
}

func (realNetwork) Dial(ctx context.Context, network, address string) (net.Conn, error) {
	var d net.Dialer
	return d.DialContext(ctx, network, address)
}

func (realNetwork) NewLocalTCPListener() net.Listener {
	ln, err := net.Listen("tcp", "127.0.0.1:0")
	if err != nil {
		if ln, err = net.Listen("tcp6", "[::1]:0"); err != nil {
			panic(fmt.Sprintf("failed to listen on either IPv4 or IPv6 localhost port: %v", err))
		}
	}
	return ln
}

View on GitHub (pinned to 6e0912f979)

Solutions

  1. Check the loopback interface and for socket exhaustion
  2. Run outside restricted sandboxes that block loopback binds
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at net/netx/netx.go:49 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18). Data as JSON: /api/errors/a75d6ba8b39cf21a. Report an issue: GitHub.