Netzwerkkonfiguration
Das Gateway ist so konzipiert, dass das PLC-Netz und das WAN mit 2 NICs physisch getrennt werden. Dies entspricht der Standardkonfiguration von Appliances / Industrie-PCs.
- LAN1 = PLC (eth1 / enp1s0 etc.) — Einzelne PLC oder mehrere PLCs hinter einem Switch
- LAN2 = WAN (eth2 / enp2s0 etc.) — Internet / Platform / OTA
- wlan0 / wwan0 / tun0 / usb0 — WiFi / GSM / VPN / Management USB-Ethernet
Das Mapping der NIC-Namen kann für jedes Gerät in /etc/kopens/app.properties über edge.net.lan1.iface angepasst und bei der Installation per env überschrieben werden. Dies dient ausschließlich der Anzeige auf der Monitoring-Karte; für die eigentliche IP-Konfiguration ist der OS NetworkManager / netplan zuständig. install.sh bietet optional die statische IP-Konfiguration via nmcli an.
🔴 Die Namen in den Konfigurationsdateien unterscheiden sich von den Namen der Installations-envs. Die Konfigurationsdatei ist lan1, das Installations-env ist NET1 — wird LAN1_IFACE verwendet, passiert nichts und die Standardwerte bleiben bestehen.
app.properties Schlüssel | env bei Installation | Standardwert |
|---|---|---|
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
Da NET1_IP das PLC-Netz ist, wird kein Standardgateway gesetzt. Wenn NET2_IP leer bleibt, wird DHCP verwendet.
1. Standardtopologie
┌──────────────────────┐ ┌─────────────┐
│ 상위 플랫폼 / 클라우드 │ ◀─── HTTPS / MQTT ─── │ 게이트웨이 │
│ (PlantPulse / SCADA) │ └─────────────┘
└──────────────────────┘ enp1s0 │ enp2s0
│ │
┌───────────────┘ └────────────┐
│ │
WAN (외부) PLC 망 (내부)
│ │
│ ┌───┴────────────┐
│ │ │
PLC₁ PLC₂ PLC₃
(Modbus / S7 / OPCUA)
| NIC | Name (Fedora Standard) | Rolle | Standardgateway? |
|---|---|---|---|
| NIC 1 | enp1s0 | WAN — Externes Internet / Übergeordnete Platform / NTP | ✅ Ja |
| NIC 2 | enp2s0 | PLC-Netz — Private IP, ausschließlich für Kommunikation mit PLC | ❌ Nein (ipv4.never-default yes) |
2. Empfohlenes IP-Design (Beispiel)
| Bereich | CIDR | Verwendungszweck |
|---|---|---|
| WAN | DHCP oder Firmennetz / 192.168.0.0/24 | Externes Gateway-IP — Office-Netzwerk |
| PLC-Netz | 192.168.100.0/24 | Dediziertes privates PLC-Netz — Isoliert vom WAN |
| Gateway selbst | WAN: 192.168.0.50 / PLC: 192.168.100.10 | |
| PLC | 192.168.100.20–254 | Pro Linie / Zelle |
3. Konfiguration nach Szenario
3.1 Einfache Konfiguration — Ein Firmennetz
Fall, in dem die PLC direkt im Firmennetz hängt und es kein separates PLC-Subnetz gibt. Es ist nicht notwendig, beide NICs im gleichen Netz zu halten:
- Nur
enp1s0(WAN) verwenden — DHCP oder STATIK enp2s0nicht verwenden (oder Link down)
Beim Ausführen von install.sh kann NET2_IFACE weggelassen werden, oder nach der Installation kann die nicht verwendete NIC im OS NetworkManager auf «down» gesetzt werden.
3.2 Standard-Trennkonfiguration — WAN + PLC-Netz (Empfohlen)
Entspricht genau der 1. Standardtopologie. Aus Sicherheitsgründen kann das PLC-Netz vollständig vom externen Internet isoliert werden — das Gateway ist die einzige Brücke zwischen den beiden Netzen. Die PLC ist aus dem Internet nicht sichtbar.
3.3 3 NIC — WAN + PLC + Management
Große Anlagen.
install.sh akzeptiert nur NET1_* (PLC-Netz) und NET2_* (WAN) — NET3 existiert nicht.
Die dritte NIC (Management-Kanal) muss nach der Installation manuell konfiguriert werden.
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) — Externenp2s0(PLC) — Privates PLC-Netzenp3s0oder USB-Ethernet (Management) — Separater Kanal für Diagnose / Inspektion (Firmen-IT)
Die Management-Port-Karte im Home-Menü zeigt die IP dieser NIC an.
3.4 Cloud / VM 1 NIC
Fall, in dem in einer VM-Umgebung nur eine NIC vorhanden ist — die gesamte Kommunikation erfolgt über dasselbe virtuelle Netzwerk. Die NIC-Trennung wird über vSwitch / VLAN im Host-OS realisiert.
4. Zugriff auf das Gateway von außen
Um nach dem Deployment auf die Web-UI des Gateways von außen (Office-PC, Mobilgerät) zuzugreifen:
| Szenario | Methode |
|---|---|
| Innerhalb desselben Firmennetzes | Direkt über https://<gateway-wan-ip>/ui/main |
| Extern → Firmennetz | VPN-Verbindung, dann wie oben |
| Extern → Internet (Riskant) | Firewall NAT-Portweiterleitung + REST API Authentifizierung zwingend + HTTPS |
Das Gateway v1 REST verwendet
X-API-Key/ Bearer-Authentifizierung. Dennoch wird eine direkte Exposition im Internet nicht empfohlen. Externer Zugriff sollte nur nach Einbindung einer zusätzlichen Schutzschicht wie VPN oder mTLS/API-Gateway erlaubt werden.
5. Firewall — Exponierte Ports
install.sh registriert die zu öffnenden Ports in der Firewall. Da der Container im Host-Netzwerk läuft, ist die Host-Firewall gleichbedeutend mit der Zugriffskontrolle.
| Port | Funktion | Grund für externe Öffnung |
|---|---|---|
| 80 · 443 | Web UI · REST API | Ja — Zugang für den Operator |
| 1880 | Node-RED (Flow-Editor) | Nur bei Bedarf. Bearbeitung ist auch in der Web UI möglich |
| 12000 · 12443 | OPC-UA Server des Edge | Nur wenn externe SCADA angebunden werden |
| 1883 · 8883 | MQTT Klartext · TLS | Nur bei Verwendung von MQTT-Publishing |
| 3000 | Grafana | ⚠ Prüfung — am 02.07.2026 für externen Zugriff geöffnet |
| 7800 · 7801 | Zeitreihen-Engine HTTP · HTTPS (Zeitreihen-Abfrage) | ⚠ Prüfung — am 02.07.2026 für externen Zugriff geöffnet |
| 9042 | Cassandra | 🔴 Prüfung zwingend — Datenbank-Port |
install.sh öffnet die oben genannten Ports ohne Schnittstellentrennung. Insbesondere 9042(Cassandra), 3000(Grafana) und 7800/7801(Zeitreihen-Engine) müssen normalerweise nicht von außen erreichbar sein.
Nicht benötigte Ports schließen oder nur auf der WAN-NIC blockieren.
firewall-cmd --list-ports # 지금 열린 것
firewall-cmd --permanent --remove-port=9042/tcp
firewall-cmd --permanent --remove-port=3000/tcp
firewall-cmd --reload
Um die Firewall von Beginn der Installation an nicht zu verändern, installieren Sie mit SKIP_FIREWALL=1 und öffnen Sie die Ports manuell.
Die Firewall-Liste enthält elf Einträge, aber die von bin/health.sh geprüften tatsächlichen Listener sind neun —
80 · 443 · 1883 · 1884 · 6379 · 9042 · 1880 · 12000 · 12443.
Diese Differenz ist normal. Die Firewall definiert die «Erlaubnis», der Listener ist «das, was tatsächlich läuft». Je nach Konfiguration (z. B. MQTT nicht in Betrieb) kann ein Port offen sein, ohne dass jemand zuhört. Umgekehrt sind 6379(Redis) und 1884 aktiv, stehen aber nicht in der Firewall-Liste — daher sind sie von außen nicht erreichbar.
JMX verfügt über keine Authentifizierung und hört nur auf 127.0.0.1. Seit dem Re-Release im November 2026 öffnet die Firewall-Phase von install.sh den Port 7799 nicht mehr und schließt ihn, falls er bereits offen war (firewall-cmd --remove-port=7799/tcp). Wenn ein anderes Firewall-System (iptables · ufw · nftables) verwendet wird, blockieren Sie 7799 manuell.
In Produktionsumgebungen sollten Ports, die keinen externen Zugriff benötigen, per Firewall gesperrt oder nur auf der WAN-NIC blockiert werden (firewall-cmd --remove-port).
6. Netzwerkvalidierung
Überprüfung der Netzwerkreichbarkeit unmittelbar nach der Installation oder vor dem Hinzufügen einer 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. Häufige Fehlerquellen
| Symptom | Ursache / Lösung |
|---|---|
| WAN funktioniert, PLC ist nicht pingbar | NIC 2 IP / Maske / Gateway-Einstellungen auf PLC-Seite. Routing via ip route prüfen |
| Internet-Lecks im PLC-Netz | ipv4.never-default yes in enp2s0 fehlt. nmcli con modify enp2s0 ipv4.never-default yes |
| Gateway-externe IP hat sich geändert (DHCP) | Verbindungsabbruch, falls externe SCADA über IP zugreift — STATIK empfohlen |
| Zwei NICs routen gegenseitig (Bridge) | Prüfung von ipv4.method und ipv6.method der NIC 2. Bridge-Modus deaktivieren |
| Langsame Alarmantworten der PLC | Keepalive / Paketgröße der PLC-Netz-NIC prüfen. tcpdump -i enp2s0 host <PLC-IP> |
| OPC-UA externe Clientverbindung abgelehnt | Firewall 12000 blockiert / Zertifikat nicht vertrauenswürdig. firewall-cmd --list-ports und OPC-UA Sicherheit prüfen |
8. Weitere Informationen
- NIC-env bei Installation: Schnellinstallation — Website-Werte / Netzwerkwerte festlegen
- Netzwerk Go/No-Go vor produktivem Einsatz: Kriterien für Produktionsbereitschaft
- Automatisch geöffnete Firewall-Ports: Installationshandbuch
- Sicherheitsverstärkung bei externer Exposition: REST API Authentifizierung empfohlen (zwingend bei Exposition im externen Netz)