跳到主要内容

网络配置

网关设计为使用 2 个 NIC,以便将 PLC 网络与 WAN 进行 物理 分离。这是设备 / 工业 PC 的标准配置。

NIC 角色 (2026.05+)
  • LAN1 = PLC (eth1 / enp1s0 等) — 单个 PLC 或 switch 后的多个 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.ifaceNET1_IFACEenp1s0
edge.net.lan2.ifaceNET2_IFACEenp2s0
edge.net.wifi.ifaceWIFI_IFACEwlan0
edge.net.gsm.ifaceGSM_IFACEwwan0
edge.net.vpn.ifaceVPN_IFACEtun0
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 1enp1s0WAN — 外部互联网 / 上级 Platform / NTP✅ Yes
NIC 2enp2s0PLC 网络 — 私有 IP,仅用于与 PLC 通信❌ No (ipv4.never-default yes)

2. 建议 IP 设计 (示例)​

区域CIDR用途
WANDHCP 或 公司内网 / 192.168.0.0/24网关外部 IP — 办公室网络
PLC 网络192.168.100.0/24PLC 专用私有网 — 与 WAN 隔离
网关自身WAN: 192.168.0.50 / PLC: 192.168.100.10
PLC192.168.100.20–254按线 / 按单元

3. 不同场景配置​

3.1 简单配置 — 单一公司内网​

PLC 直接连接到公司内网且没有独立 PLC 子网的情况。无需将 2 个 NIC 都置于同一网络:

  • 仅使用 enp1s0 (WAN) — DHCP 或 STATIC
  • enp2s0 不使用 (或 link down)

在运行 install.sh 时省略 NET2_IFACE,或在安装后于 OS NetworkManager 中将不使用的 NIC 设为 down 状态即可。

3.2 标准分离配置 — WAN + PLC 网络 (建议)​

如上述 1. 标准拓扑 所示。从安全角度看,可以将 PLC 网络与外部互联网完全隔离 — 网关成为两个网络之间 唯一的桥梁。PLC 在互联网上不可见。

3.3 3 NIC — WAN + PLC + 管理​

大型现场。

安装程序仅支持配置最多两个 NIC

install.sh 仅接收 NET1_* (PLC 网络) 和 NET2_* (WAN) 这两项 — 不包含 NET3。 第三个 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 的情况 — 所有通信处于同一虚拟网络。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 · 443Web UI · REST API有 — 操作员入口
1880Node-RED (流编辑)仅在需要时。编辑也可在 Web UI 中完成
12000 · 12443Edge 提供的 OPC-UA 服务器仅在外部 SCADA 连接时开放
1883 · 8883MQTT 明文 · TLS仅在使用 MQTT 发布时开放
3000Grafana⚠ 审查 — 2026-07-02 起用于外部访问而开放
7800 · 7801时序引擎 HTTP · HTTPS (时序查询)⚠ 审查 — 2026-07-02 起用于外部访问而开放
9042Cassandra🔴 必须审查 — 数据库端口
安装后的初始状态为 «全部开放» — 收紧权限由操作员负责

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 安装后自行开启。

「防火墙开放端口」与「实际监听端口」不同

防火墙列表虽有 11 个端口,但 bin/health.sh 确认的 实际监听者为 9 个 — 80 · 443 · 1883 · 1884 · 6379 · 9042 · 1880 · 12000 · 12443。

两者不同属正常现象。防火墙是 «允许」,监听者是 «实际运行的进程」。根据配置 (例如:未使用 MQTT),可能会出现虽开放但无人监听的端口。 相反,6379 (Redis) 和 1884 虽在监听,但不在防火墙列表中 — 因此外部无法访问。

不开放 7799 (Tomcat JMX)

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
两个 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. 更多信息​