mirror of
https://github.com/netbirdio/netbird.git
synced 2026-07-15 02:21:57 -04:00
Feature: support connecting to multiple networks/management instances simultaneously #178
Open
opened 2025-11-20 05:07:24 -05:00 by saavagebueno
·
58 comments
No Branch/Tag Specified
main
fix/agentnet-bedrock-model-normalization
feature/dns-lazy-conn-warmup
dependabot/go_modules/aws-sdk-8f849ebaed
dependabot/github_actions/actions-a940c7c866
dependabot/go_modules/otel-e34c790afd
dependabot/go_modules/gorm-2271c8195b
dependabot/go_modules/pion-5f703e1eca
dependabot/go_modules/testcontainers-de325c0dd6
dependabot/go_modules/wireguard-dbd6b95108
0.74.4-branch
components-impl-drop-indexes-use-xids
lazy-conn-rosenpass
lazy-conn-per-peer
fix/remove-stale-peers-removal
fix/remove-stale-proxy-logic
embedded-vnc
fix-browser-dialog-not-closing
fix/nsis-preserve-autostart-on-upgrade
refactor/peer-event-bus
dependabot/go_modules/goauthentik.io/api/v3-3.2026050.3
dependabot/go_modules/github.com/pkg/sftp-1.13.10
extend-outdated-client-info
components-impl-drop-indexes
fix-reset-aggregation-window-flake
dependabot/go_modules/github.com/pion/dtls/v3-3.1.5
dependabot/go_modules/github.com/aws/aws-sdk-go-v2/service/s3-1.105.0
peer-acl-multi-source
0.74.x
fix/relay-states-lock
update-process-pkg
client-local-metrics
update-gopsutil-v4
fix/relay_states_lock
increase-sysinfo-timeout
diagnostic_logs
dependabot/npm_and_yarn/client/ui/frontend/npm_and_yarn-88714b13d0
dependabot/go_modules/github.com/Azure/go-ntlmssp-0.1.1
dependabot/go_modules/github.com/eko/gocache/store/redis/v4-4.2.6
dependabot/go_modules/github.com/eko/gocache/lib/v4-4.2.3
fix/fail-to-create-upnp-port-mapping-on-opnsense-firewall
feat/admin-cli
0.74.3-branch
fix/routeselector-atomic-exit-node
netmap_progressive_alignment
nmap/components-impl
refactor/relay-foreign-cache
dependabot/go_modules/github.com/jackc/pgx/v5-5.9.2
dependabot/go_modules/github.com/oapi-codegen/runtime-1.4.2
dependabot/go_modules/github.com/gopacket/gopacket-1.6.1
dependabot/go_modules/github.com/coreos/go-oidc/v3-3.19.0
dependabot/go_modules/github.com/pires/go-proxyproto-0.12.0
fix/signal-watchdog-sync-stop
docs/agent-network
feature/ios-ssh
test/affected-logic
fix/revert-ice-filter
refactor/simplify-affected-peers
pascal-filter-policies-by-direction
claude/lock-contention-peer-connect-g8t6au
dmitri-filter-policies-by-direction
refactor/migrate-profiles-to-go
profile-bindings-ios
fix/skip-restart-unchanged-route
fix/mgmt-cache-async-resolve
refactor/wails-update-105
client_lifetime_serialization_refactor
fix/browser-ssh-2
fix/ipv6-and-netstack-accept-loop
fix/browser-ssh
profile-id-name-test
refactor/mgmt-bootstrap
mdm_integration
feat/getting-started-unified-wizard
socket-grpc-permissions
fix/mysql-index-migration
windows-dns-firewall
tests/enable-race-on-tests
ui-refactor-gtk3
feature/affected-peers-grpc
profile-id
lazyconn-first-packet-fix-v2
claude/focused-gates-VMTgb
ui-tray-linux-leftclick
fix/ctx-enrichment
daemon-owner
feature/android-client-ssh
worktree-accept-ra-forwarding
nmap/combined-deploy
task/align_protobuff_toolset
feature/session-extend
add-json-yaml-flags
refactor/ephemeral-cleanup
claude/webtransport-relay-wasm-mUjY9
claude/vnc-udp-feasibility-6KB1U
fix-ssh-authorized-users-multi-rule
fix/wgport-config
e2e-windows-dns-combined
fix/login-cmd-root-flags
feat/reseller-openapi-spec
github-issue-resolver
add-steamos-support
fix-darwin-uninstaller
flutter-test
ci/freebsd-pkg-bootstrap
cached-serial-check-on-sync
fix-mgmt-cache-bypass-overlay
revert-easyjson-5938
revert-ice-5820
revert-firewalld-5928
refactor/permissions-manager
revert-dns-5935-systemd-resolved
revert-dns-5935-5945
revert-dns-5945-mgmt-cache
feature/log-most-busy-peers
prototype/ui-wails
coderabbitai/utg/8ae8f20
feature/use-peer-fqdn-on-https
release/0.68.3
add-slack-channel
claude/rdp-token-passthrough-eNcqW
transparent-proxy
fix/macos-stale-route-eexist
crowdsec-selfhosted
fix/remove-otel-units
entire/checkpoints/v1
fix/getting-started
feat/static-connectors-combined-server
feature/use-local-keys-embedded
feature/fleetdm
set-env-only-if-not-fork
feature/expose-has-channel
fix/connection-status-race
fix/filter-cgnat-cni-ice-candidates
feature/check-cert-locker-before-acme
test/proxy-fixes
test/proxy-mtu
prototype/ui-tauri
test/proxy-speed
fix-reused-ports
feat/migrate-to-embedded-idp
feature/add-serial-to-proxy-merged
deploy/proxy-serial
test/connection
feature/disable-legacy-port
feature/flag-to-disable-legacy-port
test/perftest
fix/http-redirect
poc-token-command
dn-reverse-proxy
prototype/reverse-proxy-rename
prototype/reverse-proxy-logs-pagination
feature/client-metrics
prototype/reverse-proxy-clusters
debug-dns-route
fix/win-dns-batch
add-extra-route-logs
job-stream-notify-disconnection-eof
deploy/secrets-manager
trigger-proxy-update
bug/update-ios-client-code-build-tags
sync-client-netmap-serial
log/conn-disconn
nmap/compaction-deploy
ci-win-test
feature/disk-encryption-check
wasm-debug
swap-dns-prio
fix/dex-config
feature/migrate-auto-groups-to-table
nmap/compaction
dex-nocgo-stub
feature/exclude-terraform-from-rate-limiting
test-freebsd
retries-refactor
coderabbitai/docstrings/b7e98ac
feat/integrate-zitadel
bug/ios-hanging-reconection
zitadel-idp
feat/network-map-serial
refactor/get-account-no-users
feat/auto-upgrade
feature/report-high-pat-id
feature/temporary-access-for-resource
fix/nmap-fwrules
dont-restart-dns
prototype/ui
update-gomobile
go-dns-for-ice
wasm-ldflags
test-ldflags
wasmbuild-test
feature/networks-s2s
vk/compare-nmaps
dbg/bothmaps
feature/changeset
reorder-dns-shutdown
fix/relay-reconnection-race
fix/nmap-exitnodes
vk/debug/nmap-both
move-licensed-code
feat/better-daemon-connection-lost-message
feat/auto-update-2
test/timings
refactor/getaccount-raw
tests/nmap-getaccount
refactor/nmap
refactor/nmap-limit-buffer
feature/detect-mac-wakeup
feature/extract-modules
quick-setings
feat/sync-limiter
feature/store-cache-impl
fix-install-version
feature/store-metrics
feature/metrics-on-store
feature/use-gorm-cache
loadtest-signal
unsymmetrical-squash
refactor/reducate-signaling
test/update-reduce
feature/store-cache
feature/remote-debug
cli-ws-proxy-backend-addr
feat/mgmt-map-serial
snyk-fix-d9d0081a4c7f9137bdb59d0d50a141a2
snyk-fix-7415cea5a11acd66753540ca2c598c63
job-yml-update
feature/android-allow-selecting-routes
fix/up-sequence
fix/dns-hash-update
snyk-fix-967adae9863f17f108ce8948d9117b8d
log/getaccount-by-peer
signal-suppressor
dns-exit-node
feature/auto-updates
feature/cache-srv-key
merged-fixes
fix/missed-offers-and-debug
debug-and-fixes
poc-wasm-clean-backend-s2s
test/remote-debug
debug-api
fix/remove-gpo-if-empty
fix/test-freebsd
fix/mysql-setup
fix/remove-logout-btn
handle-existing-domain-user
chore/unify-domain-validation
snyk-fix-c5fafc8a50ce1f29046e25a1fc346185
feat/profile-edit-btn
snyk-fix-a54966211e18d4cf67e5a2757cc006d1
log-short-id
feat/logout-ephemeral
log-checks
batch-wg-ops
nb-interface-default
feat/aws-integration
add/race-test
feature/relay-feature-versioning
fix/systemd-service-logs
poc/preprocessed-map
add-account-onboarding
bind-ipv6
fix/merge-main
logs/peerlogs-addpeer
feature/net-297-network-migration
feature/support-skip-auto-apply-exit-node-routes
set-cmd
set-command-with-cursor
feature/limit-update-channel
stop-using-locking-share
feature/poc-lazy-detection
feature/net-248-removal-of-sync-mutex-locks
test/multiple-peer-logging
preresolve
add-ns-punnycode-support
apply-routes-early
windows-search-domains
fix/connecting-route-filter
feature/management/rest-client/impersonate
debug-local-records
resource-fields-snake-case
test/grpc-rate-limit
traffic-correlation-policy
feature/rest-client-options
feat/events-metrics
feature/buf-cli
test/add-ratelimiter
test/remove-write-lock-on-add-peer
fix/add-peer-semaphore
feature/users-roles-endpoint
mlsmaycon-patch-1
debug-user-role
chore/primary-key-on-networks
feature/update-account-peers-buffer-startup
remove-ubuntu2004-runners
refactor/permissions-no-pat-allowed
ref/logrus-factory
use-conntrack-zone
deploy/permissions-account
feature/lazy-connection-idle
ref/improve-test-cov
restore-pr-3440
test/increase-grpc-timeouts
feat/buffer-account-peers-update
test/networkmapgeneration-changes
feature/base-manager
feature/flow-receiver
chore/benchmark-with-large-runner
refactor/handshake-initiator
client/ui-update-systray-icons
userspace-router
wgwatcher-test
output-if-key-already-exists
fix/relay-reconnection
feature/port-forwarding-client-codecleaning
detached2
test/callbacks-nil-iceconninfo
refactor/optimize-peer-expiration
enable-udp-port-for-docker-template
fix/relay-update
feature/apply-posture-netmap
fix/group-update-existing-resource
conntrack-stats
upgrade-okta-sdk
multi-price
test/conn-stat
set-min-parallel-tests-for-management
dns-interceptor
debug-dns
router-dns
add-static-system-info
debug-0.29.4
debug-0.33.0
account-refactoring
relay/2800_quic
route-get-account-refactoring
test/seed-random-routes
feature/get-account-refactoring
test/reconnect-race-condition
refactor/get-account-usage
feature/add-session-id-to-update-channel
improve-ipv4conn
fix/async-pion-event-handling
debug
add-offload
feature/validate-group-association-debug
fix/limit-conn-for-sqlite
test/engine-iface
test/transaction-for-jwt-sync
fix/engine-stop-in-foreground
feature/add-mysql-support
test-migration
refactor/header-size-values
relay/eliminate-gob
test/signal-dispatcher-with-relay
relay/debug
validate-icon
feature/ipv6-support
use-pre-expanded-peers-map
feature/use-signal-dispatcher
validate/peer-status
add-read-write-times
fix/sync-peer-race
feature/relay-status
netmap
evaluate/network-map-hash
fix/lower-dns-resolve-interval-on-fail
feature/relay
fix/go-mod-version
upgrade-nftables
synology-userspace-mode
fix/use-ip-for-default-routes-on-darwin
fix/proxy_close
enable-release-workflow-on-pr
deploy/peer-performance
feature/permanent-turn
feature/permanent-turn-proxy
deploy/posture-check-sqlite
feature/optimize_sqlite_save
debug-ios-behavior
fix/delete-route-only-after-adding
tshoot/windows-logger
remove-new-routing
refactor/eliminate-repo-dependency
add-arm-to-ci
refactor-demo-account-object
test/abc2
test/abc
send-ssh-rosenpass-config-meta
refactor-demo
ensure-schedule-never-runs-non-positive
feature/peer-validator-groupmgm
feature/peer-validator-fix
fix/include-active-dashboard-users
fix/handle-canceling-schedule
fix/geo-download
debug-google-workspace
yury/resolve-ip-to-location
feature/extend-sysinfo
sqlite-async-peer-status
yury/add-postgresql-store
fix/route
test-build
posture-checks-poc
debug-keycloak-idp
poc/netstack
for-pascal-tmp
peer-logout-management
manual-peer-logout
detached
chore/refactor-management
test/dns-bind
fix/enforce-acl-for-containers
yury/use-sync-map-in-updatechannel
fix/events-key-handling
filter-cache-on-load-account
fix/user-expiration
handle-user-context-cancellation
nb-client-k8s-statefulset
fake-addr
fix/iptables_in_docker
ebpf-debug
update-getting-started-flow-use-postgres
fix/peer_list_notification
feature/device-authentication-with-client-secret
feature/keep_alive
feat-groups-from-jwt
separate_proxy_from_wgconfig
fix/wg_conn
wg_conn_fix
wg_bind_parallel_processing
fix-rollback-get-acls
proxy_cfg_cleanup
performance-improvement-rego
update-lock-log-level
feat-client-side-acl
refactor/move_grpcserver_logic_to_account_manager
feature/event-storage
feature/update-idp-redeeming-invite
feature/api-peer-info
return-groupminimum-setupkey
feature/interface-bind
documentation_enhancement
fix-peer-registration
ssh
users_cache
pass-client-caller
client_caller_type
revert-283-feat-fix-windows-installer
periodic-peer-updates
ebpf
braginini/wasm
v0.74.5
v0.75.0-rc.6
v0.74.4
v0.74.3
v0.75.0-rc.5
v0.74.2
v0.74.1
v0.75.0-rc.4
v0.74.0
v0.74.0-rc.2
v0.74.0-rc.1
v0.73.2
v0.75.0-rc.3
v0.75.0-rc.2
v0.73.1
v0.75.0-rc.1
v0.73.0
v0.72.4
v0.72.3
v0.72.2
v0.72.1
v0.72.0
v0.71.4
v0.71.3
v0.71.2
v0.71.1
v0.71.0
v0.70.5
v0.70.4
v0.70.3
v0.70.2
v0.70.1
v0.70.0
v0.69.0
v0.68.3
v0.68.2
v0.68.1
v0.68.0
v0.67.4
v0.67.3
v0.67.2
v0.67.1
v0.67.0
v0.66.4
v0.66.3
v0.66.2
v0.66.1
v0.66.0
v0.65.3
v0.65.2
v0.65.1
v0.65.0
v0.64.6
v0.64.5
v0.64.4
v0.64.3
v0.64.2
v0.64.1
v0.64.0
v0.63.0
v0.62.3
v0.62.2
v0.62.1
v0.62.0
v0.61.2
v0.61.1
v0.61.0
v0.60.9
v0.60.8
v0.60.7
v0.60.6
v0.60.5
v0.60.4
v0.60.3
v0.60.2
v0.60.1
v0.60.0
v0.59.13
v0.59.12
v0.59.11
v0.59.10
v0.59.9
v0.59.8
v0.59.7
v0.59.6
v0.59.5
v0.59.4
v0.59.3
v0.59.2
v0.59.1
v0.59.0
v0.58.2
v0.58.1
v0.58.0
v0.57.1
v0.57.0
v0.56.1
v0.56.0
v0.55.1
v0.55.0
v0.54.2
v0.54.1
v0.54.0
v0.53.0
v0.52.2
v0.52.1
v0.52.0
v0.51.2
v0.51.1
v0.51.0
v0.50.3
v0.50.2
v0.50.1
v0.50.0
v0.49.0
v0.48.0-dev2
v0.48.0
v0.47.2
v0.47.1
v0.47.0
v0.46.0
v0.45.3
v0.45.2
v0.45.1
v0.45.0
v0.44.0
v0.43.3
v0.43.2
v0.43.1
v0.43.0
v0.42.0
v0.41.3
v0.41.2
v0.41.1
v0.41.0
v0.40.1
v0.40.0
v0.39.2
v0.39.1
v0.39.0
v0.38.2
v0.38.1
v0.38.0
v0.37.2
v0.37.1
v0.37.0
v0.36.7
v0.36.6
v0.36.5
v0.36.4
v0.36.3
v0.36.2
v0.36.1
v0.36.0
v0.35.2
v0.35.1
v0.35.0
v0.34.1
v0.34.0
v0.33.0
v0.32.0
v0.31.1
v0.31.0
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.4
v0.29.3
0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.9
v0.28.8
v0.28.7
v0.28.6
v0.28.5
v0.28.4
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.10
v0.27.9
v0.27.8
v0.27.7
v0.27.6
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27.0
v0.26.7
v0.26.6
v0.26.5
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.9
v0.25.8
v0.25.7
v0.25.6
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.4
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.9
v0.23.8
v0.23.7
v0.23.6
v0.23.5
v0.23.4
v0.23.3
v0.23.2
v0.23.1
v0.23.0
v0.22.7
v0.22.6
v0.22.5
v0.22.4
v0.22.3
v0.22.2
v0.22.1
v0.22.0
v0.21.11
v0.21.10
v0.21.9
v0.21.8
v0.21.7
v0.21.6
v0.21.5
v0.21.4
v0.21.3
v0.21.2
v0.21.1
v0.21.0
v0.20.8
v0.20.7
v0.20.6
v0.20.5
v0.20.4
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.1
v0.18.0
v0.17.0
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.6
v0.14.5
v0.14.4
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.0
v0.12.0
v0.11.6
v0.11.5
v0.11.4
v0.11.3
v0.11.2
v0.11.1
v0.11.0
v0.10.10
v0.10.9
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.8
v0.9.7
v0.9.6
v0.9.5
v0.9.4
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.12
v0.8.11
v0.8.10
v0.8.9
v0.8.8
v0.8.7
v0.8.6
v0.8.5
v0.8.4
v0.8.3
v0.8.2
v0.8.1
v0.8.0
v0.7.1
v0.7.0
v0.6.4
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.11
v0.5.10
v0.5.1
v0.5.0
v0.4.0
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.3
v0.2.2-beta.1
v0.2.1-beta.5
v0.2.0-beta.5
v0.2.0-beta.4
v0.2.0-beta.3
v0.2.0-beta.2
v0.2.0-beta.1
v0.1.0-beta.3
v0.1.0-beta.2
v0.1.0-beta.1
v0.1.0-rc.2
v0.1.0-rc-1
v0.0.8-hotfix-1
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
v0.0.3
v0.0.2
v0.0.1
v0.0.0
Labels
Clear labels
2021 Q4
2022 Q1
2022 Q1
accessibility
acl
agent
agent
Android
Android
api
authentik
automation
azure
battery-usage
bug
cache
client
client-ui
cloud
cloud-only
cloudflare
community
compatibility
config-idp
config-issue
connection
contribution
coturn
cross-vpn
dashboard
data-usage
distribution
dns
docker
documentation
duplicate
enhancement
enhancement
event-stream
feature-request
freebsd
getting-started
go
good first issue
gui
help wanted
home-assistant
idp
inconsistency
integration
integrations
ios
ipv6
jwt
k8s
keycloak
linux
login
macos
management-service
missing-docs
mobile
moved-internal
needs-review
netbird-ui
networking
new-platform
nginx
notification
okta
openwrt
packaging
peer-management
peer-management
peer-management
performance
postgres
posture-checks
psk
pull-request
question
refactor
relay
release
rfc
routes
security
security-related
self-hosting
server
signal
sleep-issue
ssh
ssl
status
store
synology
system-compatibility-issue
test-suite
third-party-integration
triage
triage-needed
troubleshooting
UX
waiting-feedback
windows
wontfix
zitadel
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
saavagebueno
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: SVI/netbird#178
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @bj0 on GitHub (Aug 31, 2022).
Originally assigned to: @mlsmaycon on GitHub.
I sometimes have a machine on multiple networks at once. In wireguard, this is easy as I can just create a new config with a different interface name, and they can both run without conflict.
Is this use case supported on netbird? I can't find any information about it in the docs or issues.
@mlsmaycon commented on GitHub (Sep 1, 2022):
Hi @bj0, currently, we don't offer straight support for multiple Wireguard connections as you would need to set the daemon listening address, a custom config path, and the new interface name needs to be updated in the configuration file.
Let me know if you need a guide for it to try this out.
we will evaluate the options to make this possible in an easier manner and perhaps work on it in the next few days.
@bj0 commented on GitHub (Sep 1, 2022):
A guide would be cool, but I can figure out those options pretty easy. My main question is how would you "manage" or "auth" this second network? Would you need a second oauth account (im currently just using a google account)?
@mlsmaycon commented on GitHub (Sep 5, 2022):
Hello @bj0 with the release v0.9.0 you are able to run the following steps to achieve that. Below are the steps:
For a 2 connection example on a single Linux with SystemD, the steps are:
stop and uninstall the daemon
Create custom login files and login:
Assuming we have two accounts, ACCOUNT-A and ACCOUNT-B:
Now, we need to edit each configuration file and change the WgIface, WgPort and update the IFaceBlackList:
move the files to the default config location /etc/netbird
install the wt1 service pointing to the config location:
let's edit the systemd file /etc/systemd/system/netbird.service and update the ExecStart and rename it
make a copy of the service file for the interface wt2, then update its ExecStart
reload systemd
start each interface service
@fti7 commented on GitHub (Sep 7, 2022):
@mlsmaycon thx for the Tutorial
Please consider to implement this kind of multi- tenancy/instances in all of your components natively.
This might work for an Advanced Linux User, but its difficult for e.g. Windows GUI Client User
There will be enough use-cases for this in the future (Both, Client and UI/Management Side)
and it might be easier to design/implement this directly in the beginning 😀
Thx!
@bj0 commented on GitHub (Sep 7, 2022):
Thanks @mlsmaycon ! That's super helpful, I'll give it a try when I get a second oidp/network going.
I was thinking about this while reading through the access control documentation. Another potential solution might be, instead of a separate network, a "shared" group where you could add peers from a different network (obviously on the same mediation server). That way you wouldn't need to run double everything, but it would rely on the mediation server much more.
@mlsmaycon commented on GitHub (Sep 8, 2022):
Thanks, @fti7 and @bj0 we are definitely thinking about improving that experience. We built the ground for it with smaller CGNAT and random networks.
Moving forward, maybe we can use a bit of input from you folks, how would you see a multi-tenancy setup? Would be more based on company/personal domain, accounts, or networks?
@fti7 commented on GitHub (Sep 8, 2022):
Sure, here is my POV:
Multi Tenancy for me means full Isolation.
The scenario what mostly like gonna happen is that in multiple Parties are using Netbird with either your shared Management Server or setting up an own one.
They are completely isolated and dont talk to each other. The only thing, what you already mentioned is the Collision of the CGNAT Subnet.
But i guess that shouldnt be an big issue if they are getting smaller and the reserved Subnet per "Management Server Tenant" gets randomized.
If this still happens, it should be possible to change this reserved Subnet as an Admin on one of the Servers
Scenario 1
Im a Freelancer and use Netbird for my private Network using app.netbird.io and working for 2 Companies which each have their own selfhosted Management Server.
In this Scenario only the Clients need some Modifications.
How it should look like (Example Windows GUI Client):
The Clients have a list where i can add/remove multiple "Profiles"
A Profile is basically some Config which i get from an Admin via a QR Code/File/Copy&Paste and contains
Each Profile List entry will have some ON/OFF Toggle for globally turning off the Connection (e.g. im Working for Company #2 only 1 Week per Month, and dont want to have this Connection open all the time)
For the Linux Client, you can implement some "Add/Delete/Enable/Disable Profile" command through the CLI
Scenario 2
Multi Tenancy for the Management Server
Scenario: I want to have multiple Isolated "Networks" for whatever reason. (e.g. one for my private Smarthome Network and one only for my Friends, sharing a Minecraft Server)
I guess this two are the most Important Scenarios which is needed to build up complex Architectures
Later you could for example add an fancy Gateway function to connect two Tenants (Kind of Site2Site VPN) -> Example: You have two Companies which each use their own Netbird and want to share some Services Transparently (Without adding the opposite Profiles to all employees)....
But...., thats stuff for some advanced Use Cases in the Future..... 😀
@mlsmaycon commented on GitHub (Sep 15, 2022):
@fti7 thank you so much for your suggestions and my apologies for not giving feedback earlier, we are aligned on the use cases, for the profile switching I think we can improve a bit more and make things more simpler, just by connecting and the app will handle the rest, and in case you are connecting to multiple self-hosted we can add a Add profile with custom manager.
We are looking at a major account refactor that will allow for better multi-tenancy and isolation. The same goes for the network range management.
Time wise, these changes might come in Q4 or early Q1/2023.
@alexlyee commented on GitHub (Mar 5, 2023):
@mlsmaycon This is great! It seems like this is a solution for combining meshnets of my friends' networks and my own? I came accross this because I opened a case for something very similar over on innernet here. If you wouldn't mind reading my use-case over there, would you mind clarifying if and how this would work for it?
@helmut72 commented on GitHub (Mar 8, 2023):
Are these features released or still in development? If in development, is there a new roadmap?
@lfarkas commented on GitHub (Apr 20, 2023):
i think that one machine can be part of multiple network is a very basic requirements. even openvpn knows this feature from the very beginning. of course this should support multiple interface and multiple config file (or one config file support for multiple interface). imho multiple config file would be more robust. what's more with multiple config file we can use systemd's template services the same way as openvpn do it systemd.unit.html. in this case netbird@work, netbird@home service can be used. of course this requires different network interface and different CGNAT.
is there any progress with it?
@nazarewk commented on GitHub (Apr 24, 2023):
I'm running multiple systemd services: 1 for each network I connect to, don't remember the exact reason, but I had trouble getting it to run using instantiated systemd.unit (I guess it boiled down to running Wireguard listener on different port for each instance)
@bc24fl commented on GitHub (Jul 13, 2023):
I'm evaluating Netbird and super impressed so far! Our use case requires key employees to have access to multiple client isolated networks from a single device. Any updates on this?
@Fantu commented on GitHub (Oct 30, 2023):
one other thing that I see should be modified for support multiple netbird instance is windows firewall rule, actually the name of rule is fixed to "Netbird", I suppose is enough a simple change the rule name to "Netbird-"+$WgIface (for example "Netbird-wt0")
@fti7 commented on GitHub (Mar 1, 2024):
Any update on this?
@jyolo commented on GitHub (Mar 19, 2024):
Any update on this?
@pete1019 commented on GitHub (May 2, 2024):
Multi Tenancy would be so nice. What are the current news on this? Thanks a lot.
@the-project-group commented on GitHub (Aug 9, 2024):
@mlsmaycon any update on this?
How would this work on macOS regarding the service?
@sh00t3r commented on GitHub (Sep 3, 2024):
I converted the guide from @mlsmaycon to use it on windows with the help of nssm. only DNS is not working that well. you can find it on my wiki: link
@florian-obradovic commented on GitHub (Sep 6, 2024):
@mlsmaycon I would love to see both options.
I use Netbird for my HomeNetwork and plan to use it as a self hosted Tailscale-competitor option at my corp.
Additionally at the corp, I'd love to see multi tenancy, here an example use case:
Network 1 is for road warriors / remote access for all clients with their personal username (SSO)
Network 2 is for admin only stuff like remotely accessing these client machines and they're automatically onboarded via access key and always runs as a service. This would make managing these machines much easier. Example: rdp access, vnc from login screen via netbird-network2 only, etc.
Are there any plans for payed self-hosted enterprise plans incl. logging / reporting, support, etc?
We want to self host but are "blind" and don't have any access and traffic reports.
We want to support the project.
We want to get customer support if needed.
@florian-obradovic commented on GitHub (Sep 6, 2024):
@mlsmaycon I would love to see both options.
I use Netbird for my HomeNetwork and plan to use it as a self hosted Tailscale-competitor option at my corp.
Additionally at the corp, I'd love to see multi tenancy, here an example use case:
Network 1 is for road warriors / remote access for all clients with their personal username (SSO)
Network 2 is for admin only stuff like remotely accessing these client machines and they're automatically onboarded via access key and always runs as a service. This would make managing these machines much easier. Example: rdp access, vnc from login screen via netbird-network2 only, etc.
Are there any plans for payed self-hosted enterprise plans incl. logging / reporting, support, etc?
We want to self host but are "blind" and don't have any access and traffic reports.
We want to support the project.
We want to get customer support if needed.
@florian-obradovic commented on GitHub (Sep 6, 2024):
Trying to figure out the steps on macOS:
WgIface must use inteface prefix utun, Example: utun90 for home and utun91 for work (check if free with ifconfig).
Otherwise you get this:
2024-09-06T16:01:47+02:00 ERRO client/internal/connect.go:263: error while starting Netbird Connection Engine: create wg interface: Interface name must be utun[0-9]To check status
Currently I still struggle a bit...
They are connected successfully but even can't ping their own address if both tunnels are connected...
I checked for subnet overlap > No (100.116.0.0/16 & 100.102.0.0/16)
Could this due to the link local addresses being the same?
@GhaziTriki commented on GitHub (Sep 7, 2024):
Hello,
I have successfuly working 2 netbird on 2 networks for Windows guest. The DNS remains a problem. I am using a DNS proxy, Acrylic, however it is possible to start a single netbird instance with 127.0.0.1 as a custom DNS. The second netbird instance fails then. What is blocking pultiple netbird instances to use the same DNS server?
@tgutzler commented on GitHub (Sep 18, 2024):
@mlsmaycon, you seemed quite motivated to push this along 2 years ago but I cannot see an option for switching profiles in the latest client for windows. Has this been shelved?
@Echutaa commented on GitHub (Sep 25, 2024):
Its in the roadmap and there is at least one draft. The roadmap called for it to come in Q3 '24 so status is unknown but seems like its at least still in the plan and being worked on at some level.
@EdouardVanbelle commented on GitHub (Sep 29, 2024):
Hello I am correctly using 2 netbird instances on my Mac:
/Library/LaunchDaemons/netbird-work.plistwith a configuration file mapped to/var/run/netbird-work.sock/Library/LaunchDaemons/netbird-home.plistwith a configuration file mapped to/var/run/netbird-home.sockI saw that DNS configuration is set via the latest daemon started.
which is logic, seeing the source code you are dealing with scutil on Darwin systems and using uniq keys
State:/Network/Service/NetBird-Match/DNS&State:/Network/Service/NetBird-Search/DNSHow do you plan to deal with multiple tenancy ?
I think it can be possible to use namespaced keys to permit multitennancy
for example:
State:/Network/Service/NetBird-Work-Match/DNSvsState:/Network/Service/NetBird-Home-Match/DNSbut I guess it will be different on Windows & Linux (I saw your trick with eBPF)
While waiting a solution on a Darwin system, I did this very simple override:
@TrentCorrill commented on GitHub (Feb 13, 2025):
Multi-tenancy is also a feature I would love to have - or being able to connect two separate networks together. For my usecase I want to be able to connect my Home NetBird network to my work NetBird network, but not have my work NetBird network be able to access anything in my home network.
@netandreus commented on GitHub (Feb 17, 2025):
@TrentCorrill this is my use case too.
@netandreus commented on GitHub (Feb 17, 2025):
@sh00t3r if I will install and run both services and for these two peers I will have exit nodes (for the default route) which of them will be used?
@sh00t3r commented on GitHub (Feb 20, 2025):
Thats a good one @netandreus I dont know. You should test it and find out what works for you.It is always possible to select one of the exit nodes in the client and deselect the other one. That will work. i dont think you can activate them at the same time. I hope the devs will look into this whole concept of multiple networks, so we can all use it for work and home! The situation of @TrentCorrill is also my use case.
@prankos commented on GitHub (Mar 6, 2025):
This will be a great option/feature to have, runnning two seperate Netbird instances at the same time.
my current use case is that i already use Netbird with SSO for all my clients as the primary VPN/Remote access solution, each instance is hosted at their premises and isolated to their network resources.
I also use Wireguard tunnels on each endpoint back to a managed instance where i have some monitoring and security tools hosted, it will be great to migrate the Wireguard solution to Netbird.
@nazarewk commented on GitHub (Mar 11, 2025):
As part of clarifying whether https://github.com/netbirdio/netbird/issues/3273 is related (it is not) I have an official update regarding supporting multiple networks at once.
As it stands now: the feature requires a significant rework of the codebase and our small team is too resource constrained to pick it up until a large customer/partner asks for it specifically.
@nazarewk commented on GitHub (May 6, 2025):
note: watch out for running multiple UI processes deduplication logic https://github.com/netbirdio/netbird/issues/3784
@fxandrei commented on GitHub (Jun 10, 2025):
Having the ability to connect to multiple coordination server would be a MASSIVE feature for netbird.
I use openvpn daily to connect to multiple vpn servers (4-5 at least, at the same time).
Of course each have their own subnets so they dont overlap or anything.
Ideally i could do the same in netbird.
Each coordination server would have a different public domain, a different subnet, different internal dns domain (ex: peer.internal-domain, etc ). Also i should be able to connect to a peer on the connected coordination servers via fqdn (peer1.internal-domain1, peer1.internal-domain2, etc).
This would just be a killer feature.
Its the only thing that is keeping me from quitting openvpn :)
@ordovice commented on GitHub (Jun 11, 2025):
I posted this on 1661 as well, which is in regard to creating an always on vpn tunnel and then authenticating (similar idea to multiple connections as well)
Solutions such as Enclave (also wireguard based) accomplish this by registering the device via a registration key (Enclave technically runs as a system service and then there's a userspace component for login/management). When registered via device key, you can assign policy tags to the registration key and then use those tags in the policies. authentication is also allowed as a secondary set of trust requirements and you can assign the authentication as a trust requirement for the registered device and use sso groups to assign other routes/policies/peer pairs to the device.
@nazarewk commented on GitHub (Jun 12, 2025):
also answer for #1661 comment
@ordovice
This is exactly the same as NetBird.
Unless I misunderstand something, Enclave Tags work like NetBird Groups assigned to Setup Key (initially) and later propagated as Peer Groups (for modifications after initial login). Then the Groups can be used in regular Access Policies
sounds like use case a user mentioned on the Slack that we might look into when implementing this PR:
@nazarewk commented on GitHub (Jun 12, 2025):
More use cases mentioned
repeated from the upper post
Support logging in with multiple credentials to the same NetBird control plane & the same account for gradually granting higher permissions. For example:
mentioned in email
I don't see how that could be technically achieved
Support (or explicitly deny in docs/warnings) some form of running on a shared system (Microsoft AVD aka Azure Virtual Desktop) that can be simultaneously used by multiple users.
I am not aware of any operating system mechanism that could tell apart traffic originating from different users, so I don't see any technical way of creating a VPN with user-scoped sessions. If anybody knows that it would be nice to hear.
The closest thing I have found would be running Linux user sessions in their own namespaces https://github.com/systemd/systemd/issues/30512
@nazarewk commented on GitHub (Jun 13, 2025):
Might want to take a look at https://github.com/netbirdio/netbird/issues/1569 as part of the profile switching feature.
@buzzard10 commented on GitHub (Jul 10, 2025):
I would like to have one connection to my personal netbird + another connection in the same time to company netbird.
@fxandrei commented on GitHub (Jul 10, 2025):
Yes, this would be a killer feature. For now you can switch connections with a script, and connect one or the other.
@jakob1379 commented on GitHub (Jul 14, 2025):
Running NixOS this is already possible, though still needing 1 netbird account for each connection..
This will make two separate netbird clients
netbird-homeandnetbird-shedwhich is just a wrapped process of thenetbirdcli itself. Main downside is that you cannot have indicators for the connections without some tweaking.@nazarewk commented on GitHub (Jul 14, 2025):
It is only partially possible; the DNS and some other features won't work and might otherwise interfere with each other.
@fxandrei commented on GitHub (Jul 14, 2025):
What is NixOS ? And how is it related to this situation (running netbird client on windows\linux and having the ability to connect to multiple networks).
@nazarewk commented on GitHub (Jul 14, 2025):
It is a Linux distribution configured fully declaratively using purpose-built functional configuration language (Nix), you can think of it as a giant Ansible playbook that supports proper rollbacks and continuous & atomic configuration updates. NixOS modules make it relatively easy to abstract away very elaborate operating system setups behind only a few configuration knobs.
In theory, it proves that running multiple clients at the same time might be possible to configure externally to NetBird itself.
In practice, not much: those setups might be too complex to execute on more traditional operating systems without elaborate automation (or writing app dedicated to this).
PS: I am the author of a large chunk of the NixOS module. I didn't do any significant work on it for at least a year, but as far as I remember the biggest issues to solve to run multiple instances at once on Linux were:
7120Of course MacOS, Windows and other operating systems would require an entirely different custom-tailored approaches.
@fxandrei commented on GitHub (Jul 14, 2025):
What you are describing seems to be leaning more to the server side of things.
I think its fine to have a netbird server instance completely separate.
The main problem here seems to be related to the client (i think).
Im not actually sure what it involves (in detail) in order to achieve this with netbird, but right now im able to run multiple openvpn connections on my windows machine, each with its own adapter.
Ideally i could do the same with netbird in the future, and then i quite openvpn :)
@nazarewk commented on GitHub (Jul 14, 2025):
Not at all, I'm talking Linux (which a lot of servers run on), but it's all about running the local client on a PC. I don't think there would be much (or anything at all) to adjust on the NetBird server side of things.
It is very specific to both VPN implementation and the operating systems supported. Even OpenVPN doesn't support it uniformly across all systems/clients.
With the growing popularity of NetBird and therefore growing demand for running clients for multiple environments at once, we do plan to support it, but I can't give any concrete timelines yet.
@jakob1379 commented on GitHub (Jul 14, 2025):
DNS works fine (I use systemd-resolved which may influence whether DNS works correctly or not)
@nazarewk commented on GitHub (Jul 14, 2025):
You'll probably notice only one of the instances replies with the correct names when you try to access instance-specific records. As far as I remember, the one with the correct answers would be the last one that started up.
Unless something has changed since I last looked into it. I was also running
systemd-resolved.@jakob1379 commented on GitHub (Jul 14, 2025):
I notice that all my instances replies with the correct names. So something must have changed or has always been inconsistent 😅
@nazarewk commented on GitHub (Jul 14, 2025):
@jakob1379 it indeed seems to be the case, I can access all of: 2x Cloud & 1x self-hosted instance at the same time without issues on NixOS with
systemd-resolved:I'll try to find out more details on it from the team.
@fxandrei commented on GitHub (Jul 14, 2025):
Im not sure i follow this. Can anything from nixos be used to achive this on other machines ? Lets say i have a debian machine somewhere, or (more likely) my own windows machine.
What does this mean for a windows machine that would need to access multiple netbird instances at the same time (ideally)
@nazarewk commented on GitHub (Jul 14, 2025):
I have heard back from the dev team, they're saying there can still be some conflicts, inconsistencies and race conditions within firewall and routing table management on Linux. I guess the most obvious thing to observe would be wiping some of those (fw/routing rules) completely whenever ANY client exits.
It is definitely doable, but is expected to take at least a few workdays to clean up. We might be able to squeeze it in sooner (a few months) rather than later (end of this or early next year).
The NixOS module provides a blueprint for what would need to be configured on most of the Linux systems:
systemd-resolvedmodifications,Those should be applicable to most of Linux distributions running
systemd,resolved&polkit.This does not mean much for other operating systems; each has a different networking/firewall stack and needs to be treated individually.
@fxandrei commented on GitHub (Jul 14, 2025):
Could the wsl2 of windows be used ? Anyway, looking forward to updates on this subject.
@x7ryan commented on GitHub (Jul 14, 2025):
I ended up here trying to see if this were possible. I am setting up two seperate netbird networks, one for home, and one for my work.
I do wonder if as a workaround if I could not create a bridge or gateway from say my personal network to my work network, with say a VM on my home network with the netbird client logged into my work network and sharing those routes? I feel like if I could restrict the IP ranges each netbird network could assign to their machines I could give both work and home different non-overlapping ranges and it could work? But I'm no network engineer so I may be wrong. But I'd be interested in knowing if this could be a workaround at least until the clients are able to natively support multiple simultaneous connections?
@tgutzler commented on GitHub (Jul 15, 2025):
Your workaround is technically clever but not recommended from a cyber security perspective. Your company's requirement to use a VPN is a security measure designed to create a secure, controlled environment for accessing internal resources. By creating a permanent tunnel from your personal network to the work network, you would essentially be creating a new, unsanctioned bridge between two distinct security zones. This introduces a potential attack vector through your personal network, which may have different and potentially less stringent security controls than your company's network.
@x7ryan commented on GitHub (Jul 16, 2025):
To meke it clear I own the company, I am in charge of both the security controls of my company and my personal network, so I agree not ideal if you work for someone else who happens to use netbird for their company VPN. But in my specific case that's not applicable.
@nazarewk commented on GitHub (Jul 18, 2025):
noting use case mentioned in https://github.com/netbirdio/netbird/issues/4170
@Ghx0sty commented on GitHub (Aug 19, 2025):
Hello! I'd also be very thankful to have a multi-tenancy feature like the one in the managed version of Netbird. I'm also wondering if it could work with one coordination server?
I have a use-case where I wish to manage two separate networks; one is my private homelab, and another is a project where I wish to entrust a friend with helping to manage networking + have access to machines. I'd wish to manage both networks from my dashboard, and to also have him help sort out our project's network
I wish to use the same coordination server for the two of us. However, in "single account mode", he'd be able to see all my private nodes when given Admin; and when disabled, I cannot find a way to add ANY accounts to the same network even when they have the same private mail domain; much less be able to use the same account to manage 2 networks
I've searched for a good few hours and I can't find anything on how to achieve what I need. Is my specific usecase already possible, am I missing something?