WICE is a userspace daemon managing Wireguard interfaces to establish peer-to-peer connections in harsh network environments.
It relies on the awesome pion/ice package for the interactive connectivity establishment as well as bundles the Go userspace implementation of Wiguard in a single binary for environments in which Wireguard kernel support has not landed yet.
To use WICE follow these steps on each host:
- Install WICE:
go install riasc.eu/wice/cmd/wice@latest - Configure your Wireguard interfaces using
wg,wg-quickor NetworkManager - Start the WICE daemon by running:
sudo wice daemon
Make sure that in step 2. you have created Wireguard keys and exchanged them by hand between the hosts. WICE does not (yet) discover available peers. You are responsible to add the peers to the Wireguard interface by yourself.
After the WICE daemons have been started, they will attempt to discover valid endpoint addresses using the ICE protocol (e.g. contacting STUN servers).
These ICE candidates are then exchanged via the signaling server and WICE will update the endpoint addresses of the Wireguard peers accordingly.
Once this has been done, the WICE logs should show a line state=connected.
Documentation of WICE can be found in the docs/ directory.
- Steffen Vogel (@stv0g, Institute for Automation of Complex Power Systems, RWTH Aachen University)

k8s-netem has been supported by the ERIGrid 2.0 project of the H2020 Programme under Grant Agreement No. 870620