Använda nätverkstjänster
Viktigt!
Det här är dokumentationen om Azure Sphere (Legacy). Azure Sphere (Legacy) upphör den 27 september 2027 och användarna måste migrera till Azure Sphere (integrerad) vid den här tiden. Använd versionsväljaren ovanför TOC för att visa dokumentationen om Azure Sphere (integrerad).
Azure Sphere kan köra en statisk IP-adress, DHCP-server (Dynamic Host Configuration Protocol) och en enkel SNTP-server (Network Time Protocol) för ett nätverksgränssnitt. DHCP-servern gör det möjligt för Azure Sphere-program att konfigurera nätverksparametrar för en extern enhet i nätverket. Den externa enheten kan använda SNTP-servern för att synkronisera sin tid med Azure Sphere.
Konfiguration av nätverk
Du kan konfigurera ett Ethernet- och ett Wi-Fi-nätverksgränssnitt så att det körs samtidigt på en Azure Sphere-enhet. Ethernet- och Wi-Fi-nätverksgränssnitt kan anslutas till offentliga (internetanslutna) eller privata nätverk. Minst ett gränssnitt måste vara anslutet till ett offentligt nätverk. Endast ett Ethernet-gränssnitt kan konfigureras i taget.
Privata och offentliga nätverksgränssnitt
Om du använder både offentliga och privata nätverksgränssnitt, till exempel privat Ethernet med offentligt Wi-Fi, fungerar inte Azure Sphere-enheten som en router. Det skickar inte automatiskt paket som tas emot i Ethernet-nätverket till Wi-Fi-nätverket, eller tvärtom. Programmet måste implementera all logik som skickar och tar emot information i båda nätverken.
Dubbla offentliga nätverksgränssnitt
Om du använder två nätverksgränssnitt som har dynamisk IP-adressering aktiverat försöker operativsystemet använda det första gränssnittet som är anslutet till nätverket när det väljer DNS-serveradresser för värdnamnsmatchning. Om ett gränssnitt kopplas från nätverket används DNS-serveradresserna från det andra anslutna gränssnittet automatiskt.
Statisk IP-adress
Du kan konfigurera en statisk IP-adress i ett Ethernet- eller Wi-Fi-gränssnitt. För att konfigurera en statisk IP-adresskonfiguration måste programmet använda applibs-nätverks-API:et, och programmanifestet måste aktivera funktionen NetworkConfig.
När du konfigurerar en statisk IP-adress måste anpassad DNS också anges för att säkerställa att Azure Sphere OS fortsätter att fungera som förväntat.
Exemplet private network services visar hur du ansluter Azure Sphere till ett privat nätverk och använder flera nätverkstjänster.
Det här kodfragmentet visar hur du konfigurerar ett nätverksgränssnitt med en statisk IP-adress.
Ta med följande rad i avsnittet Funktioner i app_manifest.json-filen på följande sätt:
"Capabilities": {
"NetworkConfig": true
}
Inkludera dessa huvudfiler i ditt program:
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <applibs/log.h>
#include <applibs/networking.h>
Ange IP-adressen, nätmasken och gatewayen för IP-konfigurationen.
static const char staticIpInDotNotation[] = "yourStaticIp"; // Your static IP in x.x.x.x notation.
static const char subnetMaskInDotNotation[] =
"yourSubnetMask"; // Your subnet mask in x.x.x.x notation.
static const char gatewayIpInDotNotation[] = "yourGatewayIp"; // Your gateway IP in x.x.x.x notation.
Ange det nätverksgränssnitt som ska konfigureras:
static const char networkInterfaceToConfigure[] = "yourNetworkInterface"; // Your network interface.
Konvertera nätverksadresserna till heltal och tillämpa detta på det angivna nätverksgränssnittet.
struct in_addr staticIpAddress;
struct in_addr subnetMask;
struct in_addr gatewayIpAddress;
Networking_IpConfig ipConfig;
// Convert the addresses from the numbers-and-dots notation into integers.
if (inet_pton(AF_INET, staticIpInDotNotation, &staticIpAddress) != 1) {
Log_Debug("ERROR: Invalid static IP address or address family specified.\n");
return -1;
}
if (inet_pton(AF_INET, subnetMaskInDotNotation, &subnetMask) != 1) {
Log_Debug("ERROR: Invalid subnet mask or address family specified.\n");
return -1;
}
if (inet_pton(AF_INET, gatewayIpInDotNotation, &gatewayIpAddress) != 1) {
Log_Debug("ERROR: Invalid gateway IP address or address family specified.\n");
return -1;
}
Networking_IpConfig_Init(&ipConfig);
Networking_IpConfig_EnableStaticIp(&ipConfig, staticIpAddress, subnetMask, gatewayIpAddress);
int result =
Networking_IpConfig_EnableCustomDns(&ipConfig, dnsServers, numOfDnsServerAddressSpecified);
if (result != 0) {
Log_Debug("ERROR: Networking_IpConfig_EnableCustomDns: %d (%s)\n", errno, strerror(errno));
Networking_IpConfig_Destroy(&ipConfig);
return -1;
}
int result = Networking_IpConfig_Apply(networkInterfaceToConfigure, &ipConfig);
Networking_IpConfig_Destroy(&ipConfig);
if (result != 0) {
Log_Debug("ERROR: Networking_IpConfig_Apply: %d (%s)\n", errno, strerror(errno));
return -1;
}
Statisk DNS-adress
Om du har konfigurerat en enhet med en statisk IP-adress och kräver namnmatchning måste programmet ange en statisk DNS-adress. Använd Networking_IpConfig_EnableCustomDns och ange en eller flera giltiga DNS-matchare. Om flera matchare har angetts kommer alla att frågas och det första giltiga DNS-svaret uppfyller frågan. Networking_IpConfig_EnableCustomDns kan också användas för att åsidosätta den aktuella matcharen om en anges via DHCP.
Om du vill konfigurera ett nätverksgränssnitt med anpassade DNS-servrar måste programmanifestet aktivera funktionen NetworkConfig.
Ta med följande rad i avsnittet Funktioner i app_manifest.json-filen på följande sätt:
"Capabilities": {
"NetworkConfig": true
}
Det här kodfragmentet visar hur du konfigurerar ett nätverksgränssnitt med anpassade DNS-servrar.
Inkludera dessa huvudfiler i ditt program:
#include <arpa/inet.h>
#include <errno.h>
#include <string.h>
#include <applibs/log.h>
#include <applibs/networking.h>
Ange antalet DNS-servrar. Upp till tre DNS-servrar kan anges. Följande kod konfigurerar matrisen med tre DNS-server-IP-adresser som ska användas.
// A maximum of 3 DNS server addresses can be specified.
static const size_t numOfDnsServerAddressSpecified = 3;
static const char *dnsServerIpAddress[] = {
"yourDnsServer1", "yourDnsServer2", "yourDnsServer3"}; // Your DNS servers in x.x.x.x notation.
Ange det nätverksgränssnitt som ska konfigureras.
static const char networkInterfaceToConfigure[] = "yourNetworkInterface"; // Your network interface.
Konvertera nätverksadresserna till heltal och tillämpa konfigurationen. Den här DNS-konfigurationen åsidosätter alla DNS-servrar som anges av DHCP.
Networking_IpConfig ipConfig;
// Convert the addresses from the numbers-and-dots notation into integers.
struct in_addr dnsServers[numOfDnsServerAddressSpecified];
for (int i = 0; i < numOfDnsServerAddressSpecified; i++) {
if (inet_pton(AF_INET, dnsServerIpAddress[i], &dnsServers[i]) != 1) {
Log_Debug("ERROR: Invalid DNS server address or address family specified.\n");
return -1;
}
}
Networking_IpConfig_Init(&ipConfig);
int result =
Networking_IpConfig_EnableCustomDns(&ipConfig, dnsServers, numOfDnsServerAddressSpecified);
if (result != 0) {
Log_Debug("ERROR: Networking_IpConfig_EnableCustomDns: %d (%s)\n", errno, strerror(errno));
Networking_IpConfig_Destroy(&ipConfig);
return -1;
}
result = Networking_IpConfig_Apply(networkInterfaceToConfigure, &ipConfig);
Networking_IpConfig_Destroy(&ipConfig);
if (result != 0) {
Log_Debug("ERROR: Networking_IpConfig_Apply: %d (%s)\n", errno, strerror(errno));
return -1;
}
DHCP-server
En extern klientenhet som är ansluten till Azure Sphere via ett Ethernet-gränssnitt måste tilldelas en IP-adress och andra nätverksparametrar så att den kan kommunicera med ett serverprogram på Azure Sphere-enheten. Vissa externa enheter stöder dock inte ett sätt att konfigurera dessa parametrar. Azure Sphere stöder en DHCP-server genom vilken ett program kan tillhandahålla den här konfigurationen. Programmet måste aktivera DhcpService-funktionen i sitt programmanifest.
Azure Sphere-programmet anropar Networking_DhcpServerConfig_Init för att konfigurera servern för att ange en IP-adress, nätmask, gatewayadress, lånetid och upp till tre NTP-serveradresser till en klientenhet. Endast en IP-adress kan konfigureras i den aktuella versionen. Sedan anropas Networking_DhcpServer_Start för att starta servern i ett visst nätverksgränssnitt. När DHCP-servern har startat kan klientenheten skicka ut sända DHCP-meddelanden för att identifiera och begära IP-adresser från DHCP-servern i det angivna undernätet.
SNTP-server
SNTP-servern gör det möjligt för klientenheter att synkronisera sin systemtid med Azure Sphere-enhetens. Om du vill använda servern måste Azure Sphere-programmet aktivera SntpService-funktionen i sitt programmanifest.
För att starta servern anropar Azure Sphere-programmet Networking_SntpServer_Start och anger nätverksgränssnittet som servern ska köras på. Klientenheten och Azure Sphere-enheten måste finnas i samma lokala undernät i nätverket där servern körs. Azure Sphere-enheten måste vara ansluten till minst ett offentligt nätverk så att den kan hämta den aktuella tiden från en NTP-server (Public Network Time Protocol). SNTP-servern svarar inte på frågor förrän den har den aktuella tiden.
Kommentar
Även om ett program kan ställa in systemtiden direkt rekommenderas detta inte eftersom tiden inte kvarstår när enheten förlorar ström. Hantera systemtid och RTC på Azure Sphere innehåller mer information.
Lyssnarportar
Om Azure Sphere-programmet lyssnar efter inkommande TCP- eller UDP-anslutningar måste programmanifestet ange de portar som programmet använder. Till exempel:
"Capabilities": {
"AllowedTcpServerPorts": [ 11000 ],
"AllowedUdpServerPorts": [ 1024, 50000 ]
}
Exempel
- Exempel på DNS-tjänstidentifiering visar hur du frågar och bearbetar svar från en DNS-server.
- Exemplet private network services visar hur du ansluter Azure Sphere till ett privat nätverk och använder flera nätverkstjänster.