Next: , Previous: , Up: User  


Server part

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"
    }
[...]

Next: , Previous: , Up: User