本記事は次の記事の続編です。
前回の最後にはこんな予想を書きました。
さらに、データ通信用USBモデムがPiKVMで認識できるものであれば、インターネット環境が利用できないところでの機器の遠隔操作も可能だと思います。
そこで今回は、仕入れたLTE対応USBドングル (実は1個壊してしまったorzので2個目です) を使って、2年以上前のこの予想が実現できるかどうかを確認してみます。いわばお手軽な「モバイル回線対応のリモートKVM」を作ってみる実験です。
実験に際して揃えた材料は次の通り。前回と同じく、ラズパイやUSBドングルは一般的な市販品のみ使い、PiKVMの純正ハードウェアは (出費を抑えるため) 使わずにどこまで出来るか作戦でいきます。
必要な材料 | 今回の選択 |
---|---|
Raspberry Pi 4 Model B | 4GBモデル |
MicroSDカード | 64GB |
HDMI to USBドングル; ビデオキャプチャデバイス | THANKO SHDSLRVC |
LTE対応USBドングル | PIXELA PIX-MT110 |
SIMカード (microSIM) | IIJmio タイプD |
各種ケーブル | 適当にあった物 |
PiKVMを接続する機器 (以下、接続機器) | Raspbery Pi 400 + Kali Linux |
【国内正規代理店品】Raspberry Pi4 ModelB 4GB ラズベリーパイ4 技適対応品【RS・OKdo版】
Raspberry Pi RS・OKdo
サンコー(Sanko) レアモノショップ 一眼カメラやビデオカメラをWEBカメラに!「HDMI to USB WEBカメラアダプタ」
サンコー
ピクセラ LTE対応 SIMフリー USBドングル ホワイト PIX-MT110-AZ
ピクセラ
正規代理店商品!Raspberry Pi 400 技適取得済!日本語キーボード
Raspberypi
ID 15a9:0046 Gemtek 4G Modem
として認識される[root@pikvm ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 003: ID 15a9:0046 Gemtek 4G Modem
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
eth1
が増えている[root@pikvm ~]# ip a
(途中省略)
4: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 80:02:9c:XX:XX:XX brd ff:ff:ff:ff:ff:ff
[root@pikvm ~]# rw
+ mount -o remount,rw /
+ mount -o remount,rw /boot
+ set +x
=== PiKVM is in Read-Write mode ===
[root@pikvm ~]# cd /etc/systemd/network/
[root@pikvm network]# sed 's/Name=eth0/Name=eth1/' ./eth0.network > ./eth1.network
[root@pikvm network]# diff ./eth0.network ./eth1.network
2c2
< Name=eth0
---
> Name=eth1
[root@pikvm network]# ro
+ mount -o remount,ro /
+ mount -o remount,ro /boot
+ set +x
=== PiKVM is in Read-Only mode ===
[root@pikvm ~]# ip addr show eth1
4: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 80:02:9c:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 192.168.0.42/24 metric 10 brd 192.168.0.255 scope global dynamic eth1
valid_lft 3175sec preferred_lft 3175sec
inet6 fe80::8202:9cff:feXX:XXXX/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
Tailscaleの導入方法は、PiKVMサイトの上記ドキュメントで詳しく説明されているので、ここではその手順をそのままなぞっています。
[root@pikvm ~]# pikvm-update
(再起動が実施される)
[root@pikvm ~]# rw
[root@pikvm ~]# pacman -S tailscale-pikvm
[root@pikvm ~]# systemctl enable --now tailscaled
[root@pikvm ~]# tailscale up
Disable key expiry
も行うtailscale0
インターフェースを確認する[root@pikvm ~]# ip addr show tailscale0
5: tailscale0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet NNN.NNN.NNN.NNN/32 scope global tailscale0
valid_lft forever preferred_lft forever
inet6 fd7a:115c:a1e0::a3XX:XXXX/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5191:72ea:9aXX:XXXX/64 scope link stable-privacy proto kernel_ll
valid_lft forever preferred_lft forever
[root@pikvm ~]# tailscale ip
NNN.NNN.NNN.NNN
fd7a:115c:a1e0::a3XX:XXXX
https://NNN.NNN.NNN.NNN/
(tailscale上のPiKVMのIPアドレス) へアクセスできることを確認するPhase-1, Phase-2 が完了すれば、PiKVM化しているラズパイへは、それにLTE対応USBドングルが挿してあるだけでインターネットからアクセスできるはずです。これにて、携帯電話の電波の圏内であればどこに置いても使える「モバイル回線対応のリモートKVM」が完成しました。
LTE対応USBドングルでは一般的に従量課金もしくは通信量に上限があるデータ通信回線を使用するはずで、PiKVMの画面転送によるパケット使用量の増加には注意しておいてください。
今回の実験において、PiKVMを1Gbps LANに有線接続し、接続機器 (Raspberry Pi 400) の1920x1080画面出力をHDMI to USBデバイスでキャプチャして別PCのブラウザでモニターした際、下記写真のように左上部に文字があって他は真っ黒な画面を表示している時に、PiKVMからは常時5〜6Mbpsのデータ送信が行われていました。仮に6Mbpsだと→45MB/min→23分で1GBを消費する計算になります。
ちなみに本実験時の画面転送はMJPEG形式です。PiKVMでは転送効率が良いH.264も選択可能なようですが、H.264 / WebRTC - PiKVM Handbook によると USB capture devices are not supported
となっています。
PiKVMのEthernet-over-USB機能を使うと、接続機器自体を有線 (LANケーブル) や無線 (Wi-Fi) でネットワーク接続していない状態でも、USB接続したPiKVMを経由してネットワーク通信させることができます。設定手順はPiKVMサイトの上記ドキュメントで詳しく説明されているので、ここではざっくりと書きます。
[root@pikvm kvmd]# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-kvmd-extra.conf
/etc/kvmd/override.yaml
の末尾に次のブロックを追記する (forward_iface: eth1
はLTE対応USBドングルのeth1経由で通信させるという設定)otg:
devices:
ethernet:
enabled: true
driver: ecm
otgnet:
firewall:
allow_tcp: [80, 443]
forward_iface: eth1
commands:
post_start_cmd_append:
- "--dhcp-option=6,8.8.8.8"
iface:
ip_cmd:
- /usr/bin/ip
net: 10.65.0.0/28
[root@pikvm kvmd]# systemctl enable kvmd-otgnet
Created symlink /etc/systemd/system/multi-user.target.wants/kvmd-otgnet.service -> /usr/lib/systemd/system/kvmd-otgnet.service.
usb0
インターフェースがUP状態で、10.65.0.0/28
に該当するIPアドレスがDHCPで付与されていることラズパイを用いて実現するリモートKVM・IP-KVMの「PiKVM」。このモバイル回線対応は、作業工数面において意外に簡単に行えると分かりました。ほぼどのような遠隔地にある機器の操作に使えるのはもちろん、ネット接続する手間が不要なシンプルさを生かして、自分が移動して操作するのはおっくうな距離にある機器にササッと接続しておいて使うのも、結構ありな気がします。
また、モバイル回線対応ということは、リモートKVMを介して操作される機器が移動しがちな形態にも対応可能なわけで、直感ですがそれっぽい面白い用途があるかもしれないと思いました。
V4 Mini - PiKVM
PiKVM