ポートを一つも開けずに、スマホからPLCを動かす ― FUXA × Tailscale × KV-Xシリーズ/KV-8000
(なし・技術コラムのため) (技術コラム(クラウドSCADA・遠隔監視))
- FUXA
- Tailscale
- SCADA
- OPC UA
- KV-Xシリーズ
- KV-8000
- 遠隔監視
- クラウド
- 技術コラム

はじめに ― 前回の続き
前回のコラムでは、無料のWeb SCADA「FUXA」とKEYENCEのPLC「KV-Xシリーズ/KV-8000」をOPC UAで接続し、ブラウザから読み書きできるところまでを検証しました。
ただ、あの構成はPLCと同じLANの中の話です。現場の外から見たい――出張先から、自宅から、経営者のスマホから。そう考えた瞬間に立ちはだかるのが、**「工場のネットワークにインターネットから入れていいのか」**という当然の不安です。ルータのポートを開けて外に晒すのは、生産設備では選びたくない。
そこで今回は、クラウド上のFUXAからVPN(Tailscale)経由でPLCに接続し、インターネットに向けてポートを一つも開けずに、スマホからPLCのデバイス値を書き換えるところまでを実機検証しました。構築時間は約90分です。
構成 ― 鍵は「サブネットルーター」
構成はこうです。東京リージョンのクラウドVPS(AWS Lightsail、月7ドルの最小構成で十分)にDockerでFUXAを立て、Tailscale(WireGuardベースのメッシュVPN)で現場のノートPCと結びます。ノートPCをサブネットルーター(現場LANへの中継役)にするのがポイントで、クラウド側のFUXAからは、ローカル検証とまったく同じ opc.tcp://<PLCのIP>:4840 がそのまま通ります。接続設定の書き換えは一切不要でした。
- VPSのファイアウォールで開けるのは管理用のSSHのみ。FUXAの画面(ポート1881)はインターネットに公開しない
- 閲覧する端末(PC・スマホ)も同じTailscaleネットワークに参加させ、トンネルの中だけで完結させる
- スマホはTailscaleアプリを入れてログインするだけ

構築ダイジェスト
手順の詳細は割愛しますが、骨子は4ステップです。
- VPS作成(Ubuntu 24.04)→ Tailscaleをインストールし
--accept-routes付きで参加 - 同じVPSにDockerでFUXAを起動(
--network hostでトンネル経由の通信を素直に通す) - 現場PCにTailscaleを入れ、
--advertise-routesで現場LANのサブネットを広告 → 管理画面でルートを承認(広告と承認はセット。承認を忘れるとクラウドからPLCに届きません) - WindowsのIP転送とファイアウォールの転送許可を設定
余談ですが、ローカルPCでは何度も失敗していたDockerイメージの取得が、クラウドの回線では一瞬で終わりました。環境起因のトラブルは場所を変えると切り分けが進む、という好例です。
ハマりどころ① ― PLCには「帰り道」が要る
ここからが本題です。設定を終えてもVPSからPLCへの通信が返ってこない。原因はPLC側にありました。
クラウドからのパケットは、送信元がTailscaleのアドレス(PLCから見ると知らないネットワーク)のまま届きます。PLCのデフォルトゲートウェイが空欄だと、PLCは応答パケットをどこに返せばいいか分からず、通信は行きっぱなしで終わります。KV STUDIOのユニット設定でデフォルトゲートウェイに現場PC(サブネットルーター)のIPを設定することで解決しました。「知らない宛先への返事は、全部中継役のPCに投げる」という構図です。

ハマりどころ② ― pingは嘘をつく、TCPは正直
ゲートウェイを設定しても、VPSからのpingは通りませんでした。普通ならここで諦めそうになりますが、実はpingが落ちていても本命の通信は通ることがあります。ICMP(ping)はOSのファイアウォールで別枠で扱われるため、トンネル越しの疎通確認には向きません。
そこで本命のOPC UAポートをTCPで直接叩きます。
timeout 3 bash -c '</dev/null >/dev/tcp/<PLCのIP>/4840' && echo OPEN || echo CLOSED
結果は OPEN。pingが100%ロスのままでも、OPC UAの4840番ポートは開通していました。
🖼【スクショ1:screenshot1_TCP4840_OPEN.png ― TCPテストの実行結果】トンネル越しの切り分けは「pingではなく、本命ポートへのTCPテスト」――今後のクラウド接続案件すべてに効く教訓です。
成果 ― 手のひらのスライダーで、PLCが動く
あとは前回と同じです。FUXAの接続設定はローカル検証のときと同一、タグもそのまま。保存して数秒でステータスは緑の「接続成功」に変わりました。スマホにTailscaleアプリを入れてブラウザでFUXAを開くと、監視画面がそのまま表示されました。

- KV側の登録モニタで値を変更 → クラウド経由でスマホの画面に反映
- スマホのスライダーを操作 → 新潟の机の上のKV-8000のデバイス値が書き換わる
・・・肝心のスマホのスライダー画像など残すのを失念してしまいました。 ネット接続環境によっては、スマホ側は若干レイテンシが気になりますが、スライダースイッチではなく、プッシュスイッチ等であれば全く問題ないかと思います。
机の上のPLCと、ポケットのスマホが、クラウド越しにつながっている。この間、インターネットに開けたポートはゼロです。
現実に運用するなら
検証はここまでですが、実運用に向けては次を推奨します。
- まずは書き込みなしの監視専用から。遠隔からの書き込みは、必要性と安全条件を整理してから
- FUXAの認証設定を必ず有効化する(初期設定のまま運用しない)
- 不特定の相手に見せる場合はHTTPS化とアクセス制限を別途設計する(トンネル内限定なら不要)
- 現場側の中継はノートPCでなく、常設の小型PCやゲートウェイ機器に置き換える
まとめ
「工場の外から見たい。でもポートは開けたくない」――この両立は、VPNトンネル+クラウドSCADAという構成で、月7ドルと構築90分の距離まで来ています。エンジンは無料、回線は既存、必要なのは正しく組む知識だけです。
PLCの見える化を、工場の塀の外へ。設計から運用の安全設計まで、PLCもネットワークもクラウドも扱う当社にご相談ください。