Client: Difference between revisions

From Bondix Wiki
No edit summary
No edit summary
 
(19 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The Bondix SANE client is the software that you install on your [[Client/Supported Devices|supported]] router, which establishes a connection to the [[Server|server]] using multiple WAN links.


For '''OpenWRT''' based routers, please check [[Client/OpenWRT|this page]].
__NOINDEX__
 
__NONEWSECTIONLINK__
= Installation =
Log into your router via SSH and do the following:
{| class="wikitable"
|-
| Create installation directory || <code>mkdir -p /opt/bondix
cd /opt/bondix</code>
|-
| Download installation package || <code>curl -o sane.tar.gz <DOWNLOAD-URL></code>
|-
| Extract package || <code>tar -xvzf sane.tar.gz</code>
|}
 
You can verify that the correct version has been installed with the command
<code>/opt/bondix/client/saneclient --version</code>
 
If successful, it should print its version string.
 
= Configuration =
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 ==
This example provides the minimal necessities to get a tunnel up and running:
<nowiki>[
  {"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"}
]
</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.
|}
 
|-
|
<nowiki>{"target": "tunnel",
  "action": "add-server",
  "host": "10.0.0.1",
  "port": "443"
}
</nowiki>
|| Adds a endpoint server. If multiple servers are added, the client will cycle through
them until a connection has been established successfully.
{| class="wikitable"
|+ Parameters
|-
| host|| IP or host of the destination server. Required.
|-
| port || Port of the destination server. Optional (Default: "443").
|}
 
|-
|
<nowiki>{"target": "tunnel",
  "action": "create-interfaces",
  "interfaces": {
    "wwan0": "mobile",
    "eth1": "ethernet"
  }
}
</nowiki>
|| Creates channels for the specified interfaces using [[Client/Presets|presets]]. "interfaces" must be an object, where each key is an network interface name, with the corresponding value being a [[Client/Presets|preset]] name.
 
|}
 
 
= Running =
The software can be run in the shell using <code>/opt/bondix/client/saneclient</code>, 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 ==
{| class="wikitable"
|-
| <code>--daemon</code> || Runs the software as a daemon.
|-
| <code>--nopid</code> || Does not attempt to create a pid-file at <code>/var/run/saneclient.pid</code>
|-
| <code>--listflags</code> || Lists available feature flags
|-
| <code>--flags <FLAG1> <FLAG2>... </code> || Enables the specified flag(s). Multiple flags are separated using space.
|-
| <code></path/to/filename.json></code> || 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 be used with caution.
{| class="wikitable"
|-
| 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]].
|}

Latest revision as of 09:54, 13 October 2026