バーチャル SIM/Subscriber を作成して、デバイスで利用を開始した直後や、デバイスで PING 応答サービス を利用して SORACOM に接続できることを確認した直後は通信できるにもかかわらず、しばらくするとデバイスにアクセスできなくなることがあります。
これは、Arc で利用する WireGuard の「無通信タイマー」が原因になっている可能性があります。
WireGuard の無通信タイマー
WireGuard は一定期間通信が無い場合に接続を切断する機能があります。これを「無通信タイマー」と呼びます。無通信タイマーによって接続が切断されると、SORACOM からデバイスへの通信は行えません。
一方、デバイスから SORACOM に通信するタイミング (例: デバイスで PING 応答サービスを利用したタイミング) では、WireGuard の機能によって自動的に接続が再開され、通信に成功します。また、その後再び一定期間は双方向に通信できる仕組みです。
KeepAlive パケットの送信間隔
上記の仕組みがあるため、デバイスに不定期にアクセスすることを想定しているサービスを利用するケースでは、必要なときにデバイスに接続できない可能性があります。
そこで、そのようなケースで Arc を使用する場合は、KeepAlive パケットを定期的に送信することで、接続が不意に切断されることを防ぎます。たとえば、以下のようなケースで、KeepAlive パケットを定期的に送信することを推奨します。
- systemd watchdog と連携 する場合。
- Arc を利用するデバイスが、ルーターの NAT やファイヤーウォール機能を利用してインターネットと通信する場合。詳しくは、以下のページを参照してください。
- Arc を利用するデバイスに、Napter を利用してアクセスする場合。
- Arc を利用するデバイスで動作する FTP サーバーにアクセスする場合。
具体的には、KeepAlive パケットを定期的に送信する際の送信間隔を、WireGuard の PersistentKeepalive
で設定します。
soratun では、デフォルトで
PersistentKeepalive
が設定されています。そのほかの WireGuard 実装を利用する場合は、WireGuard の設定で
PersistentKeepalive
を設定してください。wg0.conf
の設定例:[Peer] : (中略) PersistentKeepalive = 25
なお、Persistentkeepalive
の設定値 (上記例では 25
) については、NAT and Firewall Traversal Persistence を参照してください。