DMZ의 Windows에서 Linux용 Azure IoT Edge를 구성하는 방법

적용 대상: IoT Edge 1.4 확인 표시 IoT Edge 1.4

Important

IoT Edge 1.5 LTS 및 IoT Edge 1.4는 지원되는 릴리스입니다. IoT Edge 1.4 LTS는 2024년 11월 12일에 수명이 종료됩니다. 이전 릴리스에 있는 경우 IoT Edge 업데이트를 참조하세요.

이 문서에서는 여러 NIC(네트워크 인터페이스 카드)를 지원하고 여러 네트워크에 연결하도록 Azure IoT Edge(EFLOW) VM(가상 머신)을 구성하는 방법을 설명합니다. 여러 NIC 지원을 사용하도록 설정하여 EFLOW VM에서 실행되는 애플리케이션은 IoT Edge 사용하여 데이터를 클라우드로 보내면서 오프라인 네트워크에 연결된 디바이스와 통신할 수 있습니다.

필수 조건

산업 시나리오

산업용 IoT는 IT(정보 기술) 및 OT(운영 기술) 융합의 시대를 앞지르고 있습니다. 그러나 IT 기술을 사용하여 기존 OT 자산을 보다 지능적으로 만드는 것은 사이버 공격에 더 많이 노출되는 것을 의미합니다. 이 시나리오는 여러 환경이 DMZ라고도 하는 완충 영역을 사용하여 설계되는 주요 이유 중 하나입니다.

네트워킹 구성이 서로 다른 두 네트워크 또는 영역으로 분할된 워크플로 시나리오를 상상해 보세요. 첫 번째 영역에는 오프라인 네트워크로 정의된 보안 네트워크가 있을 수 있습니다. 오프라인 네트워크는 인터넷에 연결되어 있지 않으며 내부 액세스로 제한됩니다. 두 번째 영역에는 인터넷 연결이 제한된 몇 개의 디바이스가 있는 DMZ(완충 영역)가 있을 수 있습니다. EFLOW VM에서 실행되도록 워크플로를 이동하는 경우 EFLOW VM에 기본값으로 NIC가 하나만 연결되어 있으므로 다른 네트워크에 액세스하는 데 문제가 있을 수 있습니다.

이 시나리오에서는 PLC(프로그래밍 가능한 논리 컨트롤러) 또는 오프라인 네트워크에 연결된 OPC UA(개방형 플랫폼 통신 통합 아키텍처) 호환 디바이스와 같은 일부 디바이스가 있는 환경이 있으며 EFLOW VM에서 실행되는 OPC 게시자 모듈을 사용하여 모든 디바이스의 정보를 Azure에 업로드하려고 합니다.

EFLOW 호스트 디바이스 및 PLC 또는 OPC UA 디바이스는 오프라인 네트워크에 물리적으로 연결되므로 Azure IoT Edge for Linux on Windows 가상 다중 NIC 구성을 사용하여 EFLOW VM을 오프라인 네트워크에 연결할 수 있습니다. 외부 가상 스위치를 사용하여 EFLOW VM을 오프라인 네트워크에 연결하고 다른 오프라인 디바이스와 직접 통신할 수 있습니다.

또 다른 네트워크는 EFLOW 호스트 디바이스는 인터넷 및 Azure 연결을 사용하여 DMZ(온라인 네트워크)에 물리적으로 연결됩니다. 내부 또는 외부 스위치를 사용하여 IoT Edge 모듈로 EFLOW VM을 Azure IoT Hub 연결하고 오프라인 NIC를 통해 오프라인 디바이스에서 보낸 정보를 업로드할 수 있습니다.

오프라인 및 온라인 네트워크에 연결된 EFLOW 가상 머신을 보여 주는 EFLOW 산업용 IoT 시나리오의 스크린샷.

시나리오 요약

보안 네트워크:

  • 인터넷 연결 없음 - 액세스가 제한됩니다.
  • PC 또는 UPC UA 호환 디바이스가 연결됩니다.
  • 외부 가상 스위치를 사용하여 연결된 EFLOW VM.

DMZ:

  • 인터넷 연결 - Azure 연결이 허용됩니다.
  • 내부/외부 가상 스위치를 사용하여 Azure IoT Hub 연결된 EFLOW VM.
  • EFLOW VM 내에서 모듈로 실행되는 OPC 게시자가 Azure에 데이터를 게시하는 데 사용됩니다.

VM 네트워크 가상 스위치 구성

다음 단계는 예제 시나리오에 설명된 네트워킹에만 해당됩니다. 사용된 가상 스위치와 사용된 구성이 네트워킹 환경과 일치하는지 확인합니다.

참고 항목

이 문서의 단계에서는 EFLOW VM이 보안 네트워크(오프라인)에 연결된 외부 가상 스위치와 함께 배포되었다고 가정합니다. 달성하려는 특정 네트워크 구성에 맞춰 다음 단계를 변경할 수 있습니다. EFLOW 다중 NIC 지원에 대한 자세한 내용은 Azure IoT Edge for Linux on Windows 가상 다중 NIC 구성을 참조하세요.

EFLOW VM의 프로비저닝을 완료하고 Azure와 통신하려면 DMZ 네트워크(온라인)에 연결된 또 다른 NIC를 할당해야 합니다.

이 시나리오에서는 DMZ 네트워크에 연결된 ‘외부 가상 스위치’를 할당합니다. 자세한 내용은 Hyper-V 가상 머신에 대한 가상 스위치 만들기를 참조하세요.

외부 가상 스위치를 만들려면 다음 단계를 수행합니다.

  1. 열기 Hyper-v 관리자합니다.
  2. 작업에서 가상 스위치 관리자를 선택합니다.
  3. 가상 스위치 아래에서 새 가상 네트워크 스위치를 선택합니다.
  4. 외부 유형을 선택한 다음, 가상 스위치 만들기를 선택합니다.
  5. 보안 네트워크를 나타내는 이름을 입력합니다. 예를 들어 OnlineOPCUA입니다.
  6. 연결 유형에서 외부 네트워크를 선택한 다음 DMZ 네트워크에 연결된 네트워크 어댑터를 선택합니다.
  7. 적용을 선택합니다.

외부 가상 스위치가 만들어지면 다음 단계를 사용하여 EFLOW VM에 연결해야 합니다. 여러 NIC를 연결해야 하는 경우 EFLOW 다중 NIC를 참조하세요.

만들어진 사용자 지정 새 ‘외부 가상 스위치’에 대해 다음 PowerShell 명령을 사용하여 다음을 수행합니다.

  1. EFLOW VM에 스위치를 연결합니다.

    Add-EflowNetwork -vswitchName "OnlineOPCUA" -vswitchType "External"
    

    OnlineOPCUA라는 외부 네트워크의 성공적인 생성을 보여 주는 스크린샷.

  2. 고정 IP를 설정합니다.

    Add-EflowVmEndpoint -vswitchName "OnlineOPCUA" -vEndpointName "OnlineEndpoint" -ip4Address 192.168.0.103 -ip4PrefixLength 24 -ip4GatewayAddress 192.168.0.1
    

    OnlineOPCUA 스위치의 성공적인 구성 스크린샷.

완료되면 EFLOW VM에 OnlineOPCUA 스위치가 할당됩니다. 여러 NIC 첨부 파일을 확인하려면 다음 단계를 사용합니다.

  1. 관리자 권한으로 실행으로 시작하여 관리자 권한의 PowerShell 세션을 엽니다.

  2. EFLOW 가상 머신에 연결합니다.

    Connect-EflowVm
    
  3. 일단 VM으로 이동했으면 EFLOW 가상 머신에 할당된 모든 네트워크 인터페이스를 나열합니다.

    ifconfig
    
  4. IP 구성을 검토하고 eth0 인터페이스(보안 네트워크에 연결됨) 및 eth1 인터페이스(DMZ 네트워크에 연결됨)가 표시되는지 확인합니다.

    서로 다른 두 네트워크에 연결된 여러 NIC의 IP 구성을 보여 주는 스크린샷.

VM 네트워크 라우팅 구성

EFLOW 다중 NIC 기능을 사용할 때 다른 경로 우선 순위를 설정할 수 있습니다. 기본적으로 EFLOW는 VM에 할당된 ehtX 인터페이스당 하나의 기본 경로를 만듭니다. EFLOW는 기본 경로에 임의 우선 순위를 할당합니다. 모든 인터페이스가 인터넷에 연결되어 있으면 임의의 우선 순위가 문제가 되지 않을 수 있습니다. 그러나 NIC 중 하나가 오프라인 네트워크에 연결된 경우 오프라인 NIC보다 온라인 NIC의 우선 순위를 지정하여 EFLOW VM을 인터넷에 연결할 수 있습니다.

EFLOW는 경로 서비스를 사용하여 네트워크 라우팅 대안을 관리합니다. 사용 가능한 EFLOW VM 경로를 확인하려면 다음 단계를 사용합니다.

  1. 관리자 권한으로 실행으로 시작하여 관리자 권한의 PowerShell 세션을 엽니다.

  2. EFLOW 가상 머신에 연결합니다.

    Connect-EflowVm
    
  3. 일단 VM으로 이동했으면 EFLOW 가상 머신에 구성된 모든 네트워크 경로를 나열합니다.

    sudo route
    

    EFLOW 가상 머신의 라우팅 테이블을 보여 주는 스크린샷.

    이전 이미지는 두 NIC가 할당된 경로 명령 출력(eth0eth1)을 보여 줍니다. 가상 머신은 서로 다른 메트릭을 사용하여 두 개의 서로 다른 기본 대상 규칙을 만듭니다. 메트릭 값이 낮을수록 우선 순위가 높습니다. 이 라우팅 테이블은 이전 단계에서 구성된 네트워킹 시나리오에 따라 달라집니다.

정적 경로 구성

EFLOW VM이 시작될 때마다 네트워킹 서비스는 모든 경로를 다시 만들고 이전에 할당된 우선 순위가 변경될 수 있습니다. 이 문제를 해결하려면 EFLOW VM이 시작될 때마다 각 경로에 대해 원하는 우선 순위를 할당할 수 있습니다. 모든 VM 부팅에서 실행되고 route 명령을 사용하여 원하는 경로 우선 순위를 설정하는 서비스를 만들 수 있습니다.

먼저 경로를 설정하는 데 필요한 명령을 실행하는 bash 스크립트를 만듭니다. 예를 들어 앞에서 언급한 네트워킹 시나리오에 따라 EFLOW VM에는 두 개의 NIC(오프라인 및 온라인 네트워크)가 있습니다. NIC eth0은 게이트웨이 IP xxx.xxx.xxx.xxx를 사용하여 연결됩니다. NIC eth1은 게이트웨이 IP yyy.yyy.yyy.yyy.yyy를 사용하여 연결됩니다.

다음 스크립트는 eth0 및 *eth1 모두에 대한 기본 경로를 초기화한 다음, 원하는 <숫자> 메트릭을 사용하여 경로를 추가합니다. 메트릭 값이 낮을수록 우선 순위가 더 높음을 기억하세요.

#!/bin/sh

# Wait 30s for the interfaces to be up
sleep 30

# Delete previous eth0 route and create a new one with desired metric
sudo ip route del default via xxx.xxx.xxx.xxx dev eth0
sudo route add -net default gw xxx.xxx.xxx.xxx netmask 0.0.0.0 dev eth0 metric <number>

# Delete previous eth1 route and create a new one with desired metric
sudo ip route del default via yyy.yyy.yyy.yyy dev eth1
sudo route add -net default gw yyy.yyy.yyy.yyy netmask 0.0.0.0 dev eth1 metric <number>

이전 스크립트를 사용하여 네트워킹 시나리오와 관련된 사용자 지정 스크립트를 만들 수 있습니다. 스크립트가 정의되면 스크립트를 저장하고 실행 권한을 할당합니다. 예를 들어 스크립트 이름이 route-setup.sh인 경우 sudo chmod +x route-setup.sh 명령을 사용하여 실행 권한을 할당할 수 있습니다. sudo sh ./route-setup.sh 명령을 사용하여 스크립트를 수동으로 실행한 다음 sudo route 명령을 사용하여 라우팅 테이블을 확인하여 스크립트가 제대로 작동하는지 테스트할 수 있습니다.

마지막 단계는 시작 시 실행되고 경로 설정을 위해 bash 스크립트를 실행하는 Linux 서비스를 만드는 것입니다. 서비스를 로드하려면 systemd 단위 파일을 만들어야 합니다. 다음은 해당 파일의 예입니다.

[Unit]
after=network

[Service]
Type=simple
ExecStart=/bin/bash /home/iotedge-user/route-setup.sh

[Install]
WantedBy=default.target

서비스가 작동하는지 확인하려면 EFLOW VM(Stop-EflowVmStart-EflowVm)을 다시 부팅한 다음 Connect-EflowVm을 VM에 연결합니다. sudo route를 사용하여 경로를 나열하고 올바른지 확인합니다. 할당된 메트릭을 사용하여 새 기본 규칙을 볼 수 있어야 합니다.

다음 단계

네트워킹 구성이 올바르게 적용되었는지 확인하려면 Azure IoT Edge for Linux on Windows에 대한 네트워킹을 구성하는 방법의 단계를 따릅니다.