同时访问WiFi LAN(无网关)和移动网络

Bre*_*ett 12 android network-programming android-wifi ios windows-phone

我知道它之前被问过(有限或没有解决方案),但我没有看到任何最近的更新,我认为我的场景是独特的,所以我将开始一个新的线程.

我有一个Raspberry Pi,它在其他方面起着热点作用.根据设计,DHCP不会分发默认网关.我的用例是与Pi作为服务器交互的一个或多个设备.

其中一个连接的设备将是移动设备(编辑:运行我设计的自定义应用程序,这是整个解决方案的一部分),该设备将保持其蜂窝连接,而不是用于网络共享或路由,但应用程序可以访问内部和外部资源同时进行.

目前:

IOS:这与我在IOS上的预期完全一样 - 它感觉到WiFi网络没有默认网关并通过小区发送外部流量.

Android:这根本不起作用.即使没有默认网关,Android也固执地看到WiFi连接并禁用蜂窝网络.

Windows Phone:一种混合型.两个网络都保持不变,但我的方案在公共DNS中有DNS条目,公共站点链接到Pi上的资源.如果我使用Pi的WiFi IP地址直接链接到资源,它可以正常工作(尽管这会导致与安全性相关的其他问题).如果我通过FQDN链接,我实际上不确定发生了什么.虽然我在手机上安装的每个网络实用程序都可以通过DNS正确解析FQDN到Pi地址,但它无法从Web浏览器解析.

希望这是有道理的.问题:如何在2015年全面启用此功能?:)就我的目的而言,Pi作为私人不可路由的热点比WiFi直接或蓝牙更好.记得我不是要电话去ROUTE; 我需要我的自定义应用程序才能同时连接到Pi和公共Internet.我希望所有手机能够完成IOS在这方面的工作.

我目前的情况是Pi托管网页(以及其他内容),这是我的偏好,但这甚至可以原生解决吗?

Kev*_*ane 1

你说这不是网络共享或路由情况,但如果你仔细想想,它确实是两者兼而有之。

它是路由,因为来自电话的流量需要路由到两个接口之一。可能没有通过电话进行路由,但仍然是路由问题。幸运的是,路由部分似乎可以在所有三个平台上运行。

这也是一种不寻常的网络共享形式。唯一的区别是流量不是来自 Pi,而是来自手机,并且 Pi 而不是手机充当接入点。

从网络共享角度考虑这一点很重要,因为它表明 Android 可以同时激活 WiFi 和蜂窝网络(至少在热点模式下,但也可能在客户端模式下)。在这方面,我的答案并不完整 - 我无法告诉你如何实现这一点。

至于您提到的Windows Phone问题:为了解决该问题,首先确定知道Pi的FQDN的DNS服务器所在的位置。公共 DNS 服务器是否知道它,即使它显然位于专用网络上?

对于您的观察结果,有两种可能的解释:

  • 甚至没有公共 DNS 服务器知道此 FQDN。在这种情况下,IOS 可能会使用 mDNS 之类的东西来定位 Raspberry Pi。
  • 一个公共 DNS 服务器知道此 FQDN。在这种情况下,Windows Phone 可能会检查火星人的 DNS 回复并拒绝它,认为这是一次攻击。

无论哪种方式,您真正需要的是拥有两个独立的 DNS 基础设施。实现此目的的一种方法是在您的应用程序中包含一个小型 DNS 服务器(可能是 dnsmasq),并使用 Pi 的 FQDN 为该区域配置转发器以转发到 Pi 的 IP 地址(显然,必须对其进行硬编码)。所有其他请求应发送至普通 DNS 服务器。

另一种方法可能是根本不使用 DNS,而是使用主机文件。