ネットワーク構成
ゲートウェイは 2つのNIC により、PLC網とWANを物理的に分離するように設計されています。アプライアンス / 産業用PCの標準構成です。
- LAN1 = PLC (eth1 / enp1s0など) — 単一PLCまたはスイッチ背後の複数PLC
- LAN2 = WAN (eth2 / enp2s0など) — インターネット / Platform / OTA
- wlan0 / wwan0 / tun0 / usb0 — WiFi / GSM / VPN / 管理用USB-Ethernet
NIC名のマッピングは /etc/kopens/app.properties の edge.net.lan1.iface などでボックスごとに調整可能であり、インストール時にenvで上書きできます。これは画面モニタリングカードの表示専用であり、IP設定自体はOSのNetworkManager / netplanが担当します。install.sh はnmcliによる静的IP設定もオプションで提供します。
🔴 設定ファイルの名称とインストールenvの名称は異なります。 設定ファイルは lan1、インストールenvは NET1 です — LAN1_IFACE で指定すると 何も起こらず、デフォルト値がそのまま適用されます。
app.properties キー | インストール時のenv | デフォルト値 |
|---|---|---|
edge.net.lan1.iface | NET1_IFACE | enp1s0 |
edge.net.lan2.iface | NET2_IFACE | enp2s0 |
edge.net.wifi.iface | WIFI_IFACE | wlan0 |
edge.net.gsm.iface | GSM_IFACE | wwan0 |
edge.net.vpn.iface | VPN_IFACE | tun0 |
NET1_IFACE=enp1s0 NET2_IFACE=enp2s0 \
NET1_IP=192.168.100.1/24 NET2_IP=192.168.0.10/24 \
bash install.sh
NET1_IP はPLC網であるため、デフォルトルートは設定しません。 NET2_IP を空にすると、そのインターフェースはDHCPになります。
1. 標準トポロジー
┌──────────────────────┐ ┌─────────────┐
│ 상위 플랫폼 / 클라우드 │ ◀─── HTTPS / MQTT ─── │ 게이트웨이 │
│ (PlantPulse / SCADA) │ └─────────────┘
└──────────────────────┘ enp1s0 │ enp2s0
│ │
┌───────────────┘ └────────────┐
│ │
WAN (외부) PLC 망 (내부)
│ │
│ ┌───┴────────────┐
│ │ │
PLC₁ PLC₂ PLC₃
(Modbus / S7 / OPCUA)
| NIC | 名称 (Fedoraデフォルト) | 役割 | デフォルトゲートウェイ? |
|---|---|---|---|
| NIC 1 | enp1s0 | WAN — 外部インターネット / 上位Platform / NTP | ✅ Yes |
| NIC 2 | enp2s0 | PLC網 — プライベートIP、PLCとの通信専用 | ❌ No (ipv4.never-default yes) |
2. 推奨IP設計 (例)
| 領域 | CIDR | 用途 |
|---|---|---|
| WAN | DHCP または 社内網 / 192.168.0.0/24 | ゲートウェイ外部IP — オフィスネットワーク |
| PLC網 | 192.168.100.0/24 | PLC専用プライベートネットワーク — WANと隔離 |
| ゲートウェイ本体 | WAN: 192.168.0.50 / PLC: 192.168.100.10 | |
| PLC | 192.168.100.20–254 | ライン別 / セル別 |
3. シナリオ別構成
3.1 単純構成 — 社内網 1つ
PLCが社内網に直接接続されており、別途PLCサブネットがない場合。NIC 2つを同じネットワークに置く必要はありません:
enp1s0(WAN) のみ使用 — DHCP または STATICenp2s0未使用 (または link down)
install.sh を実行する際に NET2_IFACE を省略するか、インストール後にOSのNetworkManagerで未使用NICをdown状態にしてください。
3.2 標準分離構成 — WAN + PLC網 (推奨)
上記 1. 標準トポロジー の通り。セキュリティ面から PLC網を外部インターネットと完全に隔離 可能です。ゲートウェイが2つのネットワーク間の唯一の架け橋となり、PLCがインターネットから見えなくなります。
3.3 3 NIC — WAN + PLC + 管理
大規模サイト向け。
install.sh は NET1_*(PLC網) と NET2_*(WAN) の 2つだけ を受け付けます — NET3 は存在しません。
3つ目のNIC(管理チャネル)は インストール後に手動で 設定してください。
sudo nmcli con add type ethernet ifname enp3s0 con-name mgnt \
ipv4.method manual ipv4.addresses 10.10.0.50/24
sudo nmcli con up mgnt
enp1s0(WAN) — 外部enp2s0(PLC) — プライベートPLC網enp3s0または USB-Ethernet (管理) — 別途診断 / 点検用チャネル (社内IT)
ホームカードの管理ポートにこのNICのIPが表示されます。
3.4 クラウド / VM 1 NIC
VM環境でNICが1つしかない場合 — すべての通信が同一の仮想ネットワークとなります。NICの分離はホストOS側でvSwitch / VLANを用いて処理します。
4. 外部からゲートウェイへのアクセス
デプロイ後、外部 (オフィスPC、モバイル) からゲートウェイのWeb UIにアクセスする場合:
| シナリオ | 方法 |
|---|---|
| 同一社内網内 | https://<gateway-wan-ip>/ui/main で直接アクセス |
| 社外 → 社内網 | VPN接続後、上記と同様にアクセス |
| 社外 → インターネット (危険) | ファイアウォールNATポートフォワーディング + REST API認証必須 + HTTPS |
ゲートウェイ v1 RESTは
X-API-Key/ Bearer認証を使用します。それでもインターネットへの直接公開は推奨しません。 社外アクセスはVPNまたはmTLS/API gatewayなどの追加保護層を設けた後に許可してください。
5. ファイアウォール — 公開ポート
install.sh が 開放ポート をファイアウォールに登録します。コンテナが hostネットワーク で動作するため、ホストのファイアウォールがそのままアクセス制御となります。
| ポート | 内容 | 外部に開放する理由があるか |
|---|---|---|
| 80 · 443 | Web UI · REST API | あり — オペレーターが使用する入口 |
| 1880 | Node-RED (フロー編集) | 必要な場合のみ。編集はWeb UI内でも可能 |
| 12000 · 12443 | Edgeが提供するOPC-UAサーバー | 外部SCADAが接続する場合のみ |
| 1883 · 8883 | MQTT 平文 · TLS | MQTTパブリッシュを使用する場合のみ |
| 3000 | Grafana | ⚠ 要検討 — 2026-07-02に外部アクセス用に開放されました |
| 7800 · 7801 | 時系列エンジン HTTP · HTTPS (時系列クエリ) | ⚠ 要検討 — 2026-07-02に外部アクセス用に開放されました |
| 9042 | Cassandra | 🔴 要検討 — データベースポートです |
install.sh は上記のポートを インターフェース区別なく 開放します。特に 9042(Cassandra) と 3000(Grafana) · 7800/7801(時系列エンジン) は、外部からアクセスさせる理由は通常ありません。
使用しないポートは閉じるか、WAN NIC側でのみ遮断してください。
firewall-cmd --list-ports # 지금 열린 것
firewall-cmd --permanent --remove-port=9042/tcp
firewall-cmd --permanent --remove-port=3000/tcp
firewall-cmd --reload
インストール時からファイアウォールを操作させたくない場合は、SKIP_FIREWALL=1 でインストールした後に直接開放してください。
ファイアウォールのリストは開放されていますが、bin/health.sh が確認する 実際のリスナーは9つ です — 80 · 443 · 1883 · 1884 · 6379 · 9042 · 1880 · 12000 · 12443。
これらが異なるのは正常です。ファイアウォールは«許可»であり、リスナーは«実際に起動しているもの»であるため、構成により(例: MQTT未使用) 開放されていても誰もリスンしていないポートが存在します。 逆に 6379(Redis) と 1884 はリスンしていますが、ファイアウォールのリストには含まれていません — そのため外部からは到達不能です。
JMXは認証がないため、127.0.0.1のみ でリスンします。2026.11の再リリースより、install.sh のファイアウォール段階では7799を開放せず、既に開放されている場合は閉じます(firewall-cmd --remove-port=7799/tcp)。他のファイアウォール(iptables · ufw · nftables)を使用しているボックスの場合は、手動で7799を遮断してください。
運用環境で外部アクセスが不要なポートは、ファイアウォールで遮断するか WAN NICのみで遮断 してください(firewall-cmd --remove-port)。
6. ネットワーク検証
インストール直後またはPLC追加直前に、ネットワークの到達性を確認してください。
# 1) WAN — 외부 ping
ping -c 3 8.8.8.8
# 2) WAN — DNS
nslookup google.com
# 3) WAN — 플랫폼 / 다운로드
curl -I https://product.kopens.io/plantpulse-edge/install.sh
# 4) PLC 망 — 인터페이스 활성
ip a show enp2s0
# 5) PLC 망 — PLC 도달
ping -c 3 192.168.100.20 # 첫 PLC IP
# 6) PLC 포트 도달 (Modbus 502 예시)
nc -vz 192.168.100.20 502
# Connection succeeded ... 면 정상
# 7) 게이트웨이 자체 시스템 헬스 (컨테이너 모드)
sudo bash /opt/kopens/install/bin/status.sh
curl -ks https://127.0.0.1/api/v1/system/health | python3 -m json.tool
7. よくある落とし穴
| 症状 | 原因 / 解決策 |
|---|---|
| WANは通るがPLCにpingが飛ばない | NIC 2番のIP / マスク / PLC側のゲートウェイ設定。ip route でルーティングを確認 |
| PLC網からインターネットに漏れているようだ | enp2s0 の ipv4.never-default yes が欠落。nmcli con modify enp2s0 ipv4.never-default yes |
| ゲートウェイの外部IPが変更された (DHCP) | 外部SCADAがIPでアクセスしている場合、通信断が発生 — STATICを推奨 |
| 2つのNICが相互にルートされている (ブリッジ) | NIC 2の ipv4.method, ipv6.method を検査。ブリッジモードを解除 |
| PLC側のアラーム応答が遅い | PLC網NICのkeepalive / パケットサイズを点検。tcpdump -i enp2s0 host <PLC-IP> |
| OPC-UA外部クライアントの接続拒否 | ファイアウォール12000の遮断 / 証明書の信頼関係未構築。firewall-cmd --list-ports と OPC-UAセキュリティ を確認 |
8. 詳細情報
- インストール時のNIC env: クイックインストール — サイト値 / ネットワーク値指定
- 運用投入前のネットワークGo/No-Go: プロダクション受入基準
- ファイアウォール自動開放ポート: インストールガイド
- 外部公開時のセキュリティ強化: REST API認証の適用を推奨 (外部網公開時に必須)