DNS de multidifusão sobre SoftAP no Win10 IoT

1

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:

  • Como posso obter DNS multicast local trabalhando na interface SoftAP?

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.

    
por Etan 11.08.2017 / 14:20

0 respostas