The VPN API allows for encrypted Wireguard VPNs.
The VPN API allows for encrypted Wireguard VPNs to be established and shared amongst other Impervious nodes. Currently, this is the most involved API as it requires some initial Wireguard setup. Potential applications of this include encrypted client to server communication, Internet Access, server to server communications, and selling anonymous VPNs. With this API, any Impervious node can become a VPN provider and sell access to the VPN for users to connect to.
This allows point to multiple secure communications on a common subnet, currently it only supports a subnet size of /24. Do not attempt any other subnets as the code only counts clients from .2 to .254. Future updates will include more flexibility.
Of your subnet, x.x.x.1 is reserved for your node.
Make sure your node has a publicly accessible IP address, or at a minimum a routable subnet one's client can reach.
In the Impervious node's
config.ymlfile, set the price in Satoshi's per hour. Eg. 100 sats per hour. Note: In future releases, we'll add the ability to change the time (i.e. 100 sats per minute or day or minute).
A Client node with an active connection to the VPN will receive a notification every ten minutes warning them of time left via the websockets API. If they fail to pay you, the internal timer will expire and remove them from the VPN.
Impervious node must run on Linux.
apt install wireguard
ip link add dev wg0 type wireguard
ip address add dev wg0 192.168.44.1/24
ip link set up dev wg0
wg genkey | tee privatekey | wg pubkey > publickey
A good starting point for the server:
PrivateKey = asdfasdfasdfasdfasdfasdfasdfasdfadfasdfasdf=
Address = 192.168.44.1/24
ListenPort = 51820
To activate the config, or to clean out old clients use:
Allows for an Encrypted Wireguard VPN between Impervious nodes
VPN service allows for an Encrypted Wireguard VPN between Impervious nodes.
Represents a request to Accept (Pay For) a VPN Quote
Represents a response back from an accepted VPN Quote
Represents a request to extend/refresh an expiring VPN Connection (i.e. purchase more time)
Represents a reponse back from a refreshed VPN connection
Represents a request to receive a VPN quote from a far end node
Represents a response back from a VPN Quote Reqeust