8

Я знаю, что это было задано раньше (с ограниченным или отсутствующим решением), но я не видел никаких последних обновлений, и я думаю, что мой сценарий уникален, поэтому я начну новый поток.Доступ к WiFi LAN (без шлюза) и мобильной сети одновременно

У меня есть малина Pi, и она работает как горячая точка среди прочего. По дизайну DHCP не передает шлюз по умолчанию. Моим вариантом использования является одно или несколько устройств, взаимодействующих с Pi в качестве сервера.

Одним из подключенных устройств будет мобильное устройство (редактирование: запуск пользовательского приложения моего проекта, который является частью общего решения), и это устройство будет поддерживать сотовую связь, а не для привязки или маршрутизации, но так, чтобы приложение может одновременно получать доступ к внутренним и внешним ресурсам.

В настоящее время:

IOS: Это работает точно так же, как я ожидаю от IOS - он чувствует, что сеть Wi-Fi не имеет шлюза по умолчанию и посылает внешний трафик через ячейку.

Android: Это не работает вообще. Android упрямо видит, что WiFi подключен и отключает сотовую связь, даже без шлюза по умолчанию.

Windows Phone: Вид гибрида. Обе сети не работают, но мой сценарий имеет запись DNS в общедоступном DNS, а общедоступный сайт ссылается на ресурс на Pi. Если я напрямую ссылаюсь на ресурс, используя IP-адрес WiFi Pi, он отлично работает (хотя это вызывает другие проблемы, связанные с безопасностью). Если я связываюсь через полное доменное имя, я на самом деле не уверен, что происходит. Он не разрешается из веб-браузера, хотя каждая сетевая утилита, которую я установил на телефоне для устранения неполадок, правильно разрешает полное доменное имя к адресу Pi через DNS.

Надеюсь, что это имеет смысл. Вопрос: Как включить эту функциональность по всем направлениям в 2015 году? :) Для моих целей, Pi как частная непрозрачная точка доступа работает лучше, чем WiFi напрямую или Bluetooth. И помните, я не прошу телефон МАРШРУТ; Мне нужно, чтобы мое пользовательское приложение могло одновременно подключаться к Pi и к общедоступному Интернету. Я хочу, чтобы все телефоны делали то, что делает IOS в этом отношении.

Мой нынешний сценарий - это Pi-хостинг веб-страницы (среди прочего), и это мое предпочтение, но может ли это быть решено изначально?

+1

Это не о программировании ... У вас может быть больше успеха, если вы опубликуете в другом месте. – JonasCz

+0

Но программисты - это люди, которые, скорее всего, имеют аналогичные требования, и, как наиболее вероятно, они знают, какие обходные/неясные API/альтернативы могут быть эффективными. – Brett

+0

True ... [This] (http://stackoverflow.com/questions/18394066/android-use-wifi-direct-and-cellular-data-in-app) и [This] (http: // stackoverflow. com/questions/24429190/how-wifi-and-mobile-data-both-work-both-in-android-for-obd2-device) может помочь, хотя возможно, только если вы выполняете сетевые запросы в своем собственном приложении, вы сами написали. (Таким образом, вы можете использовать соответствующие API-интерфейсы). – JonasCz

ответ

1

Вы говорите, что это не ситуация привязки или маршрутизации, но если вы думаете об этом, это действительно так.

Это маршрутизация, потому что трафик с телефона должен быть направлен на один из двух интерфейсов. Там может не быть маршрутизации до телефона, но это все еще проблема маршрутизации. К счастью, кажется, что часть маршрутизации работает на всех трех платформах.

Это также необычная форма привязки. Единственное отличие состоит в том, что трафик не возникает из Pi, а из телефона, и что Pi, а не телефон, действует как точка доступа.

Думая об этом с точки зрения привязки важно, потому что это показывает, что Android МОЖЕТ иметь WiFi и сотовую активность одновременно (по крайней мере, в режиме «горячих точек», но, вероятно, также в режиме клиента). В этом отношении мой ответ не завершен - я не могу сказать, КАК это сделать.

Что касается проблемы с телефоном Windows, которую вы упомянули: для устранения этой проблемы сначала определите, где находится DNS-сервер, который знает о FQDN Pi.Об этом знает публичный DNS-сервер, хотя он явно находится в частной сети?

Есть два возможных объяснения для вашего наблюдения:

  • Там нет общего сервера DNS, который даже знает, что это полное доменное имя. В этом случае IOS, вероятно, использует что-то вроде mDNS для поиска малины Pi.
  • является общедоступным DNS-сервером, который знает это полное доменное имя. В этом случае Windows Phone может проверить ответ DNS для марсиан и отклонить его, считая, что это атака.

В любом случае, вам действительно нужно иметь две отдельные DNS-инфраструктуры. Одним из способов сделать это является включение небольшого DNS-сервера (возможно, dnsmasq) с вашим приложением и настройка пересылки для зоны с полным доменным именем Pi для пересылки на IP-адрес Pi (который должен быть жестко запрограммирован, очевидно). Все остальные запросы должны отправляться на обычные DNS-серверы.

Другим способом может быть вовсе не использовать DNS, а вместо этого использовать файл hosts.

+0

Что касается ситуации с окнами, подумайте о том, чтобы поставить DNS-сервер на пи. Я установил публичную запись DNS для этого частного IP-адреса, но может случиться так, что соединение wifi не использует общественность и доступно через сотовую сеть. Хосты не помогли бы, если бы я не мог разместить файл hosts на каждом клиентском телефоне - телефон нуждается в разрешении, поэтому CORS будет работать. – Brett

+0

На самом деле я подозреваю, что Windows может просто блокировать ответы DNS с тем, что они считают «недействительными» IP-адресами по соображениям безопасности. Кроме того, установка DNS-сервера на пи не поможет сама по себе. Кроме того, вы также должны иметь возможность направлять DNS-запросы * только * для этого FQDN для Pi, а все остальные - на общедоступный DNS-сервер. Таким образом, необходимо наличие другого DNS-сервера внутри устройства. На хостах: да, я действительно хотел добавить ваше полное доменное имя в файл хоста каждого телефона. Это может быть тривиально делать при установке приложения, или это может быть невозможно. –

+0

Наконец-то успел проверить это. Установленная pdns, настроенная дублирующая зона для моей общедоступной зоны, решила проблему для Windows Phone. Два вниз, один (Android), чтобы пойти :). – Brett

Смежные вопросы