Hizmet bulma gerçekleştirme

Azure Sphere'da üst düzey uygulamalar, DNS hizmet bulma (DNS-SD) kullanarak hizmet bulma gerçekleştirebilir. Uygulamalar, azure Sphere güvenlik duvarı aracılığıyla hizmetle etkileşim kurabilmeleri için ağ hizmetlerini bulmak ve ana bilgisayar adı çözümlemesi gerçekleştirmek için hizmet bulma özelliğini kullanabilir. Çok noktaya yayın DNS (mDNS), yerel ağda eşler arası bulma gerçekleştirmek için de kullanılabilir. Bu, özellikle hedef uç noktanın IP adresleri ve ana bilgisayar adları tasarım zamanında bilinmediğinde kullanışlıdır.

Uygulamalar, DNS kayıtlarını yerel olmayan DNS sunucularından veya çok noktaya yayın bağlantısı üzerinden almak için DNS-SD sorgularını kullanır. Sorgulanan ad .local üst düzey etki alanı (TLD) altındaysa, sorgu tüm etkin ağ arabirimleri aracılığıyla yerel ağda çok noktaya yayındır; aksi takdirde, tek noktaya yayın hizmeti bulma işlemi gerçekleştirilir. Hizmet bulma örneği, Azure Sphere'da hizmet bulma işleminin nasıl gerçekleştirileceklerini gösterir.

Not

Azure Sphere güvenlik duvarı, uygulamaların yetkisiz hizmetlerle iletişim kurmasını engeller. Ancak, uygulama bildiriminde .local TD'lere giden bağlantılara izin vermek, bir uygulamanın yerel ağda tanıtılan yetkisiz hizmetlerle bağlanmasına izin vererek bir cihaz için güvenlik riskini artırabilir. Uygulamalar yalnızca yetkisiz tarafların reklam hizmetlerini engellemesi için güvenli ortamlarda .local TD'lere giden bağlantılara izin vermelidir. Bu senaryoda ek koruma sağlamak için Azure Sphere, yerel ağda bulunan hizmetlerin yerel alt ağda da bulunmasını gerektirir.

Üst bilgi dosyalarını dahil et

Hizmet bulma işlemi gerçekleştiren uygulamalar çözüm üst bilgisi dosyasını içermelidir:

 #include <resolv.h>

Hizmet bağlantısına izin ver

DNS-SD sorgusu gerçekleştirmeden önce, hizmeti Uygulama bildiriminin AllowedConnections özelliğine eklemeniz gerekir. Azure Sphere güvenlik duvarı daha sonra uygulamanın, ilişkili ana bilgisayar adlarını ve IP adreslerini kullanarak bulunan hizmet örneklerine bağlanmasına izin verir. Bir .local TLD hizmeti belirtilirse, güvenlik duvarı yalnızca yerel alt ağda bulunan kaynaklara bağlantılara izin verir.

AllowedConnections özelliğinde aşağıdaki hizmet adı türleri desteklenir:

  • "_sample._tcp.local" gibi yerel DNS hizmeti adı
  • "_sampleinstance._tcp.dns-sd.org" gibi yerel olmayan DNS hizmeti adı
  • "_sampleinstance._tcp.hostname.local" gibi yerel hizmet örneği adı
  • "samplehost.contoso.com" gibi etki alanı adı
  • IP adresi

Aşağıda, yerel olmayan bir hizmet adı içeren bir uygulama bildiriminden bir alıntı yer almaktadır.

"AllowedConnections": [ "_http._tcp.dns-sd.org" ]

DNS-SD sorgusu gerçekleştirme

DNS-SD sorgusu gerçekleştirmek için birkaç tür DNS kaydı istemeniz gerekir:

  • PTR , bir DNS hizmetinin örneklerini numaralandıran kayıtları kaydeder.
  • Konak adı ve bağlantı noktası gibi hizmet örneklerinin ayrıntılarını içeren SRV ve TXT kayıtları.
  • Alınan ana bilgisayar adlarının IP adreslerini içeren kayıtlar.

Sorguyu göndermeden önce oluşturup başlatmanız ve ardından DNS kaydını isteyen bir sorgu iletisi eklemeniz gerekir. POSIX işlevini res_init() çağırarak DNS-SD sorgusu oluşturabilir ve başlatabilirsiniz. RES_MKQUERY() POSIX işlevini çağırarak sorgu için bir ileti oluşturabilirsiniz.

Tek noktaya yayın DNS sorgusu gönderme

Tek noktaya yayın hizmeti bulmayı gerçekleştirirken, DNS-SD sorgusunu gönderebilir ve POSIX işlevini res_send() çağırarak yanıtı alabilirsiniz.

Çok noktaya yayın bağlantısı üzerinden DNS-SD sorgusu göndermek için uygulamanın bir yuva açması ve yuva üzerinden isteği geri döngü IP adresi 127.0.0.1'e (hedef bağlantı noktası 53) göndermesi gerekir. İstek gönderildikten sonra birden çok yanıt döndürülebilir. Uygulamanın tüm yanıtları toplamak için birkaç saniye beklemesi ve dinlemesi gerekir. Bu, Hizmet bulma örneğinde gösterilmiştir.

Önemli

Bu geri döngü IP adresi, kullanımdan kaldırılacak ve gelecek sürümlerde değiştirilecek bir Beta özelliğidir. Bu, adrese dayanan uygulamalar için hataya neden olan bir değişiklik olacaktır.

Birden çok IP adresine sahip konaklar için izin verilen bağlantılar

Azure Sphere güvenlik duvarı, ana bilgisayar adı başına yalnızca bir IP adresine bağlantılara izin verir. Bir konağın birden çok IP adresi varsa, Azure Sphere güvenlik duvarı yalnızca adreslerden birine bağlantılara izin verir. Bir uygulama, birden çok IP adresi olan bir konağa HTTPS istekleri göndermek için curl kullanabilir; curl, izin verilen adres bulunana kadar her IP adresine bağlanmayı dener. Ancak uygulama izin verilen adresi bulurken bu durum gecikmeye neden olabilir.