Skip to content

WireGuard, VxLan, Babel, MQTT based SDN

Notifications You must be signed in to change notification settings

docwyatt2001/RoutWire

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 

Repository files navigation

Testing repository for RoutWire

SDN Mesh based on WireGuard, VxLan, Babel and MQTT

  • MQTT is used to orchestrate the nodes (Nodes to Orchestrator communications).
  • WireGuard is used to create a secure mesh.
  • VxLan provides a "normal" interface on top of WireGuard.
  • Babel routes local subnets between nodes.
    • All Bridges with IPs are redistributed as subnets at the moment.
    • Including Docker subnets (Won't work if they are the same on all nodes). To change:
      nano /etc/docker/daemon.json
      {
      "bip": "172.xx.0.1/16"
      }
      systemctl restart docker

Pre-requisites

Tested only on 18.04
Tested on Raspberry Pi following this guide https://github.com/adrianmihalko/raspberrypiwireguard

The Clients/Nodes require:
add-apt-repository ppa:wireguard/wireguard -y
apt update && sudo apt -y install wireguard mosquitto-clients babeld

The Server/Orchestrator only requires (Can be one of the Nodes):
sudo apt -y install mosquitto-clients

Optional, your own MQTT Broker.
This works for example:
docker run -d --restart=unless-stopped --name eclipse-mosquitto -p 1883:1883 -p 9001:9001 eclipse-mosquitto

Setup

On Nodes and Orchestrator run:
curl https://raw.githubusercontent.com/lorenzo95/RoutWire/master/routwire --output routwire && chmod +x routwire

Change the config flags and passwords!!!

nano routwire

Run the Orchestrator (Can be one of the Nodes):
./routwire server

Run the Nodes:
sudo ./routwire client

To tell the other Nodes to remove this Peer and do some cleanup, run:
sudo ./routwire stop on the Node that is being removed from the mesh.

About

WireGuard, VxLan, Babel, MQTT based SDN

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages