netbirdio/netbird · error

set interface mtu: %w

Error message

set interface mtu: %w

What it means

setMTU() applies the MTU with `ifconfig <name> mtu <N>` and wraps a non-zero exit; stderr is logged at debug. It fails when the value is outside the range the kernel accepts for the interface (below the driver minimum or above 65535), when the interface no longer exists, or on privilege denial.

Source

Thrown at client/iface/freebsd/link.go:188

	if err != nil {
		log.Debugf("ifconfig out: %s", stderr.String())

		return fmt.Errorf("destroy %s interface: %w", name, err)
	}

	return nil
}

func (l *Link) setMTU(mtu int) error {
	var stderr bytes.Buffer

	cmd := exec.Command("ifconfig", l.name, "mtu", strconv.Itoa(mtu))
	cmd.Stderr = &stderr

	if err := cmd.Run(); err != nil {
		log.Debugf("ifconfig out: %s", stderr.String())

		return fmt.Errorf("set interface mtu: %w", err)
	}

	return nil
}

func (l *Link) setAddr(ip, netmask string) error {
	var stderr bytes.Buffer

	cmd := exec.Command("ifconfig", l.name, "inet", ip, "netmask", netmask)
	cmd.Stderr = &stderr

	if err := cmd.Run(); err != nil {
		log.Debugf("ifconfig out: %s", stderr.String())

		return fmt.Errorf("set interface addr: %w", err)
	}

	cmd = exec.Command("ifconfig", l.name, "inet6", "fe80::/64")

View on GitHub (pinned to 93e97f4bf1)

Solutions

  1. Validate the configured MTU is within 1280-65535 before applying (1280 is the IPv6-safe minimum)
  2. Confirm the interface exists with `ifconfig <name>`
  3. Apply manually `sudo ifconfig <name> mtu <N>` to see the kernel's refusal text
  4. Run the agent as root

Example fix

// before
w.SetMTU(mtu)

// after
if mtu < 1280 || mtu > 65535 {
    return fmt.Errorf("mtu %d out of range", mtu)
}
w.SetMTU(mtu)
Defensive patterns

Strategy: validation

Validate before calling

const minMTU, maxMTU = 1280, 65535
if mtu < minMTU || mtu > maxMTU {
    return fmt.Errorf("invalid mtu %d: must be %d-%d", mtu, minMTU, maxMTU)
}

Prevention

When it happens

Trigger: Applying an MTU received from management/network config that the kernel refuses (0, negative, or below the wg driver minimum), or setting the MTU after the interface was destroyed concurrently.

Common situations: Misconfigured MTU pushed by management; stale interface after an unclean shutdown; unprivileged run; MTU below 1280 while IPv6 is in use.

Related errors


AI-assisted analysis of netbirdio/netbird@93e97f4bf1 (2026-08-16). Data as JSON: /api/errors/d7b86b0c14d5da33. Report an issue: GitHub.