Настройка устройства IoT Edge для обмена данными через прокси-сервер
Область применения: IoT Edge 1.5 IoT Edge 1.4
Внимание
Поддерживаются выпуски IoT Edge 1.5 LTS и IoT Edge 1.4 LTS. IoT Edge 1.4 LTS заканчивается жизнью 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.
Устройства IoT Edge отправляют HTTPS-запросы для обмена данными с центром IoT. Если устройство подключено к сети, использующую прокси-сервер, необходимо настроить среду выполнения IoT Edge для обмена данными через сервер. Прокси-серверы также могут повлиять на отдельные модули IoT Edge, если они делают HTTP или HTTPS-запросы, которые вы не перенаправили через центр IoT Edge.
В этой статье описаны четыре этапа для настройки и управления устройства IoT Edge через прокси-сервер.
Установка среды выполнения IoT Edge на устройстве
Скрипты для установки IoT Edge загружают пакеты и файлы из Интернета, чтобы ваше устройство могло выполнять запросы через прокси-сервер. На устройствах под управлением Windows скрипт поддерживает автономную установку.
На этом этапе вам предстоит настроить устройство IoT Edge для дальнейшего использования. Эти же подключения также требуются при обновлении среды выполнения IoT Edge.
Настройка IoT Edge и среды выполнения контейнеров на устройстве
IoT Edge обеспечивает обмен данными с Центром Интернета вещей. Для управления контейнерами эта среда выполнения обменивается данными с реестрами контейнеров. Оба этих компонента выполняют веб-запросы через прокси-сервер.
На этом этапе вам предстоит настроить устройство IoT Edge для дальнейшего использования.
Настройка свойств агента IoT Edge в файле конфигурации на вашем устройстве
Управляющая программа IoT Edge запускает модуль edgeAgent. Затем модуль edgeAgent извлекает манифест развертывания из Центра Интернета вещей и запускает все остальные модули. Настройте переменные среды среды модуля EdgeAgent вручную на самом устройстве, чтобы агент IoT Edge смог установить начальное подключение к Центр Интернета вещей. После того как исходное соединение будет установлено, вы сможете настроить модуль edgeAgent удаленно.
На этом этапе вам предстоит настроить устройство IoT Edge для дальнейшего использования.
-
После настройки и подключения устройства IoT Edge к Центр Интернета вещей через прокси-сервер необходимо сохранить подключение во всех будущих развертываниях модулей.
Это непрерывный процесс, который выполняется удаленно, благодаря чему каждый новый модуль или обновление развертывания поддерживает функцию обмена данными через прокси-сервер.
Узнайте URL-адрес своего прокси-сервера
Прежде чем приступать к описанным здесь действиям, вам необходимо узнать URL-адрес прокси-сервера.
URL-адрес прокси-сервера имеет такой формат: протокол://узел прокси-сервера:порт прокси-сервера.
Используется протокол HTTP или HTTPS. Управляющая программа Docker может использовать любой из протоколов, в зависимости от параметров реестра контейнеров, но для подключения управляющей программы IoT Edge и контейнеров среды выполнения к прокси-серверу всегда следует использовать протокол HTTP.
Узел прокси-сервера — это адрес прокси-сервера. Если прокси-сервер требует проверки подлинности, можно указать учетные данные в параметре "узел прокси-сервера" в следующем формате: пользователь:пароль@узел прокси-сервера.
Порт прокси-сервера — это сетевой порт, по которому прокси-сервер отвечает на сетевой трафик.
Установка IoT Edge через прокси-сервер
Вне зависимости от того, под управлением какой ОС работает ваше устройство IoT Edge — будь то Windows или Linux, — вам необходим доступ к пакетам установки через прокси-сервер. Установите среду выполнения IoT Edge через прокси-сервер, следуя инструкциям для своей операционной системы.
Устройства Linux
При установке среды выполнения IoT Edge на устройстве Linux настройте в диспетчере пакетов прохождение через прокси-сервер для доступа к пакету установки. Например, настройте apt-get для использования прокси-сервера HTTP. После настройки диспетчера пакетов следуйте инструкциям в статье "Установка среды выполнения Azure IoT Edge как обычно".
Устройства Windows, использующие IoT Edge для Linux в Windows
Если вы устанавливаете среду выполнения IoT Edge с помощью IoT Edge для Linux в Windows, IoT Edge по умолчанию устанавливается на виртуальной машине Linux. Для установки или обновления других действий не требуется.
Устройства Windows, использующие контейнеры Windows
При установке среды выполнения IoT Edge на устройстве Windows понадобится дважды установить соединение с прокси-сервером. При первом подключении загружается файл сценария установщика, а при втором подключении при установке загружаются необходимые компоненты. Сведения о прокси-сервере можно настроить в параметрах Windows или включить непосредственно в команды PowerShell.
Ниже описан пример установки в Windows с помощью аргумента -proxy
.
Для доступа к сценарию установщика команде Invoke-WebRequest требуются сведения о прокси-сервере. Затем команде Deploy-IoTEdge требуются сведения о прокси-сервере для загрузки файлов установки.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>
Команде Initialize-IoTEdge не нужно проходить через прокси-сервер, поэтому на втором шаге сведения о прокси-сервере требуются только для Invoke-WebRequest.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Initialize-IoTEdge
Если у вас есть сложные учетные данные для прокси-сервера, который нельзя включить в URL-адрес, используйте -ProxyCredential
параметр в -InvokeWebRequestParameters
пределах. Например,
$proxyCredential = (Get-Credential).GetNetworkCredential()
. {Invoke-WebRequest -proxy <proxy URL> -ProxyCredential $proxyCredential -useb aka.ms/iotedge-win} | Invoke-Expression; `
Deploy-IoTEdge -InvokeWebRequestParameters @{ '-Proxy' = '<proxy URL>'; '-ProxyCredential' = $proxyCredential }
Дополнительные сведения о параметрах прокси-сервера см. в статье Invoke-WebRequest.
Настройка IoT Edge и Moby
IoT Edge работает с помощью двух управляющих программ, выполняющихся на устройстве IoT Edge. Управляющая программа Moby создает веб-запросы для получения образов контейнеров из реестров контейнеров. Управляющая программа IoT Edge отправляет HTTPS-запросы для обмена данными с центром IoT.
Чтобы использовать прокси-сервер для текущих функций устройств, необходимо настроить как управляющей программы Moby, так и управляющей программы IoT Edge. Эта настройка выполняется на устройстве IoT Edge во время первоначальной конфигурации устройства.
Управляющая программа Moby
Поскольку Moby создан на базе Docker, инструкции по настройке переменных среды для управляющей программы Moby см. в документации Docker. Большинство реестров контейнеров (включая DockerHub и реестры контейнеров Azure) поддерживают HTTPS-запросы, поэтому необходимо задать параметр HTTPS_PROXY. Если вы извлекаете образы из реестра, который не поддерживает протокол TLS, необходимо задать параметр HTTP_PROXY.
Выберите статью, содержащую инструкцию для операционной системы вашего устройства IoT Edge.
- Настройка управляющей программы Docker в Linux Управляющая программа Moby на устройствах Linux оставляет себе имя Docker.
- Настройка управляющей программы Docker в Windows Управляющая программа Moby на устройствах Windows называется iotedge-moby. У управляющих программ разные имена, поскольку Docker и Moby можно запустить одновременно на одном устройстве Windows.
Управляющая программа IoT Edge
Управляющая программа IoT Edge аналогична управляющей программе Moby. Создайте переменную среды для службы, выполнив указанные ниже действия с учетом своей операционной системы.
Для отправки запросов в Центр Интернета вещей управляющая программа IoT Edge всегда использует протокол HTTPS.
Linux
Откройте редактор в терминале, чтобы настроить управляющую программу IoT Edge.
sudo systemctl edit aziot-edged
Введите следующий текст, заменив <URL-адрес> прокси-сервера адресом и портом прокси-сервера. Сохранитесь и закройте редактор.
[Service]
Environment="https_proxy=<proxy URL>"
Начиная с версии 1.2, IoT Edge использует службу идентификации IoT для подготовки устройств к добавлению в Центр Интернета вещей. Откройте редактор в терминале и настройте управляющую программу службы идентификации.
sudo systemctl edit aziot-identityd
Введите следующий текст, заменив <URL-адрес> прокси-сервера адресом и портом прокси-сервера. Сохранитесь и закройте редактор.
[Service]
Environment="https_proxy=<proxy URL>"
Обновите диспетчер служб, чтобы получить новые конфигурации.
sudo systemctl daemon-reload
Перезапустите системные службы IoT Edge, чтобы изменения обеих управляющих программ вступили в силу.
sudo iotedge system restart
Убедитесь, что переменные среды и новая конфигурация присутствуют.
systemctl show --property=Environment aziot-edged
systemctl show --property=Environment aziot-identityd
Устройства Windows, использующие IoT Edge для Linux в Windows
Войдите в IoT Edge для Linux на виртуальной машине Windows:
Connect-EflowVm
Выполните те же действия, что и в разделе Linux этой статьи, чтобы настроить управляющая программа IoT Edge.
Windows с использованием контейнеров Windows
Откройте окно PowerShell от имени администратора и выполните следующую команду, чтобы внести изменения в реестр с помощью новой переменной среды. Замените <URL-адрес прокси-сервера адресом> и портом прокси-сервера.
reg add HKLM\SYSTEM\CurrentControlSet\Services\iotedge /v Environment /t REG_MULTI_SZ /d https_proxy=<proxy URL>
Перезапустите IoT Edge, чтобы изменения вступили в силу.
Restart-Service iotedge
Настройка агента IoT Edge
Агент IoT Edge — это первый модуль, который нужно запустить на любом устройстве IoT Edge. Этот модуль начинается в первый раз на основе сведений в файле конфигурации IoT Edge. Затем агент IoT Edge подключается к Центр Интернета вещей для получения манифестов развертывания. Манифест объявляет, какие другие модули должны развертывать устройство.
Эта настройка выполняется один раз на устройстве IoT Edge во время первоначальной конфигурации устройства.
Откройте файл конфигурации на устройстве IoT Edge:
/etc/aziot/config.toml
. Для доступа к файлу конфигурации требуются права администратора. Прежде чем открывать файл в предпочтительном текстовом редакторе в системах Linux, выполните командуsudo
.В файле конфигурации найдите
[agent]
раздел, где содержатся все сведения о конфигурации для запуска модуля edgeAgent. Убедитесь, что[agent]
раздел находится без комментариев.[agent]
Если раздел отсутствует, добавьте его в разделconfig.toml
. Определение агента IoT Edge включает подраздел[agent.env]
, в который можно добавить переменные среды.Добавьте параметр https_proxy в раздел переменных среды, а в качестве его значения укажите URL-адрес прокси-сервера.
[agent] name = "edgeAgent" type = "docker" [agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" # "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
По умолчанию среда выполнения IoT Edge использует AMQP для обмена данными с центром IoT. Некоторые прокси-серверы блокируют порты AMQP. Если это так, настройте edgeAgent на использование протокола AMQP через WebSocket. Раскомментируйте параметр
UpstreamProtocol
.[agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
Добавьте параметр https_proxy в раздел переменных среды, а в качестве его значения укажите URL-адрес прокси-сервера.
[agent] name = "edgeAgent" type = "docker" [agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" # "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
По умолчанию среда выполнения IoT Edge использует AMQP для обмена данными с центром IoT. Некоторые прокси-серверы блокируют порты AMQP. Если это так, настройте edgeAgent на использование протокола AMQP через WebSocket. Раскомментируйте параметр
UpstreamProtocol
.[agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5" [agent.env] # "RuntimeLogLevel" = "debug" "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"
Сохраните изменения и закройте редактор. Примените недавние изменения.
sudo iotedge config apply
Убедитесь, что параметры прокси-сервера распространяются в
docker inspect edgeAgent
Env
разделе. В противном случае необходимо повторно создать контейнер.sudo docker rm -f edgeAgent
Среда выполнения IoT Edge должна воссоздать
edgeAgent
в течение минуты.edgeAgent
После повторного запуска контейнера используйтеdocker inspect edgeAgent
команду, чтобы убедиться, что параметры прокси-сервера соответствуют файлу конфигурации.
Настройка манифестов развертывания
После настройки устройства IoT Edge для работы с прокси-сервером объявите переменную среды HTTPS_PROXY в будущих манифестах развертывания. Редактировать манифесты развертывания можно либо с помощью мастера на портале Azure, либо напрямую в файле манифеста развертывания в формате JSON.
Всегда настраивайте два модуля среды выполнения, edgeAgent и edgeHub, для связи через прокси-сервер, чтобы они могли поддерживать соединение с Центром Интернета вещей. Если вы удалите сведения о прокси-сервере из модуля edgeAgent, то для восстановления подключения вам необходимо будет внести изменения в файл конфигурации на устройстве, как это описано в предыдущем разделе.
Конфигурация прокси-сервера может понадобиться и на других модулях, помимо edgeAgent и edgeHub. Если модулям нужен доступ не только к Центру Интернета вещей, но и другим ресурсам Azure, например хранилищу BLOB-объектов, в файле манифеста развертывания должна быть указана переменная HTTPS_PROXY.
Следующая процедура выполняется посредством устройства IoT Edge.
Портал Azure
Когда вы создаете развертывания для устройств IoT Edge с помощью мастера Настройка модулей, каждый модуль включает раздел Переменные среды, где вы можете настроить подключения прокси-сервера.
Чтобы настроить агент IoT Edge и модули центра IoT Edge, выберите пункт Параметры среды выполнения в первом шаге мастера.
Добавьте переменную среды https_proxy в определения параметров среды выполнения модуля IoT Edge и агента IoT Edge. Если вы добавили переменную среды UpstreamProtocol в файл конфигурации на устройстве IoT Edge, добавьте ее также в определение модуля агента IoT Edge.
Все остальные модули, добавляемые в манифест развертывания, должны соответствовать той же схеме. Щелкните Применить, чтобы сохранить изменения.
Файлы манифеста развертывания JSON
Если вы создаете развертывания для устройств IoT Edge с помощью шаблонов в Visual Studio Code или путем создания JSON-файлов вручную, вы можете добавить переменные среды в определение каждого модуля напрямую. Если вы не добавили их в портал Azure, добавьте их в файл манифеста JSON. Замените <proxy URL>
собственным значением.
Используйте следующий формат JSON:
"env": {
"https_proxy": {
"value": "<proxy URL>"
}
}
С переменными среды определение модуля должно выглядеть как в следующем примере центра Edge:
"edgeHub": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.5",
"createOptions": "{}"
},
"env": {
"https_proxy": {
"value": "http://proxy.example.com:3128"
}
},
"status": "running",
"restartPolicy": "always"
}
Если вы добавили переменную среды UpstreamProtocol в файл config.yaml на устройстве IoT Edge, добавьте ее также в определение модуля агента IoT Edge.
"env": {
"https_proxy": {
"value": "<proxy URL>"
},
"UpstreamProtocol": {
"value": "AmqpWs"
}
}
Работа с прокси-серверами для проверки трафика
Некоторые прокси-серверы, такие как Zscaler , могут проверять зашифрованный TLS-трафик. Во время проверки трафика TLS сертификат, возвращаемый прокси-сервером, не является сертификатом с целевого сервера, а сертификатом, подписанным собственным корневым сертификатом прокси-сервера. По умолчанию модули IoT Edge (включая edgeAgent и edgeHub) не доверяют сертификату этого прокси-сервера, а подтверждение TLS завершается ошибкой.
Чтобы устранить сбой подтверждения, настройте модули операционной системы и IoT Edge, чтобы доверять корневому сертификату прокси-сервера, выполнив следующие действия.
Настройте прокси-сертификат в доверенном корневом хранилище сертификатов операционной системы узла. Дополнительные сведения об установке корневого сертификата см. в разделе "Установка корневого ЦС" в хранилище сертификатов ОС.
Настройте устройство IoT Edge для обмена данными через прокси-сервер, ссылаясь на сертификат в пакете доверия. Дополнительные сведения о настройке пакета доверия см. в разделе Управление доверенным корневым ЦС (пакетом доверия).
Чтобы настроить поддержку прокси-сервера проверки трафика для контейнеров, не управляемых IoT Edge, обратитесь к поставщику прокси-сервера.
Полные доменные имена (FQDN) назначений, с которыми взаимодействует IoT Edge
Если брандмауэр прокси-сервера требует добавить все полные доменные имена в список разрешений для подключения к Интернету, просмотрите список из списка разрешений подключения с устройств IoT Edge, чтобы определить, какие полные доменные имена необходимо добавить.
Следующие шаги
Дополнительные сведения о ролях см. в статье о среде выполнения IoT Edge.
Информацию об устранении ошибок при установке и настройке см. в статье Распространенные проблемы и их решения для Azure IoT Edge.