Client Configuration: Difference between revisions
No edit summary |
(Update update-interfaces) |
||
Line 381: | Line 381: | ||
|+ Parameters | |+ Parameters | ||
|- | |- | ||
| interfaces || JSON Object with interfaces. | | interfaces || JSON Object with interfaces. Property names specify the linux WAN interface to be used (e.g. "eth1") | ||
|} | |} | ||
{| class="wikitable" | |||
|+Object Parameters | |||
|name | |||
|string; Interface name that is shown in logs and in the endpoint webinterface. | |||
|- | |||
|preset | |||
|string; Interface preset to be used (e.g. "mobileAggressive", "ethernet",...} | |||
|- | |||
|upstream | |||
|object; {"min": 0, "max": 100}. "min" and "max" specfiy lower and upper bandwidth limits in MBit/sec for outgoing traffic (towards endpoint). A value of "0" means no limit. When a minimum value is specified, make sure that the value is below the maximum throughput of the interface to avoid congestion. | |||
|- | |||
|downstream | |||
|object; {"min": 0, "max": 100}. "min" and "max" specfiy lower and upper bandwidth limits in MBit/sec for incoming traffic (from endpoint). A value of "0" means no limit. When a minimum value is specified, make sure that the value is below the maximum throughput of the interface to avoid congestion. | |||
|- | |||
|standby | |||
|boolean; When enabled, the interface will go into standby if other sufficient interfaces are available, as specified by the "minimum connected channel" value configured. When in standby, Bondix will make no traffic through this interface until reactivated (e.g. due to a different interface going down). You can change the minimum number of connected channel by adding this command in saneclient.json: | |||
<nowiki>{"target": "tunnel", "action": "set", "values": { "minConnectedChannel": 2 }}</nowiki> | |||
|- | |||
|maxLatency | |||
|number; overrides the maximum latency setting in milliseconds. Any packet exceeding this latency limit will be considered as lost, and the interface will not be used until latency is below the specified maximum. We do not encourage exposing this setting as it can have a negative impact on performance/throughput. (Default value is 1000 ms; | |||
|- | |||
|enabled | |||
|boolean; If disabled, the interface will not be used, but still shown in the webinterface. | |||
|} | |||
Note: Updating the preset will override upstream, downstream, maxLatency & standby settings to default values. | |||
|| | || | ||
{ | |||
"target": "tunnel", | |||
"action": "update-interfaces", | |||
"interfaces": { | |||
"eth1": { | |||
"name":"WAN1", | |||
"preset": "mobileAggressive", | |||
} | "upstream": {"min": 0, "max": 50}, | ||
"downstream": {"min": 0, "max": 100}, | |||
"standby": false, | |||
"maxLatency": 1000, | |||
"enabled": true | |||
}, | |||
"eth2": { | |||
"name":"WAN2", | |||
"preset": "mobileAggressive", | |||
"upstream": {"min": 0, "max": 50}, | |||
"downstream": {"min": 50, "max": 100} | |||
} | |||
} | |||
|- | |- | ||
Revision as of 13:51, 21 March 2024
Commands
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 done.
Tunnel Commands
createSets up basic tunnel configuration.
|
{"target": "tunnel", "action": "create", "name": "MyTunnel", "password: "1234", "server": "10.0.0.1", "interfaceName": "bndx0", "values": {...} } | ||||||||||||||||
add-serverAdds a endpoint server. If multiple servers are added, the client will cycle through them until a connection has been established successfully.
|
{"target": "tunnel", "action": "add-server", "host": "10.0.0.1", "port": "443" } | ||||||||||||||||
add-interfaceAdds a single interface to the tunnel.
|
{"target": "tunnel", "action": "add-interface", "interface": "wlan0", "name": "WiFi", "preset": "mobile", "values": {"enabled": false} } | ||||||||||||||||
create-interfacesCreates channels for the specified interfaces using presets.
|
{"target": "tunnel", "action": "create-interfaces", "interfaces": { "wwan0": "mobile", "eth1": "ethernet" } } | ||||||||||||||||
deleteResets the complete tunnel configuration, including interfaces. |
{"target": "tunnel", "action": "delete" } | ||||||||||||||||
enable-layer2Adds a single interface to the tunnel.
|
{ "target": "tunnel", "action": "enable-layer2", "bridge": "br-lan", "tapname": "bondixTap0" } | ||||||||||||||||
enable-proxyEnables Bonding Proxy.
|
{ "target": "tunnel", "action": "enable-proxy", "host": "0.0.0.0", "port": "18080" } | ||||||||||||||||
disallow-swapExplicitly tells the linux kernel to prevent memory swapping (mlockall). |
{ "target": "tunnel", "action": "disallow-swap" } | ||||||||||||||||
quicksetupSets up client using a base64 encoded JSON string containing connection info. JSON must be in this format: {"t":"TUNNELNAME", "p":"TUNNELPASSWORD", "s": "SERVER"}
|
{"target": "tunnel", "action": "quicksetup", "data": "..." } } | ||||||||||||||||
setSets tunnel properties. See Tunnel Settings.
|
{"target": "tunnel", "action": "set", "values": {"maxConcurrentChannel": 2} } | ||||||||||||||||
set-metaAllows to add custom information that is shown on the server's tunnel status page. It has no further effect.
|
{ "target": "tunnel", "action": "set-meta", "data": {"location": "Test Lab", "customer": "Evil Corp"} } | ||||||||||||||||
set-remoteSets tunnel properties on the remote end. See Tunnel Settings.
|
{"target": "tunnel", "action": "set-remote", "values": {"maxConcurrentChannel": 2} } | ||||||||||||||||
set-interfaceSets tunnel interface properties. See Tunnel Settings.
|
{"target": "tunnel", "action": "set-interface", "index": 0, "values": {"enabled": false} } | ||||||||||||||||
set-remote-interfaceSets interface properties on the remote end. See Tunnel Settings.
|
{"target": "tunnel", "action": "set-remote-interface", "index": 0, "values": {"enabled": false} } | ||||||||||||||||
set-presetApplies a tunnel preset. See Presets for more info.
|
{"target": "tunnel", "action": "set-preset", "preset": "Bonding" } | ||||||||||||||||
set-ifnameRenames the virtual network tunnel interface.
|
{"target": "tunnel", "action": "set-ifname", "name": "bondix0" } } | ||||||||||||||||
set-cert-checkEnables or disables verification of the server's SSL certificate. TODO: Which root cert dir is used when no custom root certificate is provided?
|
{"target": "tunnel", "action": "set-cert-check", "enabled": true } } | ||||||||||||||||
set-root-caSpecifies a root certificate that can be used to verify the authenticity of the remote server. When used, SSL server verification will be automatically enabled.
|
{"target": "tunnel", "action": "set-root-ca", "file": "/etc/ssl/foobar.pub" } } | ||||||||||||||||
set-certificateLoads a tunnel client certificate. See Certificates for further information.
|
{"target": "tunnel", "action": "set-certificate", "cert": "/etc/ssl/foobar.pem" "key": "/etc/ssl/foobar.key" } | ||||||||||||||||
embed-certsA helper functions to embed tunnel & root certificate inside the configuration instead of an external file. Performs the same actions as set-certificate and set-root-ca combined.
|
{"target": "tunnel", "action": "embed-certs", "cert": "...", "key": "...", "root": "..." } | ||||||||||||||||
set-root-caSpecifies a root certificate that can be used to verify the authenticity of the remote server. When used, SSL server verification will be automatically enabled.
|
{"target": "tunnel", "action": "set-root-ca", "file": "/etc/ssl/foobar.pub" } } | ||||||||||||||||
update-interfacesUpdates interface information. If a provided interface already exists, it will be updated accordingly. If a provided interface is new, it will be created. Interfaces that have been previously in use but are not provided here will be removed.
Note: Updating the preset will override upstream, downstream, maxLatency & standby settings to default values. |
{ "target": "tunnel", "action": "update-interfaces", "interfaces": { "eth1": { "name":"WAN1", "preset": "mobileAggressive", "upstream": {"min": 0, "max": 50}, "downstream": {"min": 0, "max": 100}, "standby": false, "maxLatency": 1000, "enabled": true }, "eth2": { "name":"WAN2", "preset": "mobileAggressive", "upstream": {"min": 0, "max": 50}, "downstream": {"min": 50, "max": 100} } } | ||||||||||||||||
update-packetSizeUpdates the maximum size that UDP packets may carry. Changing this value will cause a tunnel restart.
|
{ "target": "tunnel", "action": "update-packetSize", "value": 1400 } |
Interactive Commands
Interactive commands can be used to interact with the tunnel and retrieve various information via the CLI socket. TODO: Add JSON responses
getReturns all tunnel settings. |
{"target": "tunnel", "action": "get" } | ||
get-interfaceReturns settings for a specific interface.
|
{"target": "tunnel", "action": "get-interface", "index": 0 } | ||
statusReturns current tunnel information. |
{"target": "tunnel", "action": "status" } | ||
resetPerforms a disconnect & reconnect. |
{"target": "tunnel", "action": "reset" } |
System Commands
shutdownShuts down the client and terminates. |
{ "target": "system", "action": "shutdown" } | ||||||||||||
set-logEnables logging to file or changes output file.
|
{ "target": "system", "action": "set-log", "file": "/var/log/saneclient.log", "fileMode": "append" } | ||||||||||||
set-script-pathChanges the directory that points towards the client scripts. (/opt/bondix/client/scripts by default)
|
{ "target": "system", "action": "set-script-path", "path": "/etc/bondix/scripts" } | ||||||||||||
set-webinterfaceEnables the integrated webserver & debug webinterface.
|
{ "target": "system", "action": "set-webinterface", "host": "0.0.0.0", "port": "80", "allowConfig": false, "allowMonitor": true, "configApiKey": "123456", "webroot": "/tmp/" } |