Поделиться через


Создание примера сетевой среды для управления многоуровневой сетью Azure IoT (предварительная версия)

Чтобы использовать службу azure IoT Layered Network Management (preview), необходимо настроить изолированную сетевую среду. Например, архитектура сети ISA-95/Purdue. На этой странице представлено несколько примеров настройки тестовой среды зависит от того, как вы хотите добиться изоляции.

  • Физическая сегментация — сети физически разделены. В этом случае многоуровневое управление сетями (предварительная версия) необходимо развернуть на узле двойного сетевого адаптера (сетевая карта) для подключения как к сети, так и к изолированной сети.
  • Логическая сегментация — сеть логически сегментируется с конфигурациями, такими как виртуальная локальная сеть, подсеть или брандмауэр. Управление многоуровневой сетью имеет одну конечную точку и настроено для отображения собственного сетевого слоя и изолированного слоя.

Оба подхода требуют настройки пользовательского DNS в изолированном сетевом слое, чтобы направить сетевой трафик к экземпляру управления многоуровневой сетью в верхнем слое.

Внимание

Сетевые среды, описанные в документации по управлению многоуровневой сетью, являются примерами тестирования управления многоуровневой сетью. Это не рекомендация по созданию топологии сети и кластера для рабочей среды.

Настройка изолированной сети с помощью физической сегментации

В следующем примере конфигурация является простой изолированной сетью с минимальными физическими устройствами.

Схема конфигурации изолированной сети физического устройства.

  • Точка беспроводного доступа используется для настройки локальной сети и не предоставляет доступ к Интернету.
  • Кластер уровня 4 — это кластер с одним узлом, размещенным на физическом компьютере с двойной сетевой картой ( сетевой картой), который подключается к Интернету и локальной сети.
  • Кластер уровня 3 — это один кластер узлов, размещенный на физическом компьютере. Этот кластер устройств подключается только к локальной сети.

Управление многоуровневыми сетями развертывается в двойном кластере сетевого адаптера. Кластер в локальной сети подключается к многоуровневой системе управления сетями в качестве прокси-сервера для доступа к службам Azure и Arc. Кроме того, потребуется пользовательский DNS в локальной сети для предоставления разрешения доменных имен и указания трафика на управление многоуровневой сетью. Дополнительные сведения см. в разделе "Настройка настраиваемого DNS".

Настройка изолированной сети с логическим сегментированием

На следующей схеме показана изолированная сетевая среда, в которой каждый уровень логически сегментирован подсетями. В этой тестовой среде на каждом уровне существует несколько кластеров. Кластеры могут быть AKS Edge Essentials или K3S. Кластер Kubernetes в сети уровня 4 имеет прямой доступ к Интернету. Кластеры Kubernetes уровня 3 и ниже не имеют доступа к Интернету.

Схема изолированной сети логической сегментации.

Несколько уровней сетей в этой настройке теста выполняются с помощью подсетей в сети:

  • Подсеть уровня 4 (10.104.0.0/16) — эта подсеть имеет доступ к Интернету. Все запросы отправляются в места назначения в Интернете. Эта подсеть имеет один компьютер с Windows 11 с IP-адресом 10.104.0.10.
  • Подсеть уровня 3 (10.103.0.0/16) — эта подсеть не имеет доступа к Интернету и настроена только для доступа к IP-адресу 10.104.0.10 на уровне 4. Эта подсеть содержит компьютер с Windows 11 с IP-адресом 10.103.0.33 и компьютером Linux, на котором размещен DNS-сервер. DNS-сервер настраивается с помощью шагов, описанных в разделе "Настройка пользовательского DNS". Все домены в конфигурации DNS должны быть сопоставлены с адресом 10.104.0.10.
  • Подсеть уровня 2 (10.102.0.0/16) — как и уровень 3, эта подсеть не имеет доступа к Интернету. Он настроен только для доступа к IP-адресу 10.103.0.33 на уровне 3. Эта подсеть содержит компьютер с Windows 11 с IP-адресом 10.102.0.28 и компьютером Linux, на котором размещен DNS-сервер. В этой сети есть один компьютер Windows 11 (узел) с IP-адресом 10.102.0.28. Все домены в конфигурации DNS должны быть сопоставлены с адресом 10.103.0.33.

См. следующие примеры настройки этого типа сетевой среды.

Пример логической сегментации с минимальным оборудованием

В этом примере оба компьютера подключены к точке доступа (AP), которая подключается к Интернету. Компьютер узла уровня 4 может получить доступ к Интернету. Узел уровня 3 заблокирован для доступа к Интернету с конфигурацией AP. Например, брандмауэр или элемент управления клиентом. Так как оба компьютера находятся в одной сети, экземпляр управления многоуровневой сетью, размещенный на уровне 4 кластера, по умолчанию отображается на уровне 3 компьютера и кластера. Необходимо настроить дополнительный пользовательский DNS в локальной сети, чтобы предоставить разрешение доменных имен и указать трафик на управление многоуровневой сетью. Дополнительные сведения см. в разделе "Настройка настраиваемого DNS".

Схема логической конфигурации изолированной сети.

Пример логической сегментации в Azure

В этом примере тестовая среда создается с виртуальной сетью и виртуальной машиной Linux в Azure.

Внимание

Виртуальная среда предназначена только для изучения и оценки. Дополнительные сведения см . в поддерживаемых средах для операций Интернета вещей Azure.

  1. Создайте виртуальную сеть в подписке Azure. Создайте подсети по крайней мере для двух уровней (уровень 4 и уровень 3). Снимок экрана: виртуальная сеть в Azure.
  2. Для удаленного доступа к компьютеру или компьютеру разработчика можно создать дополнительную подсеть для удаленного доступа к компьютеру или кластеру на разных уровнях. Эта настройка удобна, если планируется создать более двух сетевых слоев. В противном случае можно подключить компьютер jumpbox к сети уровня 4.
  3. Создайте группы безопасности сети для каждого уровня и подключитесь к подсети соответствующим образом.
  4. Значение по умолчанию можно использовать для группы безопасности уровня 4.
  5. Необходимо настроить дополнительные правила для входящего и исходящего трафика для группы безопасности уровня 3 (и более низкого уровня).
    • Добавьте правила безопасности для входящего и исходящего трафика, чтобы запретить весь сетевой трафик.
    • При более высоком приоритете добавьте правила безопасности для входящего и исходящего трафика, чтобы разрешить сетевой трафик и из диапазона IP-адресов подсети уровня 4.
    • [Необязательно] Если вы создаете подсеть jumpbox , создайте правила для входящих и исходящих подключений для разрешения трафика в эту подсеть и из нее. Снимок экрана: группа безопасности уровня 3.
  6. Создайте виртуальные машины Linux на уровне 3 и уровне 4.
    • Ознакомьтесь с поддерживаемыми средами для спецификации виртуальной машины.
    • При создании виртуальной машины подключите компьютер к подсети, созданной на предыдущих шагах.
    • Пропустите создание группы безопасности для виртуальной машины.

Настройка пользовательской службы DNS

Для уровня 3 и ниже требуется пользовательский DNS. Это гарантирует, что разрешение DNS для сетевого трафика, исходного в кластере, указывает на экземпляр управления многоуровневой сетью родительского уровня. В существующей или рабочей среде включите следующие разрешения DNS в структуру DNS. Если вы хотите настроить тестовую среду для службы управления многоуровневой сетью и операций Интернета вещей Azure, см. следующие примеры.

Настройка CoreDNS

Хотя настройка DNS может быть достигнута различными способами, в этом примере используется механизм расширения, предоставляемый CoreDNS, который является DNS-сервером по умолчанию для кластеров K3S. URL-адреса в списке разрешений, которые необходимо разрешить, добавляются в CoreDNS.

Внимание

Подход CoreDNS применим только к кластеру K3S на узле Ubuntu на уровне 3.

Создание конфигурации на уровне 4 уровня управления сетями

После готовности кластера уровня 4 и многоуровневого управления сетями выполните следующие действия.

  1. Подтвердите IP-адрес службы управления многоуровневой сетью с помощью следующей команды:

    kubectl get services -n azure-iot-operations
    

    Полученный результат должен выглядеть примерно так: IP-адрес службы 20.81.111.118.

    NAME          TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
    lnm-level4   LoadBalancer   10.0.141.101   20.81.111.118   80:30960/TCP,443:31214/TCP   29s
    
  2. Просмотрите карты конфигурации с помощью следующей команды:

    kubectl get cm -n azure-iot-operations
    

    Выходные данные должны выглядеть следующим образом:

    NAME                           DATA   AGE
    aio-lnm-level4-config          1      50s
    aio-lnm-level4-client-config   1      50s
    
  3. aio-lnm-level4-client-configНастройка . Эта конфигурация необходима в рамках настройки уровня 3 для пересылки трафика из кластера уровня 3 в экземпляр управления сетью верхнего уровня.

    # set the env var PARENT_IP_ADDR to the ip address of level 4 LNM instance.
      export PARENT_IP_ADDR="20.81.111.118"
    
    # run the script to generate a config map yaml
      kubectl get cm aio-lnm-level4-client-config -n azure-iot-operations -o yaml | yq eval '.metadata = {"name": "coredns-custom", "namespace": "kube-system"}' -| sed 's/PARENT_IP/'"$PARENT_IP_ADDR"'/' > configmap-custom-level4.yaml
    

    На этом шаге создается файл с именем configmap-custom-level4.yaml

Настройка уровня 3 CoreDNS K3S

После настройки кластера K3S и перемещения его на изолированный уровень 3 настройте уровень 3 K3S CoreDNS с настраиваемой конфигурацией клиента, созданной ранее.

  1. configmap-custom-level4.yaml Скопируйте узел уровня 3 или в систему, где вы удаленно обращаетесь к кластеру.

  2. Выполните следующие команды:

    # Create a config map called coredns-custom in the kube-system namespace
    kubectl apply -f configmap-custom-level4.yaml
    
    # Restart coredns
    kubectl rollout restart deployment/coredns -n kube-system
    
    # validate DNS resolution
    kubectl run -it --rm --restart=Never busybox --image=busybox:1.28 -- nslookup east.servicebus.windows.net
    
    # You should see the following output.
    kubectl run -it --rm --restart=Never busybox --image=busybox:1.28 -- nslookup east.servicebus.windows.net
    Server:    10.43.0.10
    Address 1: 10.43.0.10 kube-dns.kube-system.svc.cluster.local
    
    Name:      east.servicebus.windows.net
    Address 1: 20.81.111.118
    pod "busybox" deleted
    
    # Note: confirm that the resolved ip address matches the ip address of the level 4 Layered Network Management instance.
    
  3. Предыдущий шаг задает конфигурацию DNS для разрешения разрешенных URL-адресов внутри кластера на уровень 4. Чтобы убедиться, что DNS за пределами кластера выполняется так же, необходимо настроить системное разрешение для пересылки трафика в CoreDNS внутри кластера K3S. Выполните следующие команды на узле K3S: создайте следующий каталог:

        sudo mkdir /etc/systemd/resolved.conf.d
    

    Создайте файл с именем lnm.conf со следующим содержимым. IP-адрес должен быть IP-адресом кластера уровня 3 службы kube-dns, работающей в пространстве имен kube-system.

    [Resolve]
    DNS=<PUT KUBE-DNS SERVICE IP HERE> 
    DNSStubListener=no
    

    Перезапустите сопоставитель DNS:

    sudo systemctl restart systemd-resolved
    

Что такое управление сетью с уровнем интернета вещей Azure?