Mengonfigurasi perangkat IoT Edge untuk berkomunikasi melalui server proksi
Berlaku untuk ikon:
IoT Edge 1.1 Versi lain: IoT Edge 1.2, IoT Edge 1.3
Berlaku untuk:
IoT Edge 1.2
IoT Edge 1.3 Versi lain:IoT Edge 1.1
Perangkat IoT Edge mengirim permintaan HTTPS untuk berkomunikasi dengan IoT Hub. Jika perangkat Anda tersambung ke jaringan yang menggunakan server proksi, Anda perlu mengonfigurasi runtime IoT Edge untuk berkomunikasi melalui server. Server proksi juga dapat memengaruhi modul IoT Edge individual jika membuat permintaan HTTP atau HTTPS yang tidak dirutekan melalui hub IoT Edge.
Artikel ini membahas empat langkah berikut untuk dikonfigurasi, lalu mengelola perangkat IoT Edge di belakang server proksi:
Menginstal runtime IoT Edge di perangkat Anda
Skrip instalasi IoT Edge menarik paket dan file dari internet, sehingga perangkat Anda perlu berkomunikasi melalui server proksi untuk membuat permintaan tersebut. Untuk perangkat Windows, skrip instalasi juga menyediakan opsi instalasi offline.
Langkah ini adalah proses sekali untuk mengonfigurasi perangkat IoT Edge saat pertama kali mengaturnya. Koneksi yang sama juga diperlukan saat Anda memperbarui runtime IoT Edge.
Mengonfigurasi IoT Edge dan runtime kontainer di perangkat Anda
IoT Edge bertanggung jawab atas komunikasi dengan IoT Hub. Runtime kontainer bertanggung jawab atas manajemen kontainer, sehingga berkomunikasi dengan registri kontainer. Kedua komponen ini perlu membuat permintaan web melalui server proksi.
Langkah ini adalah proses sekali untuk mengonfigurasi perangkat IoT Edge saat pertama kali mengaturnya.
Mengonfigurasi properti agen IoT Edge dalam file konfigurasi di perangkat Anda
Daemon IoT Edge pada awalnya memulai modul edgeAgent. Kemudian, modul edgeAgent mengambil manifes penyebaran dari IoT Hub dan memulai semua modul lainnya. Agar agen IoT Edge dapat membuat koneksi awal ke IoT Hub, konfigurasikan variabel lingkungan modul edgeAgent secara manual pada perangkat itu sendiri. Setelah koneksi awal, Anda dapat mengonfigurasi modul edgeAgent dari jarak jauh.
Langkah ini adalah proses sekali untuk mengonfigurasi perangkat IoT Edge saat pertama kali mengaturnya.
-
Setelah perangkat IoT Edge disiapkan dan tersambung ke IoT Hub melalui server proksi, Anda perlu mempertahankan koneksi di semua penyebaran modul di masa mendatang.
Langkah ini adalah proses berjalan yang dilakukan dari jarak jauh sehingga setiap modul atau pembaruan penyebaran baru akan mempertahankan kemampuan perangkat untuk berkomunikasi melalui server proksi.
Mengetahui URL proksi Anda
Sebelum memulai salah satu langkah dalam artikel ini, Anda perlu mengetahui URL proksi Anda.
URL proksi mengambil format berikut: protokol://proxy_host:proxy_port.
Protokol ini adalah HTTP atau HTTPS. Daemon Docker dapat menggunakan salah satu protokol, bergantung pada pengaturan registri kontainer Anda, tetapi daemon IoT Edge dan kontainer runtime harus selalu menggunakan HTTP agar tersambung ke proksi.
Aplikasi proxy_host adalah alamat untuk server proksi. Jika server proksi Anda memerlukan autentikasi, Anda dapat menyediakan kredensial Anda sebagai bagian dari host proksi dengan format berikut: pengguna:kata sandi@proxy_host.
Sistem proxy_port adalah port jaringan tempat proksi merespons lalu lintas jaringan.
Menginstal IoT Edge melalui proksi
Baik perangkat IoT Edge Anda berjalan di Windows maupun Linux, Anda perlu mengakses paket instalasi melalui server proksi. Bergantung pada sistem operasi Anda, ikuti langkah-langkah untuk menginstal runtime IoT Edge melalui server proksi.
Perangkat Linux
Jika Anda menginstal runtime IoT Edge di perangkat Linux, konfigurasikan pengelola paket agar berjalan melalui server proksi untuk mengakses paket instalasi. Misalnya Siapkan apt-get untuk menggunakan http-proxy. Setelah pengelola paket dikonfigurasi, ikuti instruksi di Menginstal runtime Azure IoT Edge seperti biasa.
Perangkat Windows yang menggunakan IoT Edge untuk Linux di Windows
Jika Anda menginstal runtime IoT Edge menggunakan IoT Edge untuk Linux di Windows, IoT Edge akan diinstal secara default pada komputer virtual Linux Anda. Tidak diperlukan langkah-langkah penginstalan atau pembaruan tambahan.
Perangkat Windows yang menggunakan kontainer Windows
Jika menginstal runtime IoT Edge pada perangkat Windows, Anda harus melalui server proksi dua kali. Koneksi pertama adalah mengunduh file skrip penginstal, dan koneksi kedua adalah selama instalasi untuk mengunduh komponen yang diperlukan. Anda dapat mengonfigurasi informasi proksi di pengaturan Windows, atau menyertakan informasi proksi Anda secara langsung di perintah PowerShell.
Langkah-langkah berikut menunjukkan contoh penginstalan windows menggunakan argumen -proxy:
Perintah Cabut-WebRequest memerlukan informasi proksi untuk mengakses skrip penginstal. Kemudian, perintah Sebarkan-IoTEdge membutuhkan informasi proksi untuk mengunduh file instalasi.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Deploy-IoTEdge -proxy <proxy URL>Perintah Inisialisasi-IoTEdge tidak perlu melalui server proksi, sehingga langkah kedua hanya memerlukan informasi proksi untuk Cabut-WebRequest.
. {Invoke-WebRequest -proxy <proxy URL> -useb aka.ms/iotedge-win} | Invoke-Expression; Initialize-IoTEdge
Jika Anda memiliki kredensial rumit untuk server proksi yang tidak dapat disertakan dalam URL, gunakan parameter -ProxyCredential dalam -InvokeWebRequestParameters. Misalnya,
$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 }
Untuk informasi selengkapnya tentang parameter proksi, lihat Cabut-WebRequest. Untuk informasi selengkapnya tentang parameter penginstalan Windows, lihat Skrip PowerShell untuk IoT Edge di Windows.
Mengonfigurasi IoT Edge dan Moby
IoT Edge mengandalkan dua daemon yang berjalan pada perangkat IoT Edge. Daemon Moby membuat permintaan web untuk menarik gambar kontainer dari registri kontainer. Daemon IoT Edge membuat permintaan web untuk berkomunikasi dengan IoT Hub.
Baik daemon Moby maupun IoT Edge perlu dikonfigurasi untuk menggunakan server proksi agar perangkat yang sedang berjalan dapat berfungsi. Langkah ini terjadi pada perangkat IoT Edge selama pengaturan perangkat awal.
Daemon Moby
Karena Moby dibangun di Docker, lihat dokumentasi Docker untuk mengonfigurasi daemon Moby dengan variabel lingkungan. Sebagian besar registri kontainer (termasuk Registri Kontainer DockerHub dan Azure) mendukung permintaan HTTPS, sehingga parameter yang harus Anda tetapkan adalah HTTPS_PROXY. Jika Anda menarik gambar dari registri yang tidak mendukung keamanan lapisan transport (TLS), Anda harus mengatur parameter HTTP_PROXY.
Pilih artikel yang berlaku untuk sistem operasi perangkat IoT Edge Anda:
- Mengonfigurasi daemon Docker di Linux Daemon Moby di perangkat Linux menggunakan nama Docker.
- Mengonfigurasi daemon Docker di Windows Daemon Moby pada perangkat Windows disebut iotedge-moby. Nama-nama tersebut berbeda karena dimungkinkan untuk menjalankan Docker Desktop dan Moby secara paralel pada perangkat Windows.
Daemon IoT Edge
Daemon IoT Edge dikonfigurasi dengan cara yang mirip dengan daemon Moby. Gunakan langkah-langkah berikut untuk mengatur variabel lingkungan untuk layanan, berdasarkan sistem operasi Anda.
Daemon IoT Edge selalu menggunakan HTTPS untuk mengirim permintaan ke IoT Hub.
Linux
Buka editor di terminal untuk mengonfigurasi daemon IoT Edge.
sudo systemctl edit iotedge
Masukkan teks berikut, ganti <URL> proksi dengan alamat server proksi dan port Anda. Kemudian, simpan dan keluar.
[Service]
Environment=https_proxy=<proxy URL>
Refresh pengelola layanan untuk mengambil konfigurasi baru untuk IoT Edge.
sudo systemctl daemon-reload
Mulai ulang IoT Edge agar perubahan diterapkan.
sudo systemctl restart iotedge
Pastikan variabel lingkungan Anda telah dibuat, dan konfigurasi baru telah dimuat.
systemctl show --property=Environment iotedge
Buka editor di terminal untuk mengonfigurasi daemon IoT Edge.
sudo systemctl edit aziot-edged
Masukkan teks berikut, ganti <URL> proksi dengan alamat server proksi dan port Anda. Kemudian, simpan dan keluar.
[Service]
Environment=https_proxy=<proxy URL>
Mulai versi 1.2, IoT Edge menggunakan layanan identitas IoT untuk menangani provisi perangkat dengan IoT Hub atau IoT Hub Device Provisioning Service. Buka editor di terminal untuk mengonfigurasi daemon layanan identitas IoT.
sudo systemctl edit aziot-identityd
Masukkan teks berikut, ganti <URL> proksi dengan alamat server proksi dan port Anda. Kemudian, simpan dan keluar.
[Service]
Environment=https_proxy=<proxy URL>
Refresh pengelola layanan untuk mengambil konfigurasi baru.
sudo systemctl daemon-reload
Mulai ulang layanan sistem IoT Edge agar perubahan pada kedua daemon diterapkan.
sudo iotedge system restart
Pastikan variabel lingkungan Anda telah dibuat, dan konfigurasi baru telah dimuat.
systemctl show --property=Environment aziot-edged
systemctl show --property=Environment aziot-identityd
Windows menggunakan IoT Edge untuk Linux di Windows
Masuk ke IoT Edge untuk Linux di komputer virtual Windows:
Connect-EflowVm
Ikuti langkah-langkah yang sama seperti bagian Linux di atas untuk mengonfigurasi daemon IoT Edge.
Windows yang menggunakan kontainer Windows
Buka jendela PowerShell sebagai administrator dan jalankan perintah berikut untuk mengedit registri dengan variabel lingkungan baru. Ganti <url> proksi dengan alamat dan port server proksi Anda.
reg add HKLM\SYSTEM\CurrentControlSet\Services\iotedge /v Environment /t REG_MULTI_SZ /d https_proxy=<proxy URL>
Mulai ulang IoT Edge agar perubahan diterapkan.
Restart-Service iotedge
Mengonfigurasi agen IoT Edge
Agen IoT Edge adalah modul pertama yang dimulai pada perangkat IoT Edge mana pun. Agen ini dimulai untuk pertama kalinya berdasarkan informasi dalam file konfigurasi IoT Edge. Agen IoT Edge kemudian tersambung ke IoT Hub untuk mengambil manifes penyebaran, yang menyatakan modul lain apa yang harus digunakan pada perangkat.
Langkah ini terjadi sekali pada perangkat IoT Edge selama pengaturan perangkat awal.
Buka file config.yaml pada perangkat IoT Edge Anda. Pada sistem Linux, file ini terletak di /etc/iotedge/config.yaml. Pada sistem Windows, file ini terletak di C:\ProgramData\iotedge\config.yaml. File konfigurasi dilindungi, sehingga Anda memerlukan hak administratif untuk mengaksesnya. Pada sistem Linux, gunakan perintah
sudosebelum membuka file di editor teks pilihan Anda. Di Windows, buka editor teks seperti Notepad sebagai administrator, lalu buka file.Dalam file config.yaml, temukan bagian Spesifikasi modul Agen Edge. Definisi agen IoT Edge mencakup parameter env tempat Anda dapat menambahkan variabel lingkungan.
Hapus tanda kurung yang merupakan tempat penampung untuk parameter env, dan tambahkan variabel baru pada baris baru. Ingatlah bahwa inden dalam YAML adalah dua spasi.
https_proxy: "<proxy URL>"Runtime IoT Edge menggunakan AMQP secara default untuk berkomunikasi dengan IoT Hub. Beberapa server proksi memblokir port AMQP. Jika itu masalahnya, Anda juga perlu mengonfigurasi edgeAgent untuk menggunakan AMQP melalui WebSocket. Tambahkan variabel lingkungan kedua.
UpstreamProtocol: "AmqpWs"
Simpan perubahan ke config.yaml dan tutup editor. Mulai ulang IoT Edge agar perubahan diterapkan.
Linux dan IoT Edge untuk Linux di Windows:
sudo systemctl restart iotedgeWindows yang menggunakan kontainer Windows:
Restart-Service iotedge
Buka file konfigurasi di perangkat IoT Edge Anda:
/etc/aziot/config.toml. File konfigurasi dilindungi, sehingga Anda memerlukan hak administratif untuk mengaksesnya. Pada sistem Linux, gunakan perintahsudosebelum membuka file di editor teks pilihan Anda.Dalam file konfigurasi, temukan bagian
[agent], yang berisi semua informasi konfigurasi untuk modul edgeAgent untuk digunakan pada saat penyalaan. Periksa dan pastikan bahwa[agent]bagian tersebut tidak berkomentar atau tambahkan jika tidak disertakan dalamconfig.toml. Definisi agen IoT Edge mencakup subbagian[agent.env]tempat Anda dapat menambahkan variabel lingkungan.Tambahkan parameter https_proxy ke bagian variabel lingkungan dan tetapkan URL proksi Anda sebagai nilainya.
[agent] name = "edgeAgent" type = "docker" [agent.env] # "RuntimeLogLevel" = "debug" # "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"Runtime IoT Edge menggunakan AMQP secara default untuk berkomunikasi dengan IoT Hub. Beberapa server proksi memblokir port AMQP. Jika itu masalahnya, Anda juga perlu mengonfigurasi edgeAgent untuk menggunakan AMQP melalui WebSocket. Batalkan komentar pada parameter
UpstreamProtocol.[agent.env] # "RuntimeLogLevel" = "debug" "UpstreamProtocol" = "AmqpWs" "https_proxy" = "<proxy URL>"Simpan perubahan dan tutup editor. Terapkan perubahan terbaru Anda.
sudo iotedge config applyVerifikasi bahwa pengaturan proksi Anda disebarluaskan menggunakan
docker inspect edgeAgentdi bagian .EnvJika tidak, kontainer harus dibuat ulang.sudo docker rm -f edgeAgentRuntime IoT Edge harus dibuat
edgeAgentulang dalam satu menit. SetelahedgeAgentkontainer berjalan lagi,docker inspect edgeAgentdan verifikasi pengaturan proksi cocok dengan file konfigurasi.
Mengonfigurasi manifes penyebaran
Setelah perangkat IoT Edge Anda dikonfigurasi untuk bekerja dengan server proksi, Anda harus terus mendeklarasikan variabel lingkungan HTTPS_PROXY dalam manifes penyebaran di masa mendatang. Anda dapat mengedit manifes penyebaran baik menggunakan panduan portal Azure maupun dengan mengedit file JSON manifes penyebaran.
Selalu konfigurasikan dua modul runtime, edgeAgent dan edgeHub, untuk berkomunikasi melalui server proksi sehingga keduanya dapat mempertahankan koneksi dengan IoT Hub. Jika Anda menghapus informasi proksi dari modul edgeAgent, satu-satunya cara untuk membangun kembali koneksi adalah dengan mengedit file konfigurasi pada perangkat, seperti yang dijelaskan di bagian sebelumnya.
Selain modul edgeAgent dan edgeHub, modul lain mungkin memerlukan konfigurasi proksi. Modul yang perlu mengakses sumber daya Azure selain IoT Hub, seperti penyimpanan blob, harus memiliki variabel HTTPS_PROXY yang ditentukan dalam file manifes penyebaran.
Prosedur berikut ini berlaku selama masa berlaku perangkat IoT Edge.
portal Microsoft Azure
Saat Anda menggunakan wizard Atur modul untuk membuat penyebaran untuk perangkat IoT Edge, setiap modul memiliki bagian Variabel Lingkungan tempat Anda dapat mengonfigurasi koneksi server proksi.
Untuk mengonfigurasi modul agen IoT Edge dan hub IoT Edge, pilih Pengaturan Runtime pada langkah pertama di wizard.

Tambahkan variabel https_proxy ke definisi modul agen IoT Edge dan hub IoT Edge. Jika Anda menyertakan variabel lingkungan UpstreamProtocol dalam file konfigurasi pada perangkat IoT Edge, tambahkan juga variabel tersebut ke definisi modul agen IoT Edge.

Semua modul lain yang Anda tambahkan ke manifes penyebaran akan mengikuti pola yang sama.
File manifes penyebaran JSON
Jika Anda membuat penyebaran untuk perangkat IoT Edge menggunakan templat di Visual Studio Code atau dengan membuat file JSON secara manual, Anda dapat menambahkan variabel lingkungan secara langsung ke setiap definisi modul.
Gunakan format JSON berikut:
"env": {
"https_proxy": {
"value": "<proxy URL>"
}
}
Dengan variabel lingkungan yang disertakan, definisi modul Anda akan terlihat seperti contoh edgeHub berikut:
"edgeHub": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.1",
"createOptions": "{}"
},
"env": {
"https_proxy": {
"value": "http://proxy.example.com:3128"
}
},
"status": "running",
"restartPolicy": "always"
}
Jika Anda menyertakan variabel lingkungan UpstreamProtocol dalam file confige.yaml pada perangkat IoT Edge, tambahkan juga variabel tersebut ke definisi modul agen IoT Edge.
"env": {
"https_proxy": {
"value": "<proxy URL>"
},
"UpstreamProtocol": {
"value": "AmqpWs"
}
}
Bekerja dengan proksi inspeksi lalu lintas
Jika proksi yang coba Anda gunakan melakukan inspeksi lalu lintas pada koneksi yang diamankan TLS, penting untuk diperhatikan bahwa autentikasi dengan sertifikat X.509 tidak berfungsi. IoT Edge membuat saluran TLS yang dienkripsi ujung ke ujung dengan sertifikat dan kunci yang disediakan. Jika saluran tersebut rusak untuk inspeksi lalu lintas, proksi tidak dapat membangun kembali saluran dengan info masuk yang tepat, dan IoT Hub serta layanan provisi perangkat IoT Hub akan menampilkan kesalahan Unauthorized.
Untuk menggunakan proksi yang melakukan pemeriksaan lalu lintas, Anda harus menggunakan autentikasi tanda tangan akses bersama atau memiliki IoT Hub dan layanan penyediaan perangkat IoT Hub yang ditambahkan ke daftar yang diizinkan untuk menghindari pemeriksaan.
Nama domain yang sepenuhnya memenuhi syarat (FQDN) tujuan yang IoT Edge berkomunikasi dengan
Jika proksi Anda memiliki firewall yang mengharuskan Anda untuk mengizinkan semua FQDN untuk konektivitas internet, tinjau daftar dari Izinkan koneksi dari perangkat IoT Edge untuk menentukan FQDN mana yang akan ditambahkan.
Langkah berikutnya
Pelajari selengkapnya tentang peran runtime IoT Edge.
Memecahkan masalah instalasi dan konfigurasi dengan Masalah umum dan resolusi untuk Azure IoT Edge