Sdílet prostřednictvím


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().

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.