Network ManagerのWireGuardでSORACOM Arcへ

この記事では、reTerminal(ラズパイ互換)をWireGuardでSORACOM Arcに繋ぎました。
Network Manager管理下のほうが、いろいろ操作しやすそうで、また、Network ManagerにWireGuard機能があるみたいなので、Network ManagerのWireGuardでSORACOM Arcに繋がるか確認しましょう。

Network Managerをインストール

過去記事のとおり、dhcpcd.serviceを止めてnetwork-managerをインストールすればOK。

ただし、reTerminalの場合はちょっと問題が。

Network ManagerにWireGuard機能(WireGuard VPN tunnels)が追加されたのが1.16ですが、現時点、reTerminalにプレインストールされているRaspberry Pi OSはbusterベースでsudo apt install network-managerでインストールされるNetwork Managerが1.14.6と古いです。

pi@raspberrypi:~ $ nmcli --version
nmcli tool, version 1.14.6
pi@raspberrypi:~ $

そこで、reTerminalに最新のRaspberry Pi OS(これはbullseyeベース)をインストールして、reTerminal用のドライバを適用した後、sudo apt install network-managerでNetwork Managerをインストールしました。これだと1.30.0になります。

pi@raspberrypi:~ $ nmcli --version
nmcli tool, version 1.30.0
pi@raspberrypi:~ $

現時点、reTerminalにbullseyeベース+ドライバだと、LCDの向きが正しく設定されない不具合があります。

SORACOM Arc(WireGuard)の接続を追加

WireGuard向けの設定ファイルを適当なディレクトリに置いて、インポートします。ファイル名の拡張子は.confにしないとエラーになりました。また、ファイル名がそのままがそのまま接続名/デバイス名になるので、ちゃんとした名前にしておきましょう。(ここではsoracom.confとしました。)

soracom.conf:
f:id:matsujirushix:20211126171034p:plain

pi@raspberrypi:~ $ sudo nmcli connection import type wireguard file soracom.conf
Connection 'soracom' (24dc6dcb-ac5b-4811-a372-88f12eb900b3) successfully added.
pi@raspberrypi:~ $

SORACOMとの通信確認

ルーティングテーブルに100.127.0.0/16が追加されていて、ちゃんとpong.soracom.iopingが通りました。

pi@raspberrypi:~ $ nmcli connection
NAME                UUID                                  TYPE       DEVICE
Wired connection 1  5724be1c-797d-33a4-b191-add1cbcebbbf  ethernet   eth0
soracom             24dc6dcb-ac5b-4811-a372-88f12eb900b3  wireguard  soracom
pi@raspberrypi:~ $ ip r
default via 192.168.1.1 dev eth0 proto dhcp metric 100
100.127.0.0/16 dev soracom proto static scope link metric 50
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.105 metric 100
pi@raspberrypi:~ $ ping pong.soracom.io
PING pong.soracom.io (100.127.100.127) 56(84) bytes of data.
64 bytes from 100.127.100.127 (100.127.100.127): icmp_seq=1 ttl=64 time=18.3 ms
64 bytes from 100.127.100.127 (100.127.100.127): icmp_seq=2 ttl=64 time=18.2 ms

おまけ

nmcli connection importした結果、接続情報は/etc/NetworkManager/system-connections/xxx.nmconnectionファイルに保存される。ファイルパーミッションは600。
PrivateKeyもここに保存される。