An userspace SORACOM Arc client powered by wireguard-go

soratun check Go Report Card GoDoc

An easy-to-use, userspace SORACOM Arc client powered by wireguard-go. For deploying and scaling Linux servers/Raspberry Pi devices working with SORACOM platform and SORACOM Arc.

  • Quick deployment (copy one or two binary files and done)
  • Integration with SORACOM platform

Tested Platforms

  • Linux amd64
    • Ubuntu 20.04.2 LTS
  • Linux arm (Raspberry Pi 32-bit)
    • Raspberry Pi OS 2021-05-07
    • Ubuntu 20.04.2 LTS
  • macOS Big Sur 11.3 (20E232) -- For development and testing purpose only

Usage

soratun -- SORACOM Arc Client

Usage:
  soratun [command]

Available Commands:
  bootstrap   Create virtual SIM and configure soratun
  config      Create initial soratun configuration file without bootstrapping
  help        Help about any command
  status      Display SORACOM Arc interface status
  up          Setup SORACOM Arc interface
  version     Show version
  wg-config   Dump soratun configuration file as WireGuard format

Flags:
      --config string   Specify path to SORACOM Arc client configuration file (default "arc.json")
  -h, --help            help for soratun

Use "soratun [command] --help" for more information about a command.

See the schema (English / Japanese) for configuration file arc.json detail.

Getting Started

  1. SORACOM platform setup

    1. Create a new SAM user with following permission, and generate a pair of Auth Key and Auth Key Secret for SORACOM API, referring following official documents:

      {
        "statements": [
          {
            "api": ["Sim:createSim", "Sim:createArcSession"],
            "effect": "allow"
          }
        ]
      }
  2. SORACOM Arc bootstrap -- create a new virtual SIM and soratun configuration file

    1. Download the latest binary from the Releases section.

    2. Bootstrap with soratun bootstrap authkey command:

      $ ./soratun bootstrap authkey
    3. soratun will guide your setup through interactive wizard, with asking following questions:

      • SORACOM API auth key ID (starts with "keyId-")
      • SORACOM API auth key (starts with "secret-")
      • Coverage to create a new virtual SIM Global coverage (g.api.soracom.io) / Japan coverage (api.soracom.io)
    4. You will get following output from soratun:

      Created new virtual subscriber: 99999xxxxxxxxxx
      Created/updated configuration file: /path/to/arc.json
      
  3. Start soratun to connect to SORACOM platform:

    $ sudo ./soratun up
    $ ping pong.soracom.io

Tips: you can skip interactive wizard by supplying required parameters via flags as follows.

$ soratun bootstrap authkey --auth-key-id keyId-xxx --auth-key secret-xxx --coverage-type jp

For other bootstrapping method detail, please consult SORACOM documentation at:

Running as a daemon with systemd

Use conf/soratun.service.sample as a starter, copy file you edited to /etc/systemd/system/soratun.service directory, then

$ sudo systemctl enable soratun
$ sudo systemctl start soratun
$ sudo systemctl status soratun
$ journalctl -u soratun -f
$ sudo systemctl stop soratun

soratun supports systemd watchdog. It'll update the timer every 110 seconds, based on Protocol & Cryptography - WireGuard:

After receiving a packet, if the receiver was the original initiator of the handshake and if the current session key is REKEY_AFTER_TIME - KEEPALIVE_TIMEOUT - REKEY_TIMEOUT ms old, we initiate a new handshake.

With the sample unit configuration, soratun will be restarted after max. 120 + 110 seconds after Arc session deletion. This timer would be reconsidered in the future.

Running without sudo

You can run soratun without sudo as follows. See capabilities(7) for CAP_NET_ADMIN detail.

$ sudo groupadd wg # create a new group for WireGuard users
$ sudo mkdir -p /var/run/wireguard # create a directory where wireguard-go control socket file persists
$ sudo chgrp wg /var/run/wireguard # change group of the directory
$ sudo setcap cap_net_admin+epi soratun # add CAP_NET_ADMIN capability to perform various network related operations
$ sudo usermod -a -G wg ubuntu # update group for WireGuard user
$ # log out to enable group change
$ soratun up soratun0 --log-level verbose

Note: Some OSes won't persist /var/run/wireguard during OS recycle. We have to find more good way to do this.

TODOs

More test coverage. At this moment cmd/up_test.go won't work.

License

See LICENSE for detail.

Acknowledgments

"WireGuard" and the "WireGuard" logo are registered trademarks of Jason A. Donenfeld.

Following source codes have been derived from wireguard-go which is copyrighted by WireGuard LLC under the terms of the license.

Note

This project is not affiliated with the WireGuard project.

Contributing

Please see CONTRIBUTING for detail.

FAQ

  • Why I should use this although recent Linux kernel has first class WireGuard support?
    1. In order to make SORACOM Arc deployment and configuration simple. This client is tightly integrated with SORACOM platform and will do essential steps such as authentication, configuration, etc. on behalf of you.
    2. Of course, you can use Linux kernel-native WireGuard with manual setup.
    3. In the future, SORACOM Arc might introduce new technology other than WireGuard, but (hopefully) this program will make the changes invisible under the hood.
  • Why the operating system XXX is not supported?
    1. Platforms supported by wireguard-go should work. But please note that this client will set required network configurations up via Netlink. Other platform which don't have similar capability will need manual adjustments.
    2. SORACOM API is platform agnostic so implementation related to that part should work as well, but not tested.
Comments
  • fix(deps): update module golang.zx2c4.com/wireguard to v0.0.20201121

    fix(deps): update module golang.zx2c4.com/wireguard to v0.0.20201121

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | golang.zx2c4.com/wireguard | require | patch | v0.0.0-20211030003956-52704c4b9288 -> v0.0.20201121 |


    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • add flags to prevent the configuration from persisting on local file system

    add flags to prevent the configuration from persisting on local file system

    For some use cases, saving WireGuard private key in plain text file will be a security concern, although kernel-native WireGuard does. File system encryption and setting proper permission could mitigate the concern, but this PR will add another way to improve the situation. In short:

    $ ./soratun boostrap <cellular|sim> --dump-config | sudo ./soratun up --read-stdin
    
    1. bootstrap <cellular|sim> --dump-config flag will bootstrap the virtual SIM, then output configuration (arc.json equivalent) to stdout,
      • Since sim and cellular based bootstrap is idemponent, we can repeatedly do that. Every bootstrap will return same virtual SIM, with new pair of WireGuard key etc.
      • On the other hand, authkey based bootstrap will create new virtual SIM every time when it's called, if arc.json does not exist. This means additional costs. Hence it does not make sense to support this way for authkey.
    2. up --read-stdin flag specifies reading the configuration from stdin, then connect to the SORACOM platform

    The changes will prevent the configuration from persisting on local file system.

    Some notes:

    • Platform native tools and APIs e.g. macOS Keychain is a good way to store such secrets, but will introduce additional complexity.
    • --config flag will be ignored if --dump-config and --read-stdin are specified. As a start point, additionalAllowedIPs, mtu, and persistentKeepalive can be specified via respective flags. I may add others e.g. interface, logLevel, etc. based on future feature requests. (it might needs some internal refactoring.)
    • The tag should be v1.2.0 once merged.
  • fix(deps): update module golang.zx2c4.com/wireguard to v0.0.20201121

    fix(deps): update module golang.zx2c4.com/wireguard to v0.0.20201121

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | golang.zx2c4.com/wireguard | require | patch | v0.0.0-20210805125648-3957e9b9dd19 -> v0.0.20201121 |


    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • fix(deps): update module github.com/coreos/go-systemd to v22

    fix(deps): update module github.com/coreos/go-systemd to v22

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/coreos/go-systemd | require | major | v0.0.0-20191104093116-d3cd4ed1dbcf -> v22.3.2 |


    Release Notes

    coreos/go-systemd

    v22.3.2

    Compare Source

    Changes:

    • dbus: fix deprecated marks and docs
    • journal: close unix socket after successful probe

    v22.3.1

    Compare Source

    Changes:

    • sdjournal: fix input argument type in C.Malloc call
    • gomod: update godbus to v5.0.4

    v22.3.0

    Compare Source

    Changes:

    • dbus: add KillUnitWithTarget
    • dbus: fix typo in GetUnitTypePropertyContext
    • sdjournal: drop conditional static specifier
    • ci: clean up legacy helpers
    • ci: let system settle before running tests

    v22.2.0

    Compare Source

    Changes:

    • go-systemd: fix building on windows
    • dbus: add context-aware methods
    • dbus: add context to open functions
    • dbus: add ListJobs method
    • sdjournal: SeekTail should be followed by Previous, not Next
    • sdjournal: add GetBootID support
    • ci: add initial GitHub workflow
    • ci: add container tests

    v22.1.0

    Compare Source

    Changes:

    • docs: update docs links in README
    • unit: do not export private constants
    • unit: deserialize keeps all semantic data
    • deserialize: Use quote to print possibly-invalid string
    • login1: support getting active session and session details

    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • deps: update dependencies

    deps: update dependencies

    Update module dependencies, along with container base image for integration test. Will tag this as v1.1.4 once approved and merged.

    Closes: #19 Closes: #23 Closes: #24

  • fix(deps): update module github.com/coreos/go-systemd to v22

    fix(deps): update module github.com/coreos/go-systemd to v22

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/coreos/go-systemd | require | major | v0.0.0-20190321100706-95778dfbb74e -> v22.3.2 |


    Release Notes

    coreos/go-systemd

    v22.3.2

    Compare Source

    Changes:

    • dbus: fix deprecated marks and docs
    • journal: close unix socket after successful probe

    v22.3.1

    Compare Source

    Changes:

    • sdjournal: fix input argument type in C.Malloc call
    • gomod: update godbus to v5.0.4

    v22.3.0

    Compare Source

    Changes:

    • dbus: add KillUnitWithTarget
    • dbus: fix typo in GetUnitTypePropertyContext
    • sdjournal: drop conditional static specifier
    • ci: clean up legacy helpers
    • ci: let system settle before running tests

    v22.2.0

    Compare Source

    Changes:

    • go-systemd: fix building on windows
    • dbus: add context-aware methods
    • dbus: add context to open functions
    • dbus: add ListJobs method
    • sdjournal: SeekTail should be followed by Previous, not Next
    • sdjournal: add GetBootID support
    • ci: add initial GitHub workflow
    • ci: add container tests

    v22.1.0

    Compare Source

    Changes:

    • docs: update docs links in README
    • unit: do not export private constants
    • unit: deserialize keeps all semantic data
    • deserialize: Use quote to print possibly-invalid string
    • login1: support getting active session and session details

    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • Setup CI with the integration tests

    Setup CI with the integration tests

    This pull request sets up the CI with the integration tests. This checking phase runs in a container for testing (see: Dockerfile) which is located on GitHub Actions.

    This pull request contains several changes side-effectively.

    • fixes test case
    • applies fmt (i.e. goimports)
    • eliminates lint warnings
  • Correct the value type of the `--persistent-keepalive`

    Correct the value type of the `--persistent-keepalive`

    TL;DR

    s/PersistentKeepalive/int/


    Previous:

          --persistent-keepalive PersistentKeepalive   WireGuard PersistentKeepalive for the SORACOM Arc server, which will override arc.json#persistentKeepalive value (default 60)
    

    Corrected:

          --persistent-keepalive int        WireGuard "PersistentKeepalive" for the SORACOM Arc server, which will override arc.json#persistentKeepalive value (default 60)
    

    This is because of the pflag package trick; that package extracts the back-quoted word from the usage text and guesses/uses that word as the type of value. ref: https://github.com/spf13/pflag/issues/200

    This might come from the original golang's flag package:

    ... can be changed by placing a back-quoted name in the flag's usage string; the first such item in the message is taken to be a parameter name to show in the message and the back quotes are stripped from the message when displayed https://pkg.go.dev/flag#PrintDefaults

    So this patch replaces the back-quotes with double-quotes to avoid the unexpected behavior.

  • chore(deps): update module go to 1.19

    chore(deps): update module go to 1.19

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | go (source) | golang | minor | 1.17 -> 1.19 |


    Release Notes

    golang/go

    v1.19.0

    v1.18.5

    v1.18.4

    v1.18.3

    v1.18.2

    v1.18.1

    v1.18.0


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update goreleaser/goreleaser-action action to v3

    chore(deps): update goreleaser/goreleaser-action action to v3

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | goreleaser/goreleaser-action | action | major | v2 -> v3 |


    Release Notes

    goreleaser/goreleaser-action

    v3

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • chore(deps): update github/codeql-action action to v2

    chore(deps): update github/codeql-action action to v2

    WhiteSource Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github/codeql-action | action | major | v1 -> v2 |


    Release Notes

    github/codeql-action

    v2

    Compare Source


    Configuration

    📅 Schedule: At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • fix(deps): update module github.com/stretchr/testify to v1.8.1

    fix(deps): update module github.com/stretchr/testify to v1.8.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/stretchr/testify | require | patch | v1.8.0 -> v1.8.1 |


    Release Notes

    stretchr/testify

    v1.8.1

    Compare Source


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/spf13/cobra to v1.6.1

    fix(deps): update module github.com/spf13/cobra to v1.6.1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/spf13/cobra | require | minor | v1.5.0 -> v1.6.1 |


    Release Notes

    spf13/cobra

    v1.6.1

    Compare Source

    Bug fixes 🐛
    • Fixes a panic when AddGroup isn't called before AddCommand(my-sub-command) is executed. This can happen within more complex cobra file structures that have many different inits to be executed. Now, the check for groups has been moved to ExecuteC and provides more flexibility when working with grouped commands - @​marckhouzam (and shout out to @​aawsome, @​andig and @​KINGSABRI for a deep investigation into this! 👏🏼)

    v1.6.0

    Compare Source

    Summer 2022 Release

    Some exciting changes make their way to Cobra! Command completions continue to get better and better (including adding --help and --version automatic flags to the completions list). Grouping is now possible in your help output as well! And you can now use the OnFinalize method to cleanup things when all "work" is done. Checkout the full changelog below:


    Features 🌠
    Deprecation 👎🏼
    • ExactValidArgs is deprecated (but not being removed entirely). This is abit nuanced, so checkout #​1643 for further information and the updated user_guide.md on how this may affect you (and how you can take advantage of the correct behavior in the validators): @​umarcor #​1643
    Bug fixes 🐛
    Dependencies 🗳️
    Testing 🤔
    Docs ✏️
    Misc 💭

    Note: Per #​1804, we will be moving away from "seasonal" releases and doing more generic point release targets. Continue to track the milestones and issues in the spf13/cobra GitHub repository for more information!

    Great work everyone! Cobra would never be possible without your contributions! 🐍

    Full Changelog: https://github.com/spf13/cobra/compare/v1.5.0...v1.6.0


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update module github.com/coreos/go-systemd/v22 to v22.5.0

    fix(deps): update module github.com/coreos/go-systemd/v22 to v22.5.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/coreos/go-systemd/v22 | require | minor | v22.3.2 -> v22.5.0 |


    Release Notes

    coreos/go-systemd

    v22.5.0: go-systemd v22.5.0

    Compare Source

    Changes:

    • journal: add StderrIsJournalStream function
    • internal/dlopen: fix test and run in CI

    v22.4.0: go-systemd v22.4.0

    Compare Source

    Changes:

    • dbus: add Connected methods to check connections status
    • dbus: add support for querying unit by PID
    • dbus: implement support for cgroup freezer APIs
    • journal: remove implicit initialization
    • login1: add methods to get session/user properties
    • login1: add context-aware ListSessions and ListUsers methods

    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • fix(deps): update golang.zx2c4.com/wireguard/wgctrl digest to 97bc4ad

    fix(deps): update golang.zx2c4.com/wireguard/wgctrl digest to 97bc4ad

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | golang.zx2c4.com/wireguard/wgctrl | require | digest | c9b1ec1 -> 97bc4ad |


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    Open

    These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

    Ignored or Blocked

    These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

    Detected dependencies

    dockerfile
    devtools/wg_integ_test/Dockerfile
    github-actions
    .github/workflows/check.yml
    • actions/checkout v3
    • golangci/golangci-lint-action v3
    .github/workflows/codeql-analysis.yml
    • actions/checkout v3
    • github/codeql-action v2
    • github/codeql-action v2
    • github/codeql-action v2
    .github/workflows/release.yml
    • actions/checkout v3
    • actions/setup-go v3
    • goreleaser/goreleaser-action v3
    gomod
    go.mod
    • go 1.19
    • github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf@d3cd4ed1dbcf
    • github.com/coreos/go-systemd/v22 v22.3.2
    • github.com/golang/mock v1.6.0
    • github.com/manifoldco/promptui v0.9.0
    • github.com/spf13/cobra v1.5.0
    • github.com/stretchr/testify v1.8.0
    • github.com/vishvananda/netlink v1.1.0
    • golang.zx2c4.com/wireguard v0.0.0-20211104115355-851efb1bb655@851efb1bb655
    • golang.zx2c4.com/wireguard/wgctrl v0.0.0-20211027115401-c9b1ec1aa6d8@c9b1ec1aa6d8

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
Related tags
netcat using netstack userspace library

netkat netcat version using raw sockets to avoid iptables and/or other OS filtering mechanisms. Install make build Usage It requires root privileges:

Dec 9, 2022
A fork of the simple WireGuard VPN server GUI community maintained
A fork of the simple WireGuard VPN server GUI community maintained

Subspace - A simple WireGuard VPN server GUI Subspace - A simple WireGuard VPN server GUI Slack Screenshots Features Contributing Setup 1. Get a serve

Dec 25, 2022
A flexible configuration manager for Wireguard networks
A flexible configuration manager for Wireguard networks

Drago A flexible configuration manager for WireGuard networks Drago is a flexible configuration manager for WireGuard networks which is designed to ma

Jan 7, 2023
Simple Web based configuration generator for WireGuard. Demo:
Simple Web based configuration generator for WireGuard. Demo:

Wg Gen Web Simple Web based configuration generator for WireGuard. Why another one ? All WireGuard UI implementations are trying to manage the service

Jan 1, 2023
The easiest, most secure way to use WireGuard and 2FA.

This repository contains all the open source Tailscale client code and the tailscaled daemon and tailscale CLI tool. The tailscaled daemon runs primarily on Linux; it also works to varying degrees on FreeBSD, OpenBSD, Darwin, and Windows.

Jan 8, 2023
Connect your devices into a single private WireGuard®-based mesh network.

Wiretrustee A WireGuard®-based mesh network that connects your devices into a single private network. Why using Wiretrustee? Connect multiple devices

Dec 31, 2022
A Wireguard VPN Server Manager and API to add and remove clients

Wireguard Manager And API A manager and API to add, remove clients as well as other features such as an auto reapplier which deletes and adds back a c

Dec 22, 2022
Layer2 version of wireguard with Floyd Warshall implement in go.

Etherguard 中文版README A Full Mesh Layer2 VPN based on wireguard-go OSPF can find best route based on it's cost. But sometimes the lentancy are differen

Dec 29, 2022
Magic util that "bridges" Wireguard with OpenVPN without a TUN/TAP interface

wg-ovpn Magic util that "bridges" Wireguard with OpenVPN without a TUN/TAP interface Warning: really ugly and unstable code! Building Obtain latest so

Sep 27, 2022
Mount your podman container into WireGuard networks on spawn

wg-pod A tool to quickly join your podman container/pod into a WireGuard network. Explanation wg-pod wires up the tools ip,route,wg and podman. It cre

Aug 14, 2022
Go Implementation of WireGuard

Go Implementation of WireGuard

Jan 2, 2023
A HTTP proxy server tunnelling through wireguard

wg-http-proxy This project hacks together the excellent https://github.com/elazarl/goproxy and https://git.zx2c4.com/wireguard-go into an HTTP proxy s

Dec 30, 2022
NAT puncher for Wireguard mesh networking.

natpunch-go This is a NAT hole punching tool designed for creating Wireguard mesh networks. It was inspired by Tailscale and informed by this example.

Dec 12, 2022
generate Wireguard keypairs with a given prefix string

wireguard-vanity-address Generate Wireguard keypairs with a given prefix string. The Wireguard VPN uses Curve25519 keypairs, and displays the Base64-e

Nov 9, 2022
udppunch hole for wireguard

udppunch udp punch for wireguard, inspired by natpunch-go usage server side ./punch-server-linux-amd64 -port 19993 client side make sure wireguard is

Nov 24, 2022
gqlgenc is a fully featured go gql client, powered by codegen

gqlgenc Note: ⚠️ This is a WIP, backward-compatibility cannot be guaranteed yet, use at your own risk gqlgenc is a fully featured go gql client, power

Sep 17, 2022
GraphQL API server for galaxy powered blockchain network

ICICB GraphQL API Server GraphQL API server for galaxy powered blockchain network. Releases Please check the release tags to get more details and to d

Jan 5, 2022
Powered by Matterbridge, MatterAMXX is a plugin for AMXX that allows simple bridging between your game servers, Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, and more.
Powered by Matterbridge, MatterAMXX is a plugin for AMXX that allows simple bridging between your game servers, Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, and more.

Powered by Matterbridge, MatterAMXX is a plugin for AMXX that allows simple bridging between your game servers, Mattermost, IRC, XMPP, Gitter, Slack, Discord, Telegram, and more.

Dec 27, 2022
Nuke-Net is a VERY VERY over powered and ridiculous web crawler that is well- very very noisy XD read more here
Nuke-Net is a VERY VERY over powered and ridiculous web crawler that is well- very very noisy XD read more here

Nuke-Net is a VERY VERY over powered and ridiculous web crawler that is well- very very noisy XD read more here

Dec 20, 2021