Engarde is a network utility designed to create a point-to-point tunnel over multiple network connections. We use this to ensure that we have a reliable tunnel as long as at least one of the connections is working.

The client instructions in this article are for macOS Catalina.

Before: Setup WireGuard

Prepare configuration file

client:
  listenAddr: "127.0.0.1:51820"
  dstAddr: "ENGRADE_SERVER_IP:59402"
  excludedInterfaces:
    - "en9"
    - "utun4"
  webManager:
    # The address to listen to. Leave it empty to disable the management webserver.
    listenAddr: "0.0.0.0:9001"
    # The credentials to access the management interface. Leave them empty or omit them for no authentication.
    username: "engarde"
    password: "engarde"

server:
  listenAddr: "0.0.0.0:59402"
  dstAddr: "127.0.0.1:51820"

Server

Install Engarde

  • Download Engarde from Github:
    $ wget https://engarde.linuxzogno.org/builds/master/linux/amd64/engarde-server
    
  • Open Firewall port for Engarde:
    $ ufw allow 59402/udp
    
  • Install program in executable directory:
    $ install ./engarde-server /usr/bin/
    
  • Launch program:
    $ engarde-server /path/to/engarde.yml
    

Use as systemd service

To launch engarde on startup, you can setup it as a systemd service.

  • Start by downloading the files you find in this dedicated branch;
  • Place engarde-server@.service in /etc/systemd/system/;
  • Place your config in /etc/engarde/ folder, like /etc/engarde/myconfig.yml;
  • Enable the service with systemctl enable engarde-server@myconfig to launch the service on system startup;
  • If you want to launch the service immediately, execute systemctl start engarde-server@myconfig

Client

Install Engarde

  • Download Engarde from Github.
  • Make the file executable if required:
    $ chmod 755 engarde-client
    
  • Launch program:
    $ engarde-client /path/to/engarde.yml
    
  • Change the WireGuard configuration on the client: set the peer address to the engarde-client listen address (in this procedure, it will be 127.0.0.1:51820). You don’t need to change anything on the server.

Setup scripts

I have created some scripts to execute the setup automatically. You can find them here with all the instructions. I suggest you to execute the setup manually the first time, to understand better what is going on.

Reference