Translate Routing-Table Entries to Wireguard AllowedIPs with Filters
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Go to file
Ruakij 1d4b59b7cc Add Jenkinsfile 11 months ago
build Add missing \ 2 years ago
cmd/app Pass Slice by reference, not value 2 years ago
doc Add documentation 2 years ago
lib Pass Slice by reference, not value 2 years ago
Dockerfile Add iproute2 as packet 2 years ago
Jenkinsfile Add Jenkinsfile 11 months ago
README.md Fix compose-example 2 years ago
go.mod Update dependencies 2 years ago
go.sum Update dependencies 2 years ago

README.md

RoutingTableToWG

Translate Routing-Table Entries to Wireguard AllowedIPs with Filters



1. Overview

1.1. Usage

The Program will listen for RoutingTable Changes and can translate the changes to a Wireguard-Interface.

It will detect the Peer to add the Route to using the Gateway from the Route-Entry.
In case routes clash or cant be added to Wireguard, Warnings will be logged.


1.1.1. Examples

  • Dynamic Routing with Routing-Protocols (e.g. OSPF)
  • Interacting with Wireguard using the familiar Tools like iproute2

1.2. Install

1.2.1. Environment

Variable Description Type Default
INTERFACE* Wireguard-Interface Name String
FILTER_PROTOCOL Protocol to react on Number / iproute2-name All
FILTER_TABLE Table to react on Number / iproute2-name All
PERIODIC_SYNC Reguarly sync the routing-table
Useful when the wg-interface is changed/updated without us knowing
Seconds -1

* Required


1.2.2. Docker

Depending on the needs, the Container can be run in network_mode: host to be able to access routing-tables and interfaces of the host.

Additionally the capability NET_ADMIN is required for interacting with interfaces.

docker-compose.yml
version: '3'

services:
  routingtabletowg:
    image: ruakij/routingtabletowg
    restart: unless-stopped
    network_mode: host
    cap_add:
      - NET_ADMIN
    environment:
      - INTERFACE=<wgInterfaceName or empty for wg0>

1.2.3. Without Docker

Clone the Repository git clone <URI> and build the Program with go build cmd/app

Then you can run it with ./app


2. Behaviour

2.1. Adding Route


2.2. Deleting Route