Client: Difference between revisions
No edit summary |
No edit summary |
||
Line 21: | Line 21: | ||
= Configuration = | = Configuration = | ||
Configuration is done using [https://www.json.org/ JSON] | Configuration is done using [https://www.json.org/ JSON] commands. These can either be sent via a raw TCP socket (localhost:5113), or written to a configuration file (in a json-array) that is parsed at start-up. This allows both a fixed configuration as well as adjustments during runtime without the need to restart the service. By default, SANE checks for the existence of a configuration file in its installation directory (e.g. <code>/opt/bondix/client/saneclient.json</code>) and at <code>/etc/saneclient.json</code>. If you want SANE to load a configuration from a different location, you can specify it using a command line parameter. | ||
== Quick Start == | == Quick Start == | ||
Line 37: | Line 37: | ||
</nowiki> | </nowiki> | ||
== | == Command Structure == | ||
A JSON command has the following structure: | |||
<code>{"target": "<module>", "action": "<command>", [...additional values...]}</code> | |||
Where <module> specifies the configuration submodule and <command> specifies what should be one. | |||
== System Commands == | |||
{| class="wikitable" | |||
|- | |||
| | |||
<nowiki>{"target": "system", | |||
"action": "shutdown" | |||
} | |||
</nowiki> | |||
|| shuts down the client and terminates. | |||
|- | |||
| | |||
<nowiki>{"target": "system", | |||
"action": "set-log", | |||
"file": "/var/log/saneclient.log", | |||
"fileMode": "append" | |||
} | |||
</nowiki> | |||
|| Enables logging to file or changes output file. | |||
{| class="wikitable" | |||
|+ Parameters | |||
|- | |||
| file || The filename that the log should be written to. Required. | |||
|- | |||
| fileMode|| can be <code>append</code> or <code>overwrite</code>. Required. | |||
|} | |||
|- | |||
| | |||
<nowiki>{"target": "system", | |||
"action": "set-webinterface", | |||
"host": "0.0.0.0", | |||
"port": "80", | |||
"allowConfig": false, | |||
"allowMonitor": true, | |||
"configApiKey": "123456", | |||
"webroot": "/tmp/" | |||
} | |||
</nowiki> | |||
|| Enables the integrated webserver & debug webinterface. | |||
{| class="wikitable" | |||
|+ Parameters | |||
|- | |||
| host || IP that the service should listen on. Required. | |||
|- | |||
| port || TCP Port that the service should listen on. Required. | |||
|- | |||
| allowConfig || En- or disables web configuration. Not required, enabled by default. | |||
|- | |||
| allowMonitor || En- or disables web monitor. Not required, enabled by default. | |||
|- | |||
| configApiKey || The password required to access configuration & monitor. Not required, "123456" by default. | |||
|- | |||
| webroot || Web root directory. Points to the "www" subdirectory in installation directory. Not required, changing not advised. | |||
|} | |||
|} | |||
== Tunnel Commands == | |||
{| class="wikitable" | |||
|- | |||
| | |||
<nowiki>{"target": "tunnel", | |||
"action": "create", | |||
"name": "MyTunnel", | |||
"password: "1234", | |||
"server": "10.0.0.1", | |||
"interfaceName": "bndx0", | |||
"values": {...} | |||
} | |||
</nowiki> | |||
|| Sets up basic tunnel configuration. | |||
{| class="wikitable" | |||
|+ Parameters | |||
|- | |||
| name || Tunnel Name. Required. | |||
|- | |||
| password || Password. Required. | |||
|- | |||
| server || Endpoint target IP. Optional. | |||
|- | |||
| interfaceName|| Desired name of the virtual tunnel network interface. Optional. | |||
|- | |||
| values || A JSON object containing configuration parameters for the tunnel. | |||
|} | |||
|} | |||
= Running = | = Running = |
Revision as of 14:21, 23 June 2021
The Bondix SANE client is the software that you install on your supported router, which establishes a connection to the server using multiple WAN links.
For OpenWRT based routers, please check this page.
Installation
Log into your router via SSH and do the following:
Create installation directory | mkdir -p /opt/bondix
|
Download installation package | curl -o sane.tar.gz <DOWNLOAD-URL>
|
Extract package | tar -xvzf sane.tar.gz
|
You can verify that the correct version has been installed with the command
/opt/bondix/client/saneclient --version
If successful, it should print its version string.
Configuration
Configuration is done using JSON commands. These can either be sent via a raw TCP socket (localhost:5113), or written to a configuration file (in a json-array) that is parsed at start-up. This allows both a fixed configuration as well as adjustments during runtime without the need to restart the service. By default, SANE checks for the existence of a configuration file in its installation directory (e.g. /opt/bondix/client/saneclient.json
) and at /etc/saneclient.json
. If you want SANE to load a configuration from a different location, you can specify it using a command line parameter.
Quick Start
This example provides the minimal necessities to get a tunnel up and running:
[ {"action": "create", "target": "tunnel", "name": "TUNNELNAME", "password": "TUNNELPASSWORD"}, {"action": "add-server", "target": "tunnel", "host": "ENDPOINTSERVER", "port": "443"}, {"action": "create-interfaces", "target": "tunnel", "interfaces": { "eth1": "mobileAggressive", "wwan0": "mobileAggressive", "wwan1": "mobileAggressive" }}, {"target": "tunnel", "action": "set-preset", "preset": "bonding"} ]
Command Structure
A JSON command has the following structure:
{"target": "<module>", "action": "<command>", [...additional values...]}
Where <module> specifies the configuration submodule and <command> specifies what should be one.
System Commands
{"target": "system", "action": "shutdown" } |
shuts down the client and terminates. | ||||||||||||
{"target": "system", "action": "set-log", "file": "/var/log/saneclient.log", "fileMode": "append" } |
Enables logging to file or changes output file.
| ||||||||||||
{"target": "system", "action": "set-webinterface", "host": "0.0.0.0", "port": "80", "allowConfig": false, "allowMonitor": true, "configApiKey": "123456", "webroot": "/tmp/" } |
Enables the integrated webserver & debug webinterface.
|
Tunnel Commands
{"target": "tunnel", "action": "create", "name": "MyTunnel", "password: "1234", "server": "10.0.0.1", "interfaceName": "bndx0", "values": {...} } |
Sets up basic tunnel configuration.
|
Running
The software can be run in the shell using /opt/bondix/client/saneclient
, where it will run in the foreground. However, it is recommended to start the service automatically on startup, which can be different depending on the platform.
Parameters
--daemon |
Runs the software as a daemon. |
--nopid |
Does not attempt to create a pid-file at /var/run/saneclient.pid
|
--listflags |
Lists available feature flags |
--flags <FLAG1> <FLAG2>... |
Enables the specified flag(s). Multiple flags are separated using space. |
</path/to/filename.json> |
JSON configuration file that should be used |
Feature Flags
Feature flags are switches that enable certain features that are otherwise unavailable. These features are usually experimental and should
useBlake | Switches from SHA256 to the "blake" hashing algorithm. Depending on architecture, this can slightly improve performance. |
useBlake3 | Switches to the "blake3" hashing algorithm. Depending on architecture, this can slightly improve performance. |
disableHash | Disables hashing completely, allowing potential MitM, with a vast speed improvement. |
useMMSG | uses useMMSG linux socket API to send & receive multiple UDP packets at once. This improves performance under load, while stable there are some corner cases which can trigger error messages in the log. |
channelRoutes | Makes the client create specific routes for each channel. Experimental, do not use. |
bondingProxy | Enables the TCP Bonding Proxy. |