Except for common -stats
, -egd
options server has the
following ones:
-proto
network protocol to use. Can be udp (default), tcp or all.
-bind
Address (host:port
format) we must bind to.
-conf
Path to JSON file with the configuration.
-proxy
Start trivial HTTP Proxy server on specified host:port.
Configuration file is JSON file with following example structure:
{ "stargrave": { <-- Peer human readable name "iface": "tap10", <-- OPTIONAL TAP interface name "mtu": 1514, <-- OPTIONAL overriden MTU "up": "./stargrave-up.sh", <-- OPTIONAL up-script "down": "./stargrave-down.sh", <-- OPTIONAL down-script "timeout": 60, <-- OPTIONAL overriden timeout "noise": true, <-- OPTIONAL noise enabler (default: false) "cpr": 64, <-- OPTIONAL constant packet rate in KiB/sec "encless": false, <-- OPTIONAL Encryptionless mode "verifier": "$argon2d..." <-- verifier received from client }, [...] }
At least one of either iface
or up
must be specified. If
you specify iface
, then it will be forcefully used to determine
what TAP interface will be used. If it is not specified, then up-script
must output interface’s name to stdout (first output line).
For example up-script can be just echo tap10
, or more advanced
like the following one:
#!/bin/sh $tap=$(ifconfig tap create) ifconfig $tap inet6 fc00::1/96 mtu 1412 up echo $tap
Each minute server rereads and refreshes peers configuration and adds newly appeared identities, deletes an obsolete ones.
You can use convenient utils/newclient.sh
script for new client
creation:
% ./utils/newclient.sh Alice [...] Your client verifier is: $argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg Place the following JSON configuration entry on the server's side: "Alice": { "up": "/path/to/up.sh", "iface": "or TAP interface name", "verifier": "$argon2d$m=4096,t=128,p=1$bwR5VjeCYIQaa8SeaI3rqg$KCNIqfS4DGsBTtVytamAzcISgrlEWvNxan1UfBrFu10" } [...]