comparison-of-vpns.md 8.6 KB


layout: page title: Comparison of VPNs permalink: /blog/comparison-of-vpns/ keywords: vpn,self-meshing,mesh,tinc,n2n,tailscale,zerotier,nebula description: In this blog post, I'll review various self-meshing VPN solutions such as Tinc, n2n, or Zerotier and take a look at which ones are ready for use on a Virtual Internet Exchange Point (VIXP). lang: en date: 2023-12-13 00:00:00 +0100 feed: false

sitemap: false

Criteria WireGuard OpenVPN fastd Tinc strongSwan with IPsec/IKEv2
License GPLv2 / MIT GPLv2 2-Clause BSD GPLv2 GPLv2
Free software Yes Yes Yes Yes Yes
Android support Yes Yes No Yes Yes
- In F-Droid Yes, Unofficial app Yes, Semi-Official app - Yes Yes
- In IzzyOnDroid Yes No - No No
Windows support Yes Yes No Yes No
Linux support Yes Yes Yes Yes Yes
- In Arch Linux Yes Yes Yes Yes Yes
- In Debian packages Yes Yes Yes Yes Yes
- In Alpine Linux Yes Yes Yes Yes Yes
Peer-to-Peer / Site-to-Site Yes Yes Yes Yes ?
Client / Server No Yes No No No
Roadwarrior Yes Yes Yes Yes Yes
Authentication and encryption methods
- perfect forward secrecy (PFS) Yes Yes Yes as of 1.1 Yes
- authenticates peer via Public key Public key / X509 / Username+Password Public key Public key Public key / X509
Tunnel Layer 3 Layer 2/3 Layer 2/3 Layer 2/3 ?
Tunnel over UDP UDP/TCP UDP UDP and TCP ?
Full IPv6-Support Yes Yes Yes Yes ?
Full IPv4-Support Yes Yes Yes Yes ?
Difficulty of configuration
- MTU documentated? Partly Partly Yes ? ?
- Certificate management required? No Yes No No No?
- Few configuration files? Yes Yes Yes No ?
- Cryptographic parameters are set by yourself? No Yes No No Yes

Cryptographic parameters are set by yourself?: (only a choice between old and new protocol)


Criteria Tinc (There Is No Cabal) n2n Tailscale/Headscale Zerotier Nebula
License GPL-2.0 GPL-3.0 BSD BSL (proprietary) MIT
Free software Yes Yes Yes No Partly
Android support Yes Yes (uses proprietary component) Yes Yes Yes (source-available, no free software)
- In F-Droid Yes No Yes No No
- In IzzyOnDroid No No No Yes No
Windows support Yes Yes Yes Yes Yes
Linux support Yes Yes Yes Yes Yes
- In Arch Linux Yes Yes Yes Yes Yes
- In Debian packages Yes Yes No No Yes
- In Alpine Linux Yes Yes Yes No Yes
Centralized server No Yes Yes Yes Yes
Federated server - Yes No No Yes
Self hosting of the server - Yes with headscale Yes Yes
Dezentalized Yes Yes No No Yes
Authentication and encryption methods RSA/Blowfish/SHA-1 (Legacy), TLS1.2-Like Ed25519/AES-256-CTR/SHA-256 (SPTPS) Various, including AES-256-CTS or ChaCha20 WireGuard Curve25519/Ed25519, Salsa20/Poly1305 Curve25519, AES-256-GCM
- perfect forward secrecy (PFS) Yes (SPTPS) ? Yes No? ?
Tunnel Layer 2/3 Layer 2 Layer 3 Layer 2 Layer 3
Tunnel over TCP/UDP TCP/UDP (IPv4-only) UDP UDP UDP
Full IPv6-Support Yes No Yes Yes Yes
Full IPv4-Support Yes Yes Yes Yes Yes

Since a table with a lot of entries quickly becomes ugly, here are a few remarks:

  • Tinc fulfills many criteria, but is no longer being actively developed. The main developer still processes pull requests, but is no longer actively working on the code itself due to time constraints. Issues are therefore only sporadically processed or fixed.
  • Tinc version 1.0 uses a cryptography system that is not modern. In the new pre-release version, Tinc uses the specially developed SPTPS protocol, which even implements PFS. The development of the pre-release version Tinc 1.1 has been going on for a very long time. Tinc 1.1 is in almost no official package sources. It can be obtained from Alpine Linux via the community repository or from Arch Linux via AUR.
  • n2n can only transport data via IPv4. This makes it impossible for IPv6-only nodes to participate in an n2n network.
  • n2n also has an Android app. This is itself under a free license, but includes many non-free, privacy-unfriendly components.
  • The Tailscale Client itself is free software. However, the actual Tailscale server is proprietary. However, an alternative server implementation is available under the name headscale.
  • Tailscale also has an Android app, which is even available in F-Droid. Unfortunately, the app has an anti-feature - it sends debug logs to the developers without consent.
  • Zerotier was available for some time under the GPL 3 license. However, the developers have changed to the proprietary BSL license. It allows the use of Zerotier for non-commercial or non-profit purposes.
  • Nebula is unfortunately only partially free software. The Linux client is FLOSS and even in the Debian package sources. However, the Android app, which is produced by the same developers, is proprietary.

My criteria are actually quite simple:

  • I want full IPv6 support. This is particularly necessary in networks like the dn42, where there are also IPv6-only networks.
  • I want full IPv4 support. Although IPv4 is a legacy protocol, it is still used by many - including me - in the dn42.
  • The VPN solution should use a fairly secure encryption. This can also include PFS. PFS means that if the long-term key for the connection is compressed, not all old connections can be subsequently decrypted.
  • The software should be completely FLOSS. For me, this means preferably under a license that is recognized by both the FSF and the OSI. There are various reasons for this. In this context, it means above all that you can compile it yourself, the security can be audited independently and simple packaging for operating systems is possible.
  • I mainly use Debian on my servers. Therefore, the software must be available for Debian. Since I don't just want to determine the freedom of the software myself, the software must also be in the official package sources.
  • An Android app could be added as a bonus. However, this is not necessary, especially in the context of a VIXP, but would be more of a gimmick.
Criteria Tinc n2n Tailscale/Headscale Zerotier Nebula
Full IPv6-Support? Yes No Yes Yes Yes
Full IPv4-Support? Yes Yes Yes Yes Yes
Uses modern cryptography? Yes Yes Yes Yes Yes
PFS? Yes ? Yes ? ?
Is Free Software? Yes Yes Yes No Yes
Is Fully FLOSS? Yes Yes No No No
In Debian? Yes Yes No No Yes

In conclusion, it can be said that only Tinc in the pre-release version fully meets my criteria.