Soracom

Users

ドキュメント
Home ドキュメント SORACOM Arc soratun を利用する

soratun で WireGuard インターフェースを作成 / 更新する

soratun 設定ファイル (/path/to/arc.json) を作成したら、WireGuard インターフェースを作成します。WireGuard インターフェースが作成されると、SORACOM にアクセス できます。

soratun で WireGuard インターフェースを作成すると、以下で指定したネットワーク宛の通信が WireGuard インターフェース経由に設定されます。すでに同じルートが定義されている場合は上書きされます。

  • soratun 設定ファイルの arcAllowedIPs
  • soratun 設定ファイルの additionalAllowedIPs

詳しくは、AllowedIPs の設定 を参照してください。

soratun 設定ファイルについて

soratun で WireGuard インターフェースを作成するには、soratun 設定ファイルが必要です。soratun 設定ファイルは、以下のいずれかの手順で作成します。 なお、soratun 設定ファイルのパスは、バーチャル SIM/Subscriber を作成したり、ブートストラップしたときに、自由に設定できます。

soratun up コマンドを実行して WireGuard インターフェースを作成する

SORACOM にアクセスするときに以下のコマンドを実行して、WireGuard インターフェースを作成します。soratun 設定ファイルのパス (/path/to/arc.json) については、soratun 設定ファイルについて を参照してください。

$ sudo soratun up --config /path/to/arc.json
soratun を実行したままにしてください

soratun up を実行している間だけ、WireGuard インターフェースが作成され、SORACOM にアクセスできます。soratun を終了すると、WireGuard インターフェースが削除され、SORACOM にアクセスできなくなります。

WireGuard インターフェースを作成するコマンドは設定方法によって異なります
ローカルに認証情報を保存することなく SORACOM Arc を利用する

以下の 2 つのコマンドを組み合わせると、ローカルに認証情報を保存することなく SORACOM Arc を利用できます。

$ soratun bootstrap sim --dump-config | sudo soratun up --read-stdin

さらに、--read-stdin フラグと合わせて --additional-allowed-ips--mtu--persistent-keepalive を指定できます。各設定については soratun コマンドリファレンス を参照してください。

WireGuard インターフェースを削除する

soratun のプロセスへ kill コマンドで SIGTERM を送信します。soratun のプロセスが終了すると、WireGuard インターフェースが削除され、SORACOM にアクセスできなくなります。

WireGuard インターフェースを更新する

バーチャル SIM/Subscriber のセッションを再確立したときや、バーチャル SIM/Subscriber の認証情報を更新したときなど、soratun 設定ファイルを更新したときは、一度、WireGuard インターフェースを削除してから、再度作成してください。

  1. WireGuard インターフェースを削除します
  2. WireGuard インターフェースを作成します

systemd を利用してデバイス起動時に WireGuard インターフェースを作成する

soratun は単体のプログラムとして実行できますが、systemd と併用してデーモンとして動作させることができます。

  1. soratun をインストール したときにダウンロードしたファイル (例: soratun_x.x.x_linux_armv7.tar.gz) に含まれる conf/soratun.service.sample を参考に、必要な設定を行います。

    特に、ExecStart に記載する soratun のパス (/usr/local/bin/soratun) は、soratun をコピーしたパスを入力してください。また、soratun 設定ファイルのパス (/etc/arc.json) については、soratun 設定ファイルについて を参照してください。

        :
    
    [Service]
    Type=simple
    # ExecStartPre=/usr/local/bin/soratun bootstrap cellular --config /etc/arc.json
    ExecStart=/usr/local/bin/soratun up --config /etc/arc.json
    Restart=always
    StandardOutput=journal
    StandardError=journal
    SyslogIdentifier=soratun
    SyslogFacility=local7
    WatchdogSec=120
    
        :
    
  2. 設定したファイルを systemd の設定ディレクトリへコピーします。

    $ sudo cp conf/soratun.service.sample /etc/systemd/system/soratun.service
    
  3. soratun デーモンを有効化して、起動します。

    $ sudo systemctl enable soratun
    $ sudo systemctl start soratun
    
systemd に関連する通常のコマンドが利用できます
  • プロセスの稼働状況を確認する: sudo systemctl status soratun
  • ログを確認する: journalctl -u soratun
  • soratun デーモンを無効化する: sudo systemctl disable soratun
  • 停止する: sudo systemctl stop soratun

systemd watchdog との連携

soratun は systemd の watchdog をサポートします。以下のタイマーに基づいておよそ 110 秒ごとに systemd へ稼働状況を報告します。

Protocol & Cryptography - WireGuard:

After receiving a packet, if the receiver was the original initiator of the handshake and if the current session key is REKEY_AFTER_TIME - KEEPALIVE_TIMEOUT - REKEY_TIMEOUT ms old, we initiate a new handshake.

soratun が何らかの原因で停止したり、SORACOM Arc のセッションが切断された場合、一定時間経過後 (上記 systemd の設定ファイルの場合は、最大 120 + 110 秒後) に systemd が soratun を再起動します。

  • セッションが切断されているかどうかは、WireGuard の最終ハンドシェイク時刻を基準に判定されます。ハンドシェイクの周期は、WireGuard インターフェースを利用した通信の頻度と、KeepAlive パケットの送信間隔によって決まります。詳しくは、しばらくするとデバイスにアクセスできなくなるときは を参照してください。
  • systemd の設定ファイルの WatchdogSec を 120 秒より短く設定することもできます。ただし、時間が短いと、問題が無い場合にもセッションが切断されたと判定されて再起動される可能性があります。利用環境にあわせて判断してください。
  • watchdog による自動再起動を停止する場合は、WatchdogSec= の行を削除してください。

WireGuard インターフェースを削除する

systemd を利用してデバイス起動時に WireGuard インターフェースを作成した場合は、以下のコマンドを実行して soratun デーモンを停止します。soratun デーモンが停止すると、WireGuard インターフェースが削除され、SORACOM にアクセスできなくなります。

$ sudo systemctl stop soratun

なお、soratun デーモンを無効化して、再起動したときに WireGuard インターフェースが作成されないようにするには、以下のコマンドを実行します。

$ sudo systemctl disable soratun

WireGuard インターフェースを更新する

バーチャル SIM/Subscriber のセッションを再確立したときや、バーチャル SIM/Subscriber の認証情報を更新したときなど、soratun 設定ファイルを更新したときは、一度、WireGuard インターフェースを再起動してください。具体的には、以下のコマンドを実行します。

$ sudo systemctl restart soratun