This is an old revision of the document!
RADIUSdesk Wireguard Agent
Overview
- The RADIUSdesk Wireguard Agent is a lightweight add-on to Ubuntu or Raspberry Pi devices that serves as a broker between Wireguard and RADIUSdesk.
- It uses a couple of Lua based libraries and scripts to fulfill its mandate.
Installation
Please double check
- Make sure the iptables package is installed. (It was not installed on my Raspberry Pi OS image)
sudo apt-get install iptables
- Make sure packet forwarding for IPv4 is enabled.
- Edit the /etc/sysctl.conf.
- Find and uncomment net.ipv4.ip_forward=1 line.
- Apply all sysctl settings (recommended)
sudo sysctl -p
The Rest
- Make sure the Wireguard package is installed.
sudo apt update sudo apt install wireguard
- Install the following packages.
sudo apt-get install -y curl lua-socket lua-cjson luarocks sudo luarocks install inifile
- Check out the latest RADIUSdesk code
cd /var/www sudo git clone https://github.com/RADIUSdesk/rdcore.git #Link the wireguard agent's files to /etc directory. #(btw the accel-ppp folder is correct and part of the history of the project) sudo ln -s /var/www/rdcore/cake4/rd_cake/setup/accel-ppp/MESHdesk /etc/MESHdesk
Configuration
Startup and additional required files
- Copy the following files:
#config file for the agent sudo cp /etc/MESHdesk/files/wireguard-rd.conf /etc/ #Smart Queue Management (SQM) and throttling scrip sudo cp /etc/MESHdesk/files/cake-wg.sh /usr/local/sbin/ #Startup files sudo cp /etc/MESHdesk/files/rd-wireguard-init.service /etc/systemd/system/ sudo cp /etc/MESHdesk/files/rd-wireguard-heartbeat.service /etc/systemd/system/
Config File
- Configuration is done by tweaking the /etc/wireguard-rd.conf file.
- Refer to the sample below.
[internet] disabled=0 dns=cloud.radiusdesk.com url=cake4/rd_cake/nodes/get-config-for-node.json status_url=cake4/rd_cake/node-reports/submit_report.json actions_url=cake4/rd_cake/node-actions/get_actions_for.json protocol=https http_port=80 https_port=443 ip=164.160.89.129 interface=eth0 [wireguard] interface=eth0
- In our setup we have a RADIUSdesk server which has a FQDN of cloud.radiusdesk.com
- We also specify the fallback ip as 164.160.89.129 in the event when DNS does not resolve.
- Protocol can be either https or http. We choose https which is more secure.
- We also specify the interface we want the Wireguard service to run on.
- In our case we have a VPS with an Enternet port (eth0) where we will run Wireguard on.
- If you run Wireguard on the same server as RADIUSdesk, you can specify localhost for dns and 127.0.0.1 for ip.
- The agent will then fetch the MAC Address of this interface and forward the request for config to RADIUSdesk using this MAC Address as the unique identifier.
- Make changes to this file so that it works with your environment and device.
Startup Files
- We have two Systemd startup files which we copied to the /etc/systemd/system folder earlier.
- Disable the original Wireguard startup file.
sudo systemctl disable wireguard
- Enable everything
systemctl daemon-reload systemctl enable rd-wireguard-init systemctl enable rd-wireguard-heartbeat systemctl start rd-wireguard-init systemctl start rd-wireguard-heartbeat
- Check if everything started up fine
journalctl -u rd-wireguard-init -f journalctl -u rd-wireguard-heartbeat -f
- Everything should now be in place and you can reboot the device and see if it is listed under Wireguard Servers → New Arrivals