OPNsense is an open source, easy-to-use and easy-to-build FreeBSD based firewall and routing platform. They maintain a ZeroTier package.
If you're using more than one OPNsense router with ZeroTier for a site-to-site style VPN, you will run in to a "ZeroTier over ZeroTier" issue. This causes high CPU usage and dropped packets. The work-around is to paste this into the local.conf text box in the opnsense UI:
This prevents zerotier from sending zerotier traffic over zerotier.
See this discussion for more information.
Some more settings you may find helpful for your firewall rules:
This prevents ZeroTier from binding to multiple ports.
#ZeroTier clients behind OPNsense
If you have computers behind an OPNsense router, they probably won't be able to make make direct, peer to peer ZeroTier connections.
pf based routers use Symmetric NAT otherwise known as Endpoint Dependent NAT. This is unfriendly to any peer to peer protocol.
Here are some options:
#Run ZeroTier on the Router
ZeroTier will use UPnP or NAT-PMP if they are available.
If you have a small number of ZeroTier clients (and a small number of UDP services in general), enabling Static Port can help.
Firewall -> NAT -> Outbound -> Static Port option. See also the Source Address setting. Each instance of ZeroTier binds to a random source port (in addition to 9993.)
If you have many computers on your network, two services will choose the same port eventually. Then there will be a conflict in the Static NAT and something won't work and you won't remember why.