Armadilloフォーラム

WireGuardの常駐化

lmj_iot

2024年5月17日 16時48分

お世話になります。

Armadillo-IoT G4のBase OSにWireGuardを常駐化する方法についてご教示ください。

以下コマンドで起動は確認しました。再起動後に常駐させるために永続化が必要なファイルについて教えてください。
またシステム起動時にwireguardも起動するにはどうすればよいでしょうか。/etc/local.dに起動スクリプトを設定すればよいでしょうか。

(1) インストール
armadillo:~# apk add -U wireguard-tools

(2) /etc/wireguard/wg0.conf 作成

(3) 起動
armadillo:~# wg-quick up wg0

wg0.confファイルは persist_fileで永続化済みです。
# persist_file /etc/wireguard/wg0.conf

どうぞよろしくお願いいたします。

コメント

at_dominique.m…

2024年5月17日 17時57分

lmj_iot さん

お世話になっています、
マルティネです。

> Armadillo-IoT G4のBase OSにWireGuardを常駐化する方法についてご教示ください。
>
> 以下コマンドで起動は確認しました。再起動後に常駐させるために永続化が必要なファイルについて教えてください。

NetworkManager が wireguard のインタフェースを操作できますので、NetworkManager を使ってください。

設定にいくつかの方法があります:
1/ wg-quick の設定ファイルからの読み込み

# wg0.conf の内容確認。
 
armadillo~# cat wg0.conf
[Interface]
Address = fd5d:7506:724c::2
PrivateKey = iHp1YtYYcUa2D使えないように省略3AlaDn4Mt2g=
ListenPort = 59131
 
[Peer]
PublicKey = yGHSCG2jAoPY2xcSOLoD2xRvjCgOWcXcO9tZPq9vuXw=
AllowedIPs = fd5d:7506:724c::1/128
Endpoint = x.y.z.t:59183
 
# 設定の読み込み
armadillo:~# nmcli con import type wireguard file wg0.conf
 
# 確認
armadillo:~# ping -c 1 fd5d:7506:724c::1
PING fd5d:7506:724c::1 (fd5d:7506:724c::1): 56 data bytes
64 bytes from fd5d:7506:724c::1: seq=0 ttl=64 time=1.260 ms
 
--- fd5d:7506:724c::1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 1.260/1.260/1.260 ms
 
# 永続化
armadillo:~# persist_file /etc/NetworkManager/system-connections/wg0.nmconnection

2/ TUI で手動追加

armadillo:~# nmtui-edit 
 -> Add
 -> type に「WireGuard」選択
 -> キー, peer や IP の入力
 -> OK 入力
 -> Quit 入力
# 設定永続化
armadillo:~# persist_file /etc/NetworkManager/system-connections/WireGuard\ connection\ 1.nmconnection 

3/ 上記の方法で生成した nmconnection ファイルのコピーなど

ちなみに、wg コマンドですが:
> armadillo:~# apk add -U wireguard-tools

NetworkManager に接続を追加して問題なくインターフェースが生成されて使用できると思いますが、wg コマンドが追加されませんのでデバグ用にインストールする必要があるかもしれません。
その場合は、apk add wireguard-tools でメモリ上にインストールしても問題ありませんが、長く必要場合は
1/ デバグだけでしたら「persist_file -a add wireguard-tools」でコマンドを eMMC にインストールできますが、ABOS の更新の際に消えますので自分で rootfs を生成しなければ頼れません。
2/ 手間かかりますが、通常に使う場合はコンテナでの管理も考慮していただければと思います:

# 例のためにコンテナイメージをコマンドで生成しますが、マニュアルに説明されてる方法でも問題ありません
armadillo:~# printf "%s\n" "FROM docker.io/alpine" "RUN apk add wireguard-tools" | 
    abos-ctrl podman-rw build -t wg-tools -f -
# コンテナが削除されないために設定ファイルも生成します
armadillo:~# cat > /etc/atmark/containers/wg-tools.conf <<EOF
set_image wg-tools
set_command sleep infinity
 
# wg コマンドを実行できる許可
set_network host
add_args --cap-add NET_ADMIN
 
# 自動起動しない設定
set_autostart no
EOF
# コンテナを起動します
armadillo:~# podman_start wg-tools
# シェルを実行して wg コマンドで確認します
armadillo:~# podman exec -ti wg-tools sh
/ # wg
interface: wg0
  public key: SoekXmObRZ9QnB3TOdAJ5ot5fXxwpQpX2MLTwC+nkik=
  private key: (hidden)
  listening port: 59131
 
peer: yGHSCG2jAoPY2xcSOLoD2xRvjCgOWcXcO9tZPq9vuXw=
[...]

ツールを ABOS に追加できないのが不便で申し訳ございませんが、NetworkManager だけで対応できるはずですそちらで対応していただければ幸いです。

よろしくお願いします。

マルティネ様、お世話になっております。早速のご回答ありがとうございます。

> 1/ wg-quick の設定ファイルからの読み込み

こちらの方法でWireGuardのインターフェースwg0を永続化することができました。
また、wgをコンテナで使用する方法も大変勉強になりました。必要な時に起動できるので使用を検討します。

詳細なご回答をありがとうございました。