From 6e4dd27ea67389c262f259abe1f99c35b87cd604 Mon Sep 17 00:00:00 2001 From: Jack Carter <128555021+SunsetDrifter@users.noreply.github.com> Date: Thu, 22 Oct 2026 10:06:46 +0200 Subject: [PATCH] Correct how Unique Peer Hostnames matches names (#1054) * docs: correct how Unique Peer Hostnames matches names The DNS label used for collision matching is built from the part of the hostname before the first dot, so web.prod and web.staging collide. Ephemeral peers always get the IP-based suffix by default, and lose it when the setting is on. A peer that already carries a suffix keeps it until it is renamed away and back. * docs: say what a rejected registration does A registration with a hostname another peer already uses fails and no peer is created, for ephemeral peers as well. * docs: tighten the Unique Peer Hostnames wording A rejected peer can join again under any hostname no other peer uses, including its own once the holder is deleted. * docs: say where the Unique Peer Hostnames setting lives Account-wide, off by default, in the Clients tab of Settings. Adds a screenshot of the section. * docs: make the ephemeral-peer bullet hold on its own * docs: the toggle prevents duplicate DNS labels, not duplicate hostnames Existing labels are compared with their suffix, so a hostname that other peers only hold with a suffixed label can still register. * docs: the rename check is on the DNS label too * docs: word the rename suffix and toggle intro by DNS label * docs: DNS labels are always unique; the toggle changes the outcome of a taken label * docs: the toggle also drops the ephemeral default suffix The sentence on label uniqueness said the toggle only changes what happens when a label is taken; it also removes the suffix ephemeral peers get by default, as the ephemeral bullet says. * docs: say what the suffix keeps unique and what it hides The DNS name is what stays unique; the shared hostname is what the suffix hides. * docs: state that no new peer gets a suffix with the toggle on A free label is used as-is; a taken one fails the registration. * docs: remove repeated statements from Unique Peer Hostnames Each fact now appears once: the taken-label rule in the first bullet (with the --hostname remedy), the ephemeral bullet reduced to what it adds, and the uniqueness restatement dropped. * docs: state the toggle's limit in plain words * docs: one term for DNS names, and the toggle limit with existing peers The section switched between DNS name and DNS label; it now says DNS name throughout. The note that suffixed names do not block a new peer moves to the paragraph about existing peers. * docs: make Unique Peer Hostnames easier to follow Says which peer keeps the plain DNS name and that the suffix goes on the DNS name only, states the matching rule before the toggle rules, lists both ways to let a rejected machine join, and gives the delete and rename steps with concrete names. On the DNS overview, the collision sentence moves below the v0.11.0 note it was reading as. * docs: safer rejoin advice and the default ephemeral suffix on the DNS page A different hostname can still collide, so the rejoin step asks for a hostname whose DNS name is free; the DNS overview says the ephemeral suffix applies by default. * docs: state each toggle-on outcome on the DNS overview A taken DNS name is rejected, every other new peer, ephemeral peers included, registers with its plain name, and existing suffixes stay. --- .../manage/settings/unique-peer-hostnames.png | Bin 0 -> 66764 bytes src/pages/manage/dns/index.mdx | 4 ++-- src/pages/manage/settings/clients.mdx | 21 ++++++++++++------ 3 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 public/docs-static/img/manage/settings/unique-peer-hostnames.png diff --git a/public/docs-static/img/manage/settings/unique-peer-hostnames.png b/public/docs-static/img/manage/settings/unique-peer-hostnames.png new file mode 100644 index 0000000000000000000000000000000000000000..440905fad2da255a283e2038e1d39ca2e9a152f0 GIT binary patch literal 66764 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 +TDF*$CI^4|VHcQIiT| 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 WXS+=zisw|q1zAbOm+%)xAO0JJ%Z<4J literal 0 HcmV?d00001 diff --git a/src/pages/manage/dns/index.mdx b/src/pages/manage/dns/index.mdx index 598c577c..3e9fbd92 100644 --- a/src/pages/manage/dns/index.mdx +++ b/src/pages/manage/dns/index.mdx @@ -18,12 +18,12 @@ NetBird provides centralized DNS management to help your peers resolve domain na Starting with [v0.11.0](https://github.com/netbirdio/netbird/releases), NetBird automatically assigns a domain name to each peer in a private `netbird.cloud` space. You can access machines using names like `my-server.netbird.cloud` instead of IP addresses. -When two peers in an account share a hostname, the second one gets an IP-based suffix such as `my-server-12-7.netbird.cloud` by default. You can make such registrations fail instead with the [Unique Peer Hostnames](/manage/settings/clients#unique-peer-hostnames) setting. - Available on both NetBird Cloud and self-hosted versions running v0.11.0 or later. +By default, a peer that registers with a hostname whose DNS name another peer already has gets an IP-based suffix, such as `my-server-12-7.netbird.cloud`, and so does every ephemeral peer, even one whose DNS name no other peer has. With the `Reject Hostname Collisions` toggle on (Settings > Clients, under [Unique Peer Hostnames](/manage/settings/clients#unique-peer-hostnames)), a peer whose DNS name another peer already has is rejected, and every other new peer, ephemeral peers included, registers with its plain name. Peers that already have a suffix keep it. + ## How NetBird Handles DNS NetBird gives you centralized control over DNS resolution for all peers in your network, solving common challenges with split-horizon DNS, private networks, and secure name resolution. diff --git a/src/pages/manage/settings/clients.mdx b/src/pages/manage/settings/clients.mdx index 938c2b76..ff09f094 100644 --- a/src/pages/manage/settings/clients.mdx +++ b/src/pages/manage/settings/clients.mdx @@ -31,17 +31,24 @@ See [Lazy Connections](/manage/peers/lazy-connection) for how activation works, ## Unique Peer Hostnames -Two machines in one account can register with the same hostname, for example similar VMs that a provisioning tool all named `laptop`. Every peer still needs its own DNS name, so by default NetBird keeps the registration and adds the last two octets of the peer's NetBird IP to the DNS label: a second `laptop` that gets the IP `100.64.12.7` becomes `laptop-12-7.netbird.cloud`. Renaming a peer to a name another peer already uses gets the same suffix. +Two machines in one account can register with the same hostname, for example similar VMs that a provisioning tool all named `laptop`. By default both register, and each gets its own DNS name: the peer that registers first gets `laptop.netbird.cloud`, and the second gets the last two octets of its NetBird IP added, so with the IP `100.64.12.7` it becomes `laptop-12-7.netbird.cloud`. The suffix goes on the DNS name only; both peers still show as `laptop` in the dashboard. If you rename a peer to `laptop` while another peer has `laptop.netbird.cloud`, the renamed peer also gets a suffix. By default, [ephemeral peers](/manage/peers/register-machines-using-setup-keys#ephemeral-peers) get the suffix even when no other peer uses their hostname. -The suffix keeps every peer reachable, but it also hides the duplicate. If you want a registration with a duplicate hostname to fail loudly instead, enable the `Reject Hostname Collisions` toggle. With the toggle on: +The suffix gives each peer its own DNS name, but it also hides that two machines share a hostname. If you want such a registration to fail loudly instead, enable the `Reject Hostname Collisions` toggle under `Unique Peer Hostnames` in the `Clients` tab of [Settings](https://app.netbird.io/settings). The setting applies to the whole account and is off by default. -- A peer registering with a hostname that another peer in the account already uses is rejected. The client reports `peer with hostname "laptop" is already registered`, stops retrying, and stays disconnected until it logs in again with a different hostname. -- Renaming a peer in the dashboard or through the API to a name another peer already uses fails with the same error. -- Ephemeral peers are treated exactly like other peers. +

+ Unique Peer Hostnames section of the Clients settings tab, with the Reject Hostname Collisions toggle switched off +

-Collisions are matched on the DNS label, not the raw hostname. The label is the hostname lowercased with characters that are not valid in DNS replaced by `-`, so `Laptop` and `laptop` collide, and so do `my_laptop` and `my-laptop`. +Whether the toggle is on or off, two hostnames collide when they produce the same DNS name. To build the DNS name, NetBird takes the part of the hostname before the first dot, lowercases it, and replaces each run of characters that are not valid in DNS with a single `-` (non-ASCII characters are first converted to punycode). So `Laptop` and `laptop` collide, so do `my_laptop` and `my-laptop`, and so do `web.prod` and `web.staging`, which both become `web`. -Enabling the toggle does not touch existing peers: labels that already carry a suffix keep it, and a peer logging in again under its own name is not a collision. Deleting a peer frees its name for the next registration. To let a rejected peer join, give the machine a unique hostname or start the client with one: `netbird up --hostname `. +With the toggle on: + +- No new peer gets a suffix, ephemeral peers included. A peer whose DNS name is free registers with it; a peer whose DNS name another peer in the account already has fails to register, and no peer is created, so nothing appears in the peer list. The client reports `peer with hostname "laptop" is already registered`, stops retrying, and stays disconnected until someone runs `netbird up` on that machine again: either with a hostname whose DNS name is free (`netbird up --hostname `), or after deleting the peer that holds the name. +- Renaming a peer in the dashboard or through the API to a name whose DNS name another peer already has fails with the same error. + +Enabling the toggle does not touch existing peers: DNS names that already carry a suffix keep it, and a registered peer is not checked for collisions when it logs in again, even if it now reports a hostname whose DNS name another peer has; it keeps the DNS name it already had. The toggle only blocks DNS names that are already taken, so a peer that already has a suffixed name, such as `laptop-12-7`, doesn't block a new `laptop`. + +Deleting a peer frees its DNS name but does not change the others: if you delete the `laptop` that holds `laptop.netbird.cloud`, the other one keeps `laptop-12-7.netbird.cloud`. To give it the plain name, rename it to another name and then back to `laptop`; saving the same name does not change its DNS name. Keep the toggle off if your fleet registers machines with identical hostnames on purpose, such as autoscaled VMs or containers that join through a [setup key](/manage/peers/register-machines-using-setup-keys). The default suffix exists for that case, and with the toggle on every such machine after the first fails to join.