Provádění zjišťování služeb
Aplikace vysoké úrovně v Azure Sphere můžou provádět zjišťování služeb pomocí zjišťování služby DNS (DNS-SD). Aplikace můžou pomocí zjišťování služeb vyhledávat síťové služby a provádět překlad názvů hostitelů, aby mohly se službou komunikovat prostřednictvím brány firewall Azure Sphere. Dns vícesměrového vysílání (mDNS) se dá použít také k provádění zjišťování mezi dvěma účastníky v místní síti, což je užitečné zejména v případě, že IP adresy a názvy hostitelů cílového koncového bodu nejsou v době návrhu známé.
Aplikace používají dotazy DNS-SD k načtení záznamů DNS z jiných než místních serverů DNS nebo přes odkaz vícesměrového vysílání. Pokud se dotazovaný název nachází v doméně .local nejvyšší úrovně (TLD), dotaz je vícesměrové vysílání v místní síti prostřednictvím všech povolených síťových rozhraní; v opačném případě se provede zjišťování služby jednosměrového vysílání. Ukázka zjišťování služeb ukazuje, jak provádět zjišťování služeb v Azure Sphere.
Poznámka
Brána firewall Azure Sphere brání aplikacím v komunikaci s neautorizovanými službami. Povolení odchozích připojení k .local TLD v manifestu aplikace však může zvýšit bezpečnostní riziko pro zařízení tím, že aplikaci umožní připojit se k neautorizovaným službám inzerovaným v místní síti. Aplikace by měly povolit odchozí připojení k .local TLD pouze v zabezpečených prostředích, která brání neoprávněným stranám v reklamních službách. Aby bylo možné v tomto scénáři poskytovat další ochranu, azure Sphere vyžaduje, aby se služby zjištěné v místní síti našly také v místní podsíti.
Zahrnout soubory hlaviček
Aplikace, které provádějí zjišťování služeb, musí obsahovat soubor hlaviček překladu:
#include <resolv.h>
Povolení připojení služby
Před provedením dotazu DNS-SD musíte přidat službu do funkce AllowedConnections manifestu aplikace. Brána firewall Azure Sphere pak umožní aplikaci připojit se ke zjištěným instancím služby pomocí přidružených názvů hostitelů a IP adres. Pokud je zadaná služba .local TLD, brána firewall povolí připojení pouze ke zjištěným prostředkům v místní podsíti.
Funkce AllowedConnections podporuje následující typy názvů služeb:
- Název místní služby DNS, například "_sample._tcp.local"
- Název jiné než místní služby DNS, například "_sampleinstance._tcp.dns-sd.org"
- Název instance místní služby, například "_sampleinstance._tcp.hostname.local"
- Název domény, například "samplehost.contoso.com"
- IP adresa
Tady je výňatek z manifestu aplikace, který obsahuje jiný než místní název služby.
"AllowedConnections": [ "_http._tcp.dns-sd.org" ]
Provedení dotazu DNS-SD
Pokud chcete provést dotaz DNS-SD, musíte požádat o několik typů záznamů DNS:
- Záznamy PTR , které vyčíslují instance služby DNS.
- Záznamy SRV a TXT , které obsahují podrobnosti o instancích služby, jako je název hostitele a port.
- Záznamy , které obsahují IP adresy načtených názvů hostitelů.
Před odesláním dotazu ho musíte vytvořit a inicializovat a pak přidat zprávu dotazu, která vyžaduje záznam DNS. Dotaz DNS-SD můžete vytvořit a inicializovat voláním funkce POSIX res_init(). Zprávu pro dotaz můžete vytvořit voláním funkce POSIX res_mkquery().
Odeslání dotazu DNS jednosměrového vysílání
Při zjišťování služby jednosměrového vysílání můžete odeslat dotaz DNS-SD a načíst odpověď voláním funkce POSIX res_send().
Odeslání dotazu přes odkaz vícesměrového vysílání
Pokud chcete odeslat dotaz DNS-SD přes odkaz vícesměrového vysílání, musí aplikace otevřít soket a odeslat požadavek přes soket na IP adresu zpětné smyčky 127.0.0.1 (cílový port 53). Po odeslání požadavku se může vrátit více odpovědí. Aplikace by měla několik sekund čekat a naslouchat, aby shromáždila všechny odpovědi. To je demonstrováno v ukázce zjišťování služeb.
Důležité
Tato IP adresa zpětné smyčky je beta funkce, která se v budoucích verzích vyřadí a nahradí. To bude zásadní změna pro aplikace, které na adrese spoléhají.
Povolená připojení pro hostitele s více IP adresami
Brána firewall Azure Sphere umožňuje připojení pouze k jedné IP adrese na název hostitele. Pokud má hostitel více IP adres, brána firewall Azure Sphere umožňuje připojení pouze k jedné z těchto adres. Aplikace může použít curl k provádění požadavků HTTPS na hostitele, který má více IP adres; curl se pokusí připojit ke každé IP adrese, dokud se nenajde povolená adresa. To však může způsobit zpoždění, když aplikace najde povolenou adresu.