|
|
| (21 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.
| |
| |}
| |
| |}
| |
| | |
| | |
| = 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
| |
| {| 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]].
| |
| |}
| |