본문으로 건너뛰기

네트워크 구성

게이트웨이는 2 개의 NIC 로 PLC 망과 WAN 을 물리적으로 분리하도록 설계되어 있습니다. 어플라이언스 / 산업용 PC 의 표준 구성.

NIC 역할 (2026.05+)
  • LAN1 = PLC (eth1 / enp1s0 등) — 단일 PLC 또는 switch 뒤 다중 PLC
  • LAN2 = WAN (eth2 / enp2s0 등) — 인터넷 / 플랫폼 / 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 static 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 — 외부 인터넷 / 상위 플랫폼 / 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 단순 구성 — 사내망 1 개​

PLC 가 사내망에 직접 붙어있고 별도 PLC 서브넷이 없는 경우. NIC 2 개 다 같은 망에 둘 필요 없음:

  • 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 가 1 개만 있는 경우 — 모든 통신이 같은 가상 네트워크. NIC 분리는 호스트 OS 에서 vSwitch / VLAN 으로 처리.


4. 외부에서 게이트웨이로 접근하기​

배포 후 외부 (사무실 PC, 모바일) 에서 게이트웨이의 웹 UI 에 접속하려면:

시나리오방법
같은 사내망 안https://<게이트웨이-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웹 UI · REST API있음 — 운영자가 쓰는 입구
1880Node-RED (플로우 편집)필요할 때만. 편집은 웹 UI 안에서도 됩니다
12000 · 12443엣지가 내주는 OPC-UA 서버외부 SCADA 가 붙을 때만
1883 · 8883MQTT 평문 · TLSMQTT 발행을 쓸 때만
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 로 설치한 뒤 직접 여세요.

「방화벽에 열린 포트」와 「실제로 듣고 있는 포트」는 다릅니다

방화벽 목록은 열하나지만, bin/health.sh 가 확인하는 실제 리스너는 아홉입니다 — 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. 더 알아보기​