3.1 KiB
Overlay Networks
This guide provides detailed instructions for configuring
ZeroTier VPN within Clan. Follow the
outlined steps to set up a machine as a VPN controller (<CONTROLLER>
) and to
include a new machine into the VPN.
1. Setting Up the VPN Controller
The VPN controller is initially essential for providing configuration to new peers. Once addresses are allocated, the controller's continuous operation is not essential.
Instructions
- Designate a Machine: Label a machine as the VPN controller in the clan,
referred to as
<CONTROLLER>
henceforth in this guide. - Add Configuration: Input the following configuration to the NixOS
configuration of the controller machine:
clan.networking.zerotier.controller = { enable = true; public = true; };
- Update the Controller Machine: Execute the following:
Your machine is now operational as the VPN controller.$ clan machines update <CONTROLLER>
2. Integrating a New Machine to the VPN
To introduce a new machine to the VPN, adhere to the following steps:
Instructions:
- Update Configuration: On the new machine, incorporate the following to its
configuration, substituting
<CONTROLLER>
with the controller machine name:{ config, ... }: { clan.networking.zerotier.networkId = builtins.readFile (config.clanCore.clanDir + "/machines/<CONTROLLER>/facts/zerotier-network-id"); }
- Update the New Machine: Execute:
Replace$ clan machines update <NEW_MACHINE>
<NEW_MACHINE>
with the designated new machine name. - Retrieve the ZeroTier ID: On the
new_machine
, execute:
Example Output:$ sudo zerotier-cli info
, where200 info d2c71971db 1.12.1 OFFLINE
d2c71971db
is the ZeroTier ID. - Authorize the New Machine on the Controller: On the controller machine,
execute:
Substitute$ sudo zerotier-members allow <ID>
<ID>
with the ZeroTier ID obtained previously. - Verify Connection: On the
new_machine
, re-execute:
The status should now be "ONLINE":$ sudo zerotier-cli info
200 info d2c71971db 1.12.1 ONLINE
!!! success "Congratulations!" The new machine is now part of the VPN, and the ZeroTier configuration on NixOS within the Clan project is complete.
Decision
We chose zerotier because in our tests it was the easiest solution to bootstrap. You can selfhost a controller and the controller doesn't need to be globally reachable.
In the future we plan to add additional network technologies like tinc, head/tailscale, yggdrassil and mycelium.
Specification
By default all machines within one clan are connected via the chosen network technology.
Clan
Node A
<-> (zerotier / mycelium / ...)
Node B
If you select multiple network technologies at the same time. e.g. (zerotier + yggdrassil) One of them is the primary network and the above statement holds for the primary network.