Status
What works
-
Automatically adding and removing peers and their routes when the system binds and unbinds IPs
-
Automatically adding and removing the default route over the vula interface depending on if the system gateway coincides with a peer’s IP.
-
Keeping pinned peers and routes (including the gateway, when applicable) active after network state changes.
-
Releasing the route via a pinned gateway peer via the
vula release-gateway
command, when the user is intentionally roaming away from a network where a pinned peer was the gateway. -
Editing peers and preferences using subcommands of
vula peer
andvula prefs
.
Known issues
Numerous in-progress known issues are documented in TODO.md, but the most important issues to be aware of when using vula today are these:
-
IPv6 support is only partially implemented. At this time, IPv6 traffic is not automatically protected. This includes internet-destined IPv6 traffic when the gateway is running
vula
. It is likely that there are currently ways that an attacker could use IPv6 to circumvent vula’s protection of IPv4 traffic against active attacks, so, for those protections to be strong you should currently disable IPv6 on the system completely. Vula’s IPv6 support is improving, however, and we plan to provide strong protections against active attackers while using IPv6 in the near future. -
Coexistence with other usage of wireguard is currently a bit complicated. Activating another WireGuard interface using a typical
wg-quick
configuration aftervula
is running will causewg-quick
to insert its policy routing rules with a lowerpref
value (meaning, a higher priority) which will circumvent vula’s rule and prevent traffic to vula peers from being protected. This can be worked around by editing the other connection’swg-quick
config to setTable = off
and to havePostUp
andPostDown
lines to perform all of the stepswg-quick
normally performs, but with the addition ofpref
arguments in theip rule add
commands specifyingpref
values greater than vula’s (666). Additionally, thewg-quick
-managed interface should have itsMtu
set it 1340, to allow for the overhead of running it over a vula gateway, and, at least in some configurations, a route to the other wireguard endpoint must be added (which can be done using thevula peer addr add
command). With all of this carefully configured, if the route to the remote peer endpoint is added to apinned
gateway peer, this configuration can persist and the normal wireguard configuration can continue working while roaming on and off of a network with a vula gateway. This will be handled much more smoothly in the future, and the documentation of the current situation should improve in the nearer future. -
The
vula verify
subcommands, including QR code scanning, have bitrotted and are currently non-functional. Peers can be marked aspinned
andverified
using thevula peer set
command for now.
Troubleshooting
The vula repair
command will ensure that all peers have the correct routes
and wireguard peer configuration. It can be run with the --dry-run
option to
print what would be corrected without actually modifying the system state. This
command should generally not find anything which needs to be repaired.
If you encounter problems while running vula and wish to stop the service, the steps to do so are currently:
sudo systemctl stop vula.slice
to stop the software.sudo ip link del vula
to delete the device and the routes.sudo ip -4 rule delete 666 && sudo ip -6 rule delete 666
to remove the ip rules.
To prevent the daemons from launching on startup, you can run systemctl disable --now vula-organize
and/or apt remove python3-vula
.
Please open an issue on codeberg if you encounter any problems!