All Projects → stellarproject → Guard

stellarproject / Guard

Licence: mit
GRPC Wireguard Server to manage tunnels

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Labels

Projects that are alternatives of or similar to Guard

Ovpm
OpenVPN Management Server - Effortless and free OpenVPN server administration
Stars: ✭ 256 (+260.56%)
Mutual labels:  grpc, vpn
Thingsboard
Open-source IoT Platform - Device management, data collection, processing and visualization.
Stars: ✭ 10,526 (+14725.35%)
Mutual labels:  grpc
Vpn
ShadowSocks 翻墙(收费服务器:120元/年,1T流量,可看1080p视频。需要的可以联系微信:Dumin2712220318 )
Stars: ✭ 58 (-18.31%)
Mutual labels:  vpn
Vpnhotspot
Share your VPN connection over hotspot or repeater! (root required)
Stars: ✭ 1,131 (+1492.96%)
Mutual labels:  vpn
Simple Vpn Demo
A Simple Point-to-Point tunnelling implementation in C
Stars: ✭ 59 (-16.9%)
Mutual labels:  vpn
Grpc Rust
Rust implementation of gRPC
Stars: ✭ 1,139 (+1504.23%)
Mutual labels:  grpc
Avpn
a simple vpn implemented based on c++ asio.
Stars: ✭ 57 (-19.72%)
Mutual labels:  vpn
Tunnel Apple
Private Internet Access - Tunnel for Apple platforms
Stars: ✭ 69 (-2.82%)
Mutual labels:  vpn
Pi Hole Pivpn On Google Compute Engine Free Tier With Full Tunnel And Split Tunnel Openvpn Configs
Run your own privacy-first ad blocking service in the cloud for free on Google Cloud Services.
Stars: ✭ 1,141 (+1507.04%)
Mutual labels:  vpn
Prometheus Proxy
Prometheus Proxy
Stars: ✭ 63 (-11.27%)
Mutual labels:  grpc
Grpcalchemy
The Python micro framework for building gPRC application.
Stars: ✭ 63 (-11.27%)
Mutual labels:  grpc
Vpn At Home
1-click, self-hosted deployment of OpenVPN with DNS ad blocking sinkhole
Stars: ✭ 1,106 (+1457.75%)
Mutual labels:  vpn
App
Reusable framework for micro services & command line tools
Stars: ✭ 66 (-7.04%)
Mutual labels:  grpc
Kubemq
KubeMQ is Enterprise-grade message broker native for Docker and Kubernetes
Stars: ✭ 58 (-18.31%)
Mutual labels:  grpc
Koatty
Koa2 + Typescript = Koatty. Use Typescript's decorator implement IOC and AOP.
Stars: ✭ 67 (-5.63%)
Mutual labels:  grpc
Wireguard Go Docker
Wireguard docker image
Stars: ✭ 57 (-19.72%)
Mutual labels:  vpn
Blazor Wasm Identity Grpc
Blazor WASM, IdentityServer4, Kestrel Web Server, Entity Framework Code First SQLite Database with Multiple Roles, Additional User Claims & gRPC with Roles Authorization.
Stars: ✭ 61 (-14.08%)
Mutual labels:  grpc
Tunnelblickctl
🔒 Command-line interface for Tunnelblick
Stars: ✭ 64 (-9.86%)
Mutual labels:  vpn
Terraform Aws Vpc Peering
Terraform module to create a peering connection between two VPCs in the same AWS account.
Stars: ✭ 70 (-1.41%)
Mutual labels:  vpn
Libra Grpc
A lightweight JavaScript library for Libra
Stars: ✭ 69 (-2.82%)
Mutual labels:  grpc

guard

A GRPC server for managing wireguard tunnels.

Status: alpha

Requirements

Wireguard and it's utilities, wg, wg-quick, and [email protected] must be installed on the system hosting the guard server.

Run the server

When you run the wireguard server it will automatically create its own wireguard tunnel that the server binds to. This makes the server secure to manage across your network. Use the --address flag to manage this server.

> sudo guard server

INFO[0000] tunnel created                                tunnel=guard0
INFO[0000] created guard0 tunnel
{
 "id": "guard0",
 "listen_port": "10100",
 "address": "10.199.199.1/32",
 "public_key": "37uzie/EZzzDpRbVTUOtuVXwhht/599pdhseh9MJ7QE=",
 "endpoint": "127.0.0.1"
}
> sudo wg

interface: guard0
  public key: 37uzie/EZzzDpRbVTUOtuVXwhht/599pdhseh9MJ7QE=
  private key: (hidden)
  listening port: 10100

Create a new tunnel

To create a new tunnel specify the address and the endpoint for the tunnel. The last argument is used as the tunnel ID and interface name on the server.

> guard create --address 192.168.5.1/32 --endpoint 127.0.0.1:31000 wg0

{
 "id": "wg0",
 "listen_port": "31000",
 "address": "192.168.5.1/32",
 "public_key": "irDV3wkkNe6f1GLAPFNGjj0xsQsoxPCNko4Lf3igcjM=",
 "endpoint": "127.0.0.1"
}

Delete a tunnel

Delete a tunnel using the tunnel ID

> guard delete wg0

Create a new peer

To create a new peer and have all the keys generated for you use the peers new command. The peer configuration will be output to stdout that you can copy and paste into your client.

> guard peers --tunnel wg0 new --ip 192.168.5.2/32 --dns 192.168.5.1 --ips 192.168.5.0/24 --ips 192.168.0.1/24 mypeer

[Interface]
PrivateKey = kFJ6VSq+l6sBPaI2DUbEWSVI83Kcfz/yo7WfVheT+FI=
Address = 192.168.5.2/32
DNS = 192.168.5.1

# wg0
[Peer]
PublicKey = irDV3wkkNe6f1GLAPFNGjj0xsQsoxPCNko4Lf3igcjM=
AllowedIPs = 192.168.5.0/24, 192.168.0.1/24
Endpoint = 127.0.0.1:31000

List all tunnels

> guard list

[
 {
  "id": "wg0",
  "listen_port": "31000",
  "address": "192.168.5.1/32",
  "peers": [
   {
    "id": "mypeer",
    "public_key": "u/eGf6olYeFSH4XoPvOSZJb9swA/qWPAlfSxRBi6Uw8=",
    "allowed_ips": [
     "192.168.5.2/32"
    ],
   }
  ],
  "public_key": "irDV3wkkNe6f1GLAPFNGjj0xsQsoxPCNko4Lf3igcjM=",
  "endpoint": "127.0.0.1"
 }
]

Delete a peer by ID

You can remove and update peers using the peers commands.

> guard peers --tunnel wg0 delete mypeer

{
 "id": "wg0",
 "listen_port": "31000",
 "address": "192.168.5.1/32",
 "public_key": "irDV3wkkNe6f1GLAPFNGjj0xsQsoxPCNko4Lf3igcjM=",
 "endpoint": "127.0.0.1"
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].