网络配置 — 网关部署指南
网关设计为通过2 个 NIC将 PLC 网与 WAN 进行物理隔离。这是一体机 / 工业 PC 的标准配置。
- LAN1 = PLC (eth1 / enp1s0 等) — 单台 PLC 或交换机后的多台 PLC
- LAN2 = WAN (eth2 / enp2s0 等) — 互联网 / 平台 / OTA
- wlan0 / wwan0 / tun0 / usb0 — WiFi / GSM / VPN / 管理用 USB-Ethernet
NIC 名称映射可通过 /etc/kopens/app.properties 的 edge.net.lan1.iface 等按设备逐台调整
(install.sh 时可用 LAN1_IFACE=enp1s0 ... bash install.sh env 覆盖)。仅用于画面监视卡片的显示
— IP 设置本身由 OS NetworkManager / netplan 负责。install.sh 也可选执行 nmcli 静态 IP 配置
(LAN1_IP=192.168.100.10/24 LAN2_IP=192.168.0.10/24 ... bash install.sh)。
1. 标准拓扑
┌──────────────────────┐ ┌─────────────┐
│ 상위 플랫폼 / 클라우드 │ ◀─── HTTPS / MQTT ─── │ 게이트웨이 │
│ (PlantPulse / SCADA) │ └─────────────┘
└──────────────────────┘ enp1s0 │ enp2s0
│ │
┌───────────────┘ └────────────┐
│ │
WAN (외부) PLC 망 (내부)
│ │
│ ┌───┴────────────┐
│ │ │
PLC₁ PLC₂ PLC₃
(Modbus / S7 / OPCUA)
| NIC | 名称 (Fedora 38 默认) | 角色 | 默认网关? |
|---|---|---|---|
| NIC 1 | enp1s0 | WAN — 外部互联网 / 上位平台 / 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 简单配置 — 仅一个企业内网
PLC 直接接入企业内网、没有独立 PLC 子网的情况。两个 NIC 不必都接在同一网络:
- 仅使用
enp1s0(WAN) — DHCP 或 STATIC enp2s0不使用(或保持 link down)
在 2026.05+ 的安装中,执行 install.sh 时可省略 LAN2_IFACE,或在安装后于 OS NetworkManager 中
将未使用的 NIC 置为 down 状态即可。legacy native setup.sh 可能仍保留第 2 个 NIC 的提示,
因此仅在旧款设备上考虑禁用 set-2.sh。
3.2 标准隔离配置 — WAN + PLC 网(推荐)
与上文 1. 标准拓扑 相同。从安全角度可实现 PLC 网与外部互联网完全隔离 — 网关是两个网络之间的唯一桥梁。PLC 在互联网上不可见。
3.3 3 NIC — WAN + PLC + 管理
适用于大型站点。setup.sh 中有附加步骤(set-usb-mgnt.sh 已被注释 — 可启用):
enp1s0(WAN) — 外部enp2s0(PLC) — 私有 PLC 网enp3s0或 USB-Ethernet(管理)— 独立的诊断 / 巡检通道(企业 IT)
主页卡片的管理端口会显示该 NIC 的 IP。
3.4 云 / VM 单 NIC
VM 环境中只有 1 个 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 会将容器模式所需的端口注册到 firewall。legacy native 的详细端口表
仍保留在(legacy)H/W 完整安装 5.1 节。
核心:80 / 443(Web UI)+ 1880(Node-RED)+ 12000 / 12443(OPC-UA)+ 1883 / 8883(MQTT,使用时)。
在生产环境中,对无需外部访问的端口应通过防火墙封锁,或仅在 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 不通 | 第 2 个 NIC 的 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. 延伸阅读
- 安装时的 NIC env:快速安装 — 指定站点值 / 网络值
- 投入运行前的网络 Go/No-Go:生产验收标准
- legacy native NIC 输入:(legacy)H/W 完整安装 4.2–4.3 节
- 防火墙自动开放端口:(legacy)H/W 完整安装 5.1 节
- 对外暴露时的安全加固:建议启用 REST API 认证(对外网暴露时为必需)