Quando conecto minha placa do Win10 IoT a um Wi-Fi, posso conectar a sua interface da web a partir do macOS via http://minwinpc.local:8080
. A resolução do hostname acontece por meio do DNS multicast, como pode ser observado executando dns-sd -q minwinpc.local.
.
O mesmo comportamento pode ser observado durante a integração da placa IoT do Win10. Neste modo, um ponto de acesso como AJ_SoftAPSsid
é anunciado pelo fórum. Depois de se conectar a ele, mais uma vez, dns-sd -q minwinpc.local.
resolve seu IP, e o acesso a http://minwinpc.local:8080
funciona bem no macOS.
As coisas ficam interessantes, no entanto, quando eu configuro a placa Win10 IoT manualmente no modo SoftAP, por exemplo, usando um aplicativo UWP personalizado (por meio do Powershell, não encontrei uma maneira de usar o hostednetwork diretamente, ele parece suportar apenas o WiFi Direct).
WiFiDirectAdvertisementPublisher^ p;
p = ref new WiFiDirectAdvertisementPublisher();
p->Advertisement->ListenStateDiscoverability =
WiFiDirectAdvertisementListenStateDiscoverability::Intensive;
p->Advertisement->IsAutonomousGroupOwnerEnabled = true;
p->Advertisement->LegacySettings->IsEnabled = true;
p->Advertisement->LegacySettings->Ssid = L"My-SSID";
PasswordCredential^ password = ref new PasswordCredential();
password->Password = L"123456789";
p->Advertisement->LegacySettings->Passphrase = password;
p->Start();
Depois, adiciono o aplicativo ao início automático ( iotstartup add headless
) e reinicializo.
Quando eu acesso o dispositivo usando o WiFi normal, tudo ainda se comporta como antes. No entanto, quando me conecto ao Custom SoftAP, não consigo mais resolver o endereço, já que o DNS multicast não anuncia mais. Curiosamente, se eu usar um cliente Windows dedicado (não uma VM em um Mac), ainda posso acessar os dois http://minwinpc.local:8080
e http://minwinpc:8080
. De acordo com o artigo do MSDN vinculado em link , esse é o comportamento esperado ( [...] Além disso, o SoftAP não fornece a resolução de DNS. [...] )
Uma solução alternativa para recuperar a resolução de DNS é ativar o ICS. Quando faço isso a partir do portal do dispositivo Windows da IoT, reinicialize e junte-se ao SoftAP com o macOS; na verdade, recebo 192.168.137.1 (a placa IoT) como servidor DNS. Eu também recebo o domínio de pesquisa mshome.net
.
Com o ICS ativado, o comportamento muda de duas maneiras:
• Em primeiro lugar, o Unicast DNS parece funcionar agora (o Unicast DNS não estava funcionando antes, nem no AJ_SoftAPSsid
WiFi inicial nem no WiFi normal).
dig minwinpc.local. @192.168.137.1
;; QUESTION SECTION:
;minwinpc.local. IN A
;; ANSWER SECTION:
minwinpc. 0 IN A 192.168.137.1
minwinpc. 0 IN A 172.20.10.7
Além disso, minwinpc.mshome.net.
também é anunciado.
;; QUESTION SECTION:
;minwinpc.mshome.net. IN A
;; ANSWER SECTION:
minwinpc.mshome.net. 0 IN A 192.168.137.1
Isso significa que agora posso acessar http://minwinpc.mshome.net:8080
do macOS. Isso também significa que posso acessar http://minwinpc.local:8080
do Windows no VMware. Para ambas as plataformas, posso até usar http://minwinpc:8080
porque o domínio de pesquisa o redireciona automaticamente para http://minwinpc.mshome.net:8080
.
No entanto, o grande problema aqui é que http://minwinpc.local:8080
não funciona no macOS, a razão é que .local
domain é manipulado via DNS multicast.
• A segunda alteração com o ICS ativado é referente ao DNS multicast. De fato, dns-sd -q minwinpc.mshome.net.
resolve com o ICS, mas dns-sd -q minwinpc.local.
ainda não funciona.
Quando eu registro meu próprio serviço com DnssdServiceInstance
, no entanto, ele é anunciado no domínio local.
, quando navegado com dns-sd -B _mycustom._tcp
em vez de mshome.net.
.
Quando eu resolvo o nome atribuído ao serviço usando dns-sd -L myname _mycustom._tcp
, no entanto, recebo o domínio minwinpc.local.
, embora ^ _ ^: myname._mycustom._tcp.local. can be reached at minwinpc.local.:12345 (interface 5)
.
O que é problemático, porque minwinpc.local.
não é anunciado corretamente no DNS multicast ( minwinpc.mshome.net.
is) e o unicast DNS não é seguido pelo macOS para o domínio local.
.
Em última análise, tudo se resume a essa pergunta:
O Multicast DNS funciona bem na rede inicial de AJ_SoftAPSsid
, e funciona bem se eu conectar a placa ao mesmo WiFi que o meu MacBook. Não funciona em todo o SoftAP sem o ICS. Com o ICS, ele anuncia em um domínio diferente, diferente de local
.
Aviso: Por favor, note que todos esses passos são meio esquisitos com o atual Win10 IoT. Muita paciência e reinicialização são necessárias. Além disso, o MacBook não deve estar conectado via Ethernet além do Wi-Fi para evitar mexer no processo de resolução.