tailscale/tailscale · error
netstack: Bind(%v): %v
Error message
netstack: Bind(%v): %v
What it means
ListenPacket created a gVisor UDP endpoint but binding it to the requested address and port on the netstack NIC failed, most often because the port is already in use inside the netstack. The endpoint is closed before returning.
Source
Thrown at wgengine/netstack/netstack.go:1894
if !ap.Addr().Is6() {
return nil, fmt.Errorf("netstack: udp6 requires an IPv6 address")
}
default:
return nil, fmt.Errorf("netstack: unsupported network %q", network)
}
var wq waiter.Queue
ep, nserr := ns.ipstack.NewEndpoint(udp.ProtocolNumber, networkProto, &wq)
if nserr != nil {
return nil, fmt.Errorf("netstack: NewEndpoint: %v", nserr)
}
localAddress := tcpip.FullAddress{
NIC: nicID,
Addr: tcpip.AddrFromSlice(ap.Addr().AsSlice()),
Port: ap.Port(),
}
if err := ep.Bind(localAddress); err != nil {
ep.Close()
return nil, fmt.Errorf("netstack: Bind(%v): %v", localAddress, err)
}
return gonet.NewUDPConn(&wq, ep), nil
}
// ListenTCP listens for TCP connections on the given address.
func (ns *Impl) ListenTCP(network, address string) (*gonet.TCPListener, error) {
ap, err := netip.ParseAddrPort(address)
if err != nil {
return nil, fmt.Errorf("netstack: ParseAddrPort(%q): %w", address, err)
}
var networkProto tcpip.NetworkProtocolNumber
switch network {
case "tcp4":
networkProto = ipv4.ProtocolNumber
if ap.Addr().IsValid() && !ap.Addr().Is4() {
return nil, fmt.Errorf("netstack: tcp4 requires an IPv4 address")
}View on GitHub (pinned to 5201273aec)
Solutions
- Check the wrapped bind error; the address/port may already be in use inside netstack or be invalid.
- Choose a different local port or address that is free in the netstack.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at wgengine/netstack/netstack.go:1868 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tailscale/tailscale@5201273aec (2026-08-18).
Data as JSON: /api/errors/f300927ae5c4320d.
Report an issue: GitHub.