[PR #5686] [MERGED] [client] Add IPv6 reverse DNS and host configurator support #26483

Open
opened 2026-08-05 07:07:24 -04:00 by saavagebueno · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/netbirdio/netbird/pull/5686
Author: @lixmal
Created: 3/25/2026
Status: Merged
Merged: 4/7/2026
Merged by: @lixmal

Base: client-ipv6-ifaceHead: client-ipv6-dns


📝 Commits (10+)

  • 1a7e835 Fix CodeRabbit findings: hasIPv6Changed restart loop, empty peerIPs panic, v6 validation
  • 71962f8 Add IPv6 reverse DNS and host configurator support
  • d81cd5d Add IPv6 support to SSH server, client config, and netflow logger
  • 3be5a5f Fix CodeRabbit findings: hasIPv6Changed restart loop, empty peerIPs panic, v6 validation
  • 5fcea07 Merge branch 'client-ipv6-iface' into client-ipv6-dns
  • 5a29fa8 Merge branch 'client-ipv6-dns' into client-ipv6-ssh-netflow
  • 641e386 Merge branch 'client-ipv6-iface' into client-ipv6-dns
  • 0c2fbd5 Merge branch 'client-ipv6-dns' into client-ipv6-ssh-netflow
  • 50c0bc5 Fix connect.go lint: use SetIPv6FromCompact instead of if-else chain
  • bc6ed1a Merge branch 'client-ipv6-dns' into client-ipv6-ssh-netflow

📊 Changes

17 files changed (+382 additions, -87 deletions)

View changed files

📝 client/internal/dns.go (+55 -24)
📝 client/internal/dns/host_darwin.go (+1 -0)
📝 client/internal/dns/network_manager_unix.go (+11 -4)
📝 client/internal/dns/systemd_linux.go (+5 -1)
📝 client/internal/dns/upstream_ios.go (+26 -9)
client/internal/dns_test.go (+138 -0)
📝 client/internal/engine.go (+10 -5)
📝 client/internal/engine_ssh.go (+43 -11)
📝 client/internal/netflow/conntrack/conntrack.go (+14 -9)
📝 client/internal/netflow/logger/logger.go (+9 -3)
📝 client/internal/netflow/logger/logger_test.go (+1 -1)
📝 client/internal/netflow/manager.go (+4 -3)
📝 client/internal/netflow/types/types.go (+3 -0)
📝 client/internal/rosenpass/manager.go (+1 -1)
📝 client/ssh/config/manager.go (+8 -3)
📝 client/ssh/config/manager_test.go (+5 -4)
📝 client/ssh/server/server.go (+48 -9)

📄 Description

Describe your changes

  • Add IPv6 reverse DNS (PTR) support using RFC 3596 nibble format for ip6.arpa zones, alongside existing in-addr.arpa for v4
  • Fix DNS host configurators on Linux (systemd, NetworkManager) and iOS to handle IPv6 server addresses and socket binding
  • Add tests for PTR generation, reverse zone naming, and mixed v4/v6 record collection

Stack

Checklist

  • Is it a bug fix
  • Is a typo/documentation fix
  • Is a feature enhancement
  • It is a refactor
  • Created tests that fail without the change (if possible)

By submitting this pull request, you confirm that you have read and agree to the terms of the Contributor License Agreement.

Documentation

Select exactly one:

  • I added/updated documentation for this change
  • Documentation is not needed for this change (explain why)

Docs PR URL (required if "docs added" is checked)

Paste the PR link from https://github.com/netbirdio/docs here:

https://github.com/netbirdio/docs/pull/667


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/netbirdio/netbird/pull/5686 **Author:** [@lixmal](https://github.com/lixmal) **Created:** 3/25/2026 **Status:** ✅ Merged **Merged:** 4/7/2026 **Merged by:** [@lixmal](https://github.com/lixmal) **Base:** `client-ipv6-iface` ← **Head:** `client-ipv6-dns` --- ### 📝 Commits (10+) - [`1a7e835`](https://github.com/netbirdio/netbird/commit/1a7e8359499e0cdb72f7afa855cf9abbf67c9700) Fix CodeRabbit findings: hasIPv6Changed restart loop, empty peerIPs panic, v6 validation - [`71962f8`](https://github.com/netbirdio/netbird/commit/71962f88f8b71c01c046015d038a9d95b40dbdbc) Add IPv6 reverse DNS and host configurator support - [`d81cd5d`](https://github.com/netbirdio/netbird/commit/d81cd5d154c67d47b6e0864f32e39d973d3a5761) Add IPv6 support to SSH server, client config, and netflow logger - [`3be5a5f`](https://github.com/netbirdio/netbird/commit/3be5a5f230f18416407d43b646c58e66eb17dc26) Fix CodeRabbit findings: hasIPv6Changed restart loop, empty peerIPs panic, v6 validation - [`5fcea07`](https://github.com/netbirdio/netbird/commit/5fcea071813ca962e77cdeda28abd1e8fdb3ef30) Merge branch 'client-ipv6-iface' into client-ipv6-dns - [`5a29fa8`](https://github.com/netbirdio/netbird/commit/5a29fa8432a4a504b435bbe1e401fc17e3724b1a) Merge branch 'client-ipv6-dns' into client-ipv6-ssh-netflow - [`641e386`](https://github.com/netbirdio/netbird/commit/641e3861c11b4c62137a71d1658c1fc721ae5dcb) Merge branch 'client-ipv6-iface' into client-ipv6-dns - [`0c2fbd5`](https://github.com/netbirdio/netbird/commit/0c2fbd5d70661e0f3a7c23d11c13d82b6357b8ca) Merge branch 'client-ipv6-dns' into client-ipv6-ssh-netflow - [`50c0bc5`](https://github.com/netbirdio/netbird/commit/50c0bc583bb031db99ed19a58679da3a853d45cb) Fix connect.go lint: use SetIPv6FromCompact instead of if-else chain - [`bc6ed1a`](https://github.com/netbirdio/netbird/commit/bc6ed1a97f3c69b05f48a9d65559f115f6bc153c) Merge branch 'client-ipv6-dns' into client-ipv6-ssh-netflow ### 📊 Changes **17 files changed** (+382 additions, -87 deletions) <details> <summary>View changed files</summary> 📝 `client/internal/dns.go` (+55 -24) 📝 `client/internal/dns/host_darwin.go` (+1 -0) 📝 `client/internal/dns/network_manager_unix.go` (+11 -4) 📝 `client/internal/dns/systemd_linux.go` (+5 -1) 📝 `client/internal/dns/upstream_ios.go` (+26 -9) ➕ `client/internal/dns_test.go` (+138 -0) 📝 `client/internal/engine.go` (+10 -5) 📝 `client/internal/engine_ssh.go` (+43 -11) 📝 `client/internal/netflow/conntrack/conntrack.go` (+14 -9) 📝 `client/internal/netflow/logger/logger.go` (+9 -3) 📝 `client/internal/netflow/logger/logger_test.go` (+1 -1) 📝 `client/internal/netflow/manager.go` (+4 -3) 📝 `client/internal/netflow/types/types.go` (+3 -0) 📝 `client/internal/rosenpass/manager.go` (+1 -1) 📝 `client/ssh/config/manager.go` (+8 -3) 📝 `client/ssh/config/manager_test.go` (+5 -4) 📝 `client/ssh/server/server.go` (+48 -9) </details> ### 📄 Description ## Describe your changes - Add IPv6 reverse DNS (PTR) support using RFC 3596 nibble format for `ip6.arpa` zones, alongside existing `in-addr.arpa` for v4 - Fix DNS host configurators on Linux (systemd, NetworkManager) and iOS to handle IPv6 server addresses and socket binding - Add tests for PTR generation, reverse zone naming, and mixed v4/v6 record collection ## Issue ticket number and link ## Stack - #5631 - #5675 - #5686 :point_left: - #5687 - #5688 - #5706 - #5707 - #5708 ### Checklist - [ ] Is it a bug fix - [ ] Is a typo/documentation fix - [x] Is a feature enhancement - [ ] It is a refactor - [x] Created tests that fail without the change (if possible) > By submitting this pull request, you confirm that you have read and agree to the terms of the [Contributor License Agreement](https://github.com/netbirdio/netbird/blob/main/CONTRIBUTOR_LICENSE_AGREEMENT.md). ## Documentation Select exactly one: - [x] I added/updated documentation for this change - [ ] Documentation is **not needed** for this change (explain why) ### Docs PR URL (required if "docs added" is checked) Paste the PR link from https://github.com/netbirdio/docs here: https://github.com/netbirdio/docs/pull/667 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
saavagebueno added the pull-request label 2026-08-05 07:07:24 -04:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#26483