Command Reference

To show available commands, run soratun help:

soratun help
soratun -- SORACOM Arc Client

Usage:
  soratun [command]

Available Commands:
  bootstrap   Create virtual SIM and configure soratun
  config      Create initial soratun configuration file without bootstrapping
  help        Help about any command
  status      Display SORACOM Arc interface status
  up          Setup SORACOM Arc interface
  version     Show version
  wg-config   Dump soratun configuration file as WireGuard format

Flags:
      --config string   Specify path to SORACOM Arc client configuration file (default "arc.json")
  -h, --help            help for soratun
Bash

Soratun Commands

For all commands, use the --config flag to specify the location of the Soratun configuration file. If the file does not exist, Soratun will perform the initial bootstrapping process to create a Virtual SIM, and store the resulting Arc connection details in the specified file. If the file already exists, Arc will update the Arc connection details.

If the flag is not specified, Soratun will use a file arc.json in the current working directory.


Bootstrap

Command for performing bootstrapping in order to create a Virtual SIM, or update a Soratun configuration file for an existing Virtual SIM.

For more information on the differences between each bootstrap method, refer to the Soratun Overview documentation.

When bootstrapping, a Virtual SIM will be created which will incur an initial fee. In addition, the Virtual SIM will incur a monthly service fee until the Virtual SIM is terminated. Refer to the Pricing & Fee Schedule for more information.

To bootstrap using AuthKey authentication, run:

soratun bootstrap authkey --config /path/to/arc.json
Bash

To bootstrap using Cellular authentication, run:

soratun bootstrap cellular --config /path/to/arc.json
Bash

To bootstrap using SIM authentication, run:

soratun bootstrap sim --config /path/to/arc.json
Bash

With the exception of the --krypton-cli-path flag, all flags will be passed as parameters to the krypton-cli command.


Config

Command for outputting a sample Soratun configuration file template. When creating a Virtual SIM from the User Console or using the Soracom API/CLI instead of using Soratun bootstrapping, you can use this command to generate a Soratun configuration file, which you can then modify to enter the WireGuard configuration details provided by Arc in the User Console or API/CLI. You can then pass the Soratun configuration file into Soratun using the --config flag to activate the WireGuard connection and connect to Soracom.

The sample configuration will be sent to stdout:

soratun config
{
  "privateKey": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
  "publicKey": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
  "simId": "890000xxxxxxxxxxxxx",
  "logLevel": 2,
  "enableMetrics": true,
  "interface": "soratun0",
  "arcSessionStatus": {
    "arcServerPeerPublicKey": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",
    "arcServerEndpoint": "127.0.0.1:11010",
    "arcAllowedIPs": [
      "100.127.0.0/16"
    ],
    "arcClientPeerIpAddress": "127.0.0.1"
  }
}
Bash

You can redirect the output to a file in order to create a file from the sample configuration:

soratun config > /path/to/arc.json
Bash

For more details on each of the configuration parameters, refer to the Configuration File section below.


Status

This command displays the status of the WireGuard network interface created by soratun. Requires root user privileges.

sudo soratun status
Password:
interface: utun7 (userspace)
  public key: PXlKD3r5vuPZk4kNatfL6ZPceCjfntWWIqjU9UksoHg=
  private key: (hidden)
  listening port: 63066

peer: cx/QH4up20+tgvjr5Ht9kFZUA5BVY1N2m7hY6vP7vVA=
  endpoint: 123.45.67.89:11010
  allowed ips: 100.127.0.0/16
  latest handshake: 2021-06-17 13:30:20.186527 +0900 JST
  transfer: 92 B received, 180 B sent
Bash

If soratun is not running, the following message will be displayed.

sudo soratun status
no SORACOM Arc device found
Bash

Up

This command activates a WireGuard network interface using the Soratun configuration file and configures the system's network routing table. Requires root user privileges.

sudo soratun up --config /path/to/arc.json

DEBUG: (soratun0) 2021/06/17 14:37:03 device started
...
DEBUG: (soratun0) 2021/06/17 14:37:03 assign IP address: 123.45.67.89
DEBUG: (soratun0) 2021/06/17 14:37:03 set link up: soratun0
DEBUG: (soratun0) 2021/06/17 14:37:03 add route: 100.127.0.0/16
DEBUG: (soratun0) 2021/06/17 14:37:03 Interface up requested
DEBUG: (soratun0) 2021/06/17 14:37:03 peer(cx/Q…7vVA) - Received handshake response
Bash

When Soratun creates a WireGuard network interface, it will create a socket file at the path /var/run/wireguard/<INTERFACE-NAME>.sock. Normally this file is deleted when Soratun exists. However, if this file is not deleted correctly, this may prevent Soratun from being able to create the network interface again. If soratun up fails, check the corresponding directory and delete any socket files that correspond to interface names that are not running.

To stop Soratun:


Wg-config

This commands converts a soratun configuration file, specified by the --config flag, to a WireGuard configuration format, and outputs it to standard output. This is useful when you are using soratun for bootstrapping a device only, and want to connect to Soracom Arc with a different WireGuard implementation.

soratun wg-config --config /path/to/arc.json
[Interface]
Address = x.x.x.x/32
PrivateKey = ...

[Peer]
PublicKey = ...
AllowedIPs = 100.127.0.0/16
Endpoint = x.x.x.x:11010
PersistentKeepalive = 60
Bash

You can redirect the output directly to a WireGuard configuration file, such as:

soratun wg-config --config /path/to/arc.json > /path/to/wg0.conf
Bash

Configuration File

When using Soratun to bootstrap a device for the first time, Soratun will save the WireGuard configuration details in a Soratun configuration file. If the --config flag is used, the configuration file will be saved at the file path specified. Otherwise, the the configuration file will be saved in a file arc.json in the current working directory.

The Soratun configuration file stores connection information in JSON format that Soratun will use to activate a WireGuard connection and connect to Soracom.

If needed, you can modify the Soratun configuration file based on your requirements.

Note that modifying certain properties such as privateKey or arcSessionStatus can result in Soratun being unable to establish a WireGuard connection. If you need to update the connection details, use the soratun bootstrap command that corresponds to your bootstrapping method to update the connection details whenever possible.

Property Type Required Description
enableMetrics Boolean Yes If enabled, metrics will be output to stdout approximately every 60 seconds when the log level is 2 verbose.
interface String Yes The name of the interface to be created by soratun. On macOS, you must specify a string starting with utun due to OS limitations.
logLevel Integer Yes Log level. Valid options: 0 no output, 1 output errors only, 2 verbose output (errors and debug information).
privateKey String Yes The WireGuard client private key. In most cases, you should not edit this property.
publicKey String Yes The WireGuard client public key. In most cases, you should not edit this property.
additionalAllowedIPs String[] No An array of CIDR blocks to add to WireGuard's AllowedIPs configuration. Traffic to these destinations will also be routed through Soracom.
arcSessionStatus Object (see Arc Session Status below) No Soracom Arc connection information. In most cases, you should not edit this property.
mtu number No MTU for the interface.
persistentKeepalive number No WireGuard PersistentKeepalive for the SORACOM Arc server.
postDown array[] No Array of shell scripts to run after the interface is removed successfully. A script should be in the form ["executable", "param1", "param2"]. To specify the WireGuard interface name as a parameter, use the placeholder %i. The commands are executed in sequential order. For example: "postDown": [ [ "/bin/echo", "postDown", "%i" ], [ "echo", "%i" ] ]
postUp array[] No Array of shell scripts to run after the interface is activated successfully. A script should be in the form ["executable", "param1", "param2"]. To specify the WireGuard interface name as a parameter, use the placeholder %i. The commands are executed in sequential order. For example: "postUp": [ [ "/bin/echo", "postUp", "%i" ], [ "echo", "%i" ] ]
profile Object (see Profile below) No Soracom API connection information. Included only when using AuthKey bootstrapping.
simId String No The SIM ID of the Virtual SIM.

When logLevel is set to 1 (errors only) or 2 (verbose output) and enableMetrics is set to true, Soratun will output the following metrics details approximately every 60 seconds:

soratun_sent_bytes_total{simId="<SIM_ID>",interface="<INTERFACE_NAME>",endpoint="<ARC_ENDPOINT_ADDRESS>"} <NUM_BYTES_SENT>
soratun_received_bytes_total{simId="<SIM_ID>",interface="<INTERFACE_NAME>",endpoint="<ARC_ENDPOINT_ADDRESS>"} <NUM_BYTES_RECEIVED>
soratun_latest_handshake_epoch{simId="<SIM_ID>",interface="<INTERFACE_NAME>",endpoint="<ARC_ENDPOINT_ADDRESS>"} <LAST_HANDSHAKE_TIMESTAMP>
Plain text

Arc Session Status

The arcSessionStatus object contains Arc connection information that will be used by Soratun to establish a WireGuard connection with Soracom.

In most cases, the parameters will be updated automatically when bootstrapping and creating a Virtual SIM for the first time, or when bootstrapping subsequent times to update the connection details.

Property Type Required Description
arcAllowedIPs String[] Yes An array of CIDR blocks provided by Soracom Arc to add to WireGuard's AllowedIPs configuration.
arcClientPeerIpAddress String Yes IP address of the WireGuard client.
arcServerEndpoint String Yes The endpoint of the Soracom Arc server (format: <IP_ADDRESS_OR_HOSTNAME>:<PORT>).
arcServerPeerPublicKey String Yes The WireGuard server public key.

Profile

The profile object contains the AuthKey information that will be used by Soratun to access the Soracom API when bootstrapping using the AuthKey authentication method.

Property Type Required Description
authKeyId string Yes The Soracom API AuthKey ID to use.
authKey string Yes The Soracom API AuthKey secret to use.
endpoint string Yes The Soracom API endpoint to use (https://g.api.soracom.io or https://api.soracom.io).