代码之家  ›  专栏  ›  技术社区  ›  Brett

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

  •  12
  • Brett  · 技术社区  · 11 年前

    我知道以前有人问过这个问题(解决方案有限或没有),但我没有看到任何最新的更新,我认为我的场景是独特的,所以我将启动一个新的线程。

    我有一个树莓派,它是一个热点。根据设计,DHCP不会分发默认网关。我的用例是一个或多个设备作为服务器与Pi交互。

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

    目前:

    国际标准化组织 :这和我在IOS上的预期完全一样——它感觉到WiFi网络没有默认网关,并通过手机发送外部流量。

    安卓 这根本不起作用。Android顽固地认为WiFi已连接并禁用蜂窝,即使没有默认网关。

    Windows电话 :有点像混血儿。两个网络都保持运行,但我的场景在公共DNS中有一个DNS条目,并且公共站点链接到Pi上的资源。如果我直接使用Pi的WiFi IP地址链接到资源,它会正常工作(尽管这会导致其他与安全相关的问题)。如果我通过FQDN链接,我实际上不确定发生了什么。虽然我在手机上安装的用于故障排除的每个网络实用程序都通过DNS将FQDN正确解析为Pi地址,但它无法从web浏览器解析。

    希望这是合理的。问题:我如何在2015年全面启用此功能?:)就我而言,Pi作为一个不可路由的专用热点,比WiFi直接或蓝牙更有效。请记住,我没有要求电话路由;我需要我的自定义应用程序能够同时连接到Pi和公共互联网。我希望所有的手机都能像IOS在这方面所做的那样。

    我目前的场景是Pi托管一个网页(除其他外),这是我的偏好,但这甚至可以在本地解决吗?

    2 回复  |  直到 11 年前
        1
  •  1
  •   Kevin Keane    11 年前

    你说这不是一个系留或路由的情况,但如果你想一想,这真的是两者都有。

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

    这也是一种不同寻常的系留方式。唯一的区别是流量不是来自Pi,而是来自电话,并且Pi而不是电话充当接入点。

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

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

    您的观察有两种可能的解释:

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

    无论如何,您真正需要的是拥有两个独立的DNS基础结构。实现这一点的一种方法是在应用程序中包含一个小型DNS服务器(可能是dnsmasq),并使用Pi的FQDN为区域配置一个转发器,以转发到Pi的IP地址(显然,这必须是硬编码的)。所有其他请求都应发送到正常的DNS服务器。

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

        2
  •  0
  •   Kirill Frolov    6 年前

    对于Android手机,您可以使用名为“WiFi和移动数据交换机”的应用程序( https://play.google.com/store/apps/details?id=com.totemsoft.wifimd ). 对我来说,它解决了同时连接到互联网(通过移动数据)和本地网络(通过WiFi,通过WiFi无法访问互联网)的问题。该应用程序在三星Galaxy A8上运行正常。我希望,我的评论对某人有所帮助。