Многоадресная рассылка DNS через SoftAP на Win10 IoT

Когда я подключаю свою доску Win10 IoT к WiFi, я могу подключиться к ее веб-интерфейсу из macOS через http://minwinpc.local:8080, Разрешение имени хоста происходит через многоадресный DNS, что можно наблюдать, выполнив dns-sd -q minwinpc.local.,

Такое же поведение можно наблюдать при подключении к плате Win10 IoT. В этом режиме точка доступа, как AJ_SoftAPSsid рекламируется советом. После подключения к нему, еще раз, dns-sd -q minwinpc.local. разрешает его IP, и доступ к http://minwinpc.local:8080 отлично работает из macOS.

Однако все становится интересным, когда я вручную устанавливаю IoT-плату Win10 в режим SoftAP, например, с помощью пользовательского приложения UWP (через Powershell я не нашел способа использовать hostednetwork напрямую, кажется, что он поддерживает только 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();

Затем я добавляю приложение в автозапуск (iotstartup add headless) и перезагрузите компьютер.

Когда я получаю доступ к устройству через обычный WiFi, все по-прежнему ведет себя как прежде. Однако, когда я подключаюсь к пользовательской SoftAP, я больше не могу разрешить адрес, так как многоадресный DNS больше не рекламирует. Интересно, что если я использую выделенный клиент Windows (не виртуальную машину на Mac), я все равно могу получить доступ к обоим http://minwinpc.local:8080 а также http://minwinpc:8080 , В соответствии со статьей MSDN, указанной по https://stackoverflow.com/a/45619667, это ожидаемое поведение ([...] Кроме того, SoftAP не обеспечивает разрешение DNS. [...])

Один из способов обойти разрешение DNS - включить ICS. Когда я делаю это из IoT Windows Device Portal, перезагружаюсь и присоединяюсь к SoftAP с macOS, я действительно получаю 192.168.137.1 (плату IoT) в качестве DNS-сервера. Я также получаю поисковый домен mshome.net,

С включенным ICS поведение меняется двумя способами:

• Прежде всего, Unicast DNS, кажется, теперь работает (Unicast DNS не работал раньше, ни на начальном AJ_SoftAPSsid WiFi ни на обычном WiFi).

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

Дополнительно, minwinpc.mshome.net. также рекламируется.

;; QUESTION SECTION:
;minwinpc.mshome.net.      IN  A

;; ANSWER SECTION:
minwinpc.mshome.net.    0  IN  A  192.168.137.1

Это означает, что теперь я могу получить доступ http://minwinpc.mshome.net:8080 из macOS. Это также означает, что я могу получить доступ http://minwinpc.local:8080 из Windows в VMware. Для обеих платформ я могу даже использовать http://minwinpc:8080 потому что поисковый домен автоматически перенаправляет его на http://minwinpc.mshome.net:8080,

Тем не менее, большая проблема здесь заключается в том, что http://minwinpc.local:8080 не работает из macOS, причина в том, что .local домен обрабатывается через многоадресный DNS.

• Второе изменение с включенным ICS касается многоадресной DNS. В самом деле, dns-sd -q minwinpc.mshome.net. разрешается с ICS, но dns-sd -q minwinpc.local. все еще не работает вообще.

Когда я регистрирую свой собственный сервис в DnssdServiceInstance однако, это рекламируется на домене local. при просмотре с dns-sd -B _mycustom._tcp вместо mshome.net.,

Когда я разрешаю имя, присвоенное сервису, используя dns-sd -L myname _mycustom._tcp Тем не менее, я получаю minwinpc.local. домен, хотя ^_^: myname._mycustom._tcp.local. can be reached at minwinpc.local.:12345 (interface 5),

Что проблематично, потому что minwinpc.local. неправильно рекламируется в многоадресном DNS (minwinpc.mshome.net. вместо этого), и одноадресный DNS не сопровождается macOS для local. домен.


В конечном итоге все сводится к этому вопросу:

  • Как я могу получить локальный многоадресный DNS, работающий на интерфейсе SoftAP?

Многоадресный DNS отлично работает над начальным AJ_SoftAPSsid встроенной сети, и она работает нормально, если я подключаю плату к тому же WiFi, что и мой MacBook. Это не работает вообще над SoftAP без ICS. С ICS он размещает рекламу в другом домене, отличном от local,


Отказ от ответственности: Пожалуйста, обратите внимание, что все эти шаги являются неэффективными с текущей Win10 IoT. Требуется много терпения и перезагрузки. Кроме того, MacBook не должен быть подключен через Ethernet в дополнение к WiFi, чтобы избежать путаницы с процессом разрешения.

0 ответов

Другие вопросы по тегам