同时接入WiFi局域网(无网关)和移动网络

Accessing WiFi LAN (no gateway) and mobile network simultaneously

我知道之前有人问过这个问题(解决方案有限或没有解决方案),但我没有看到任何最近的更新,我认为我的情况很独特,所以我将开始一个新话题。

我有一个 Raspberry Pi,它可以作为热点等功能使用。按照设计,DHCP 不会分发默认网关。我的用例是一个或多个设备作为服务器与 Pi 交互。

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

目前:

IOS:这完全符合我在 IOS 上的预期 - 它感觉到 WiFi 网络没有默认网关并发送外部小区流量。

Android:这根本行不通。 Android 顽固地看到 WiFi 已连接并禁用蜂窝网络,即使没有默认网关也是如此。

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

希望这是有道理的。问题:如何在 2015 年全面启用此功能? :) 就我的目的而言,Pi 作为私人不可路由热点比 WiFi direct 或蓝牙效果更好。请记住,我不是在请求 phone 到 ROUTE;我需要我的自定义应用程序能够同时连接到 Pi 和 public 互联网。我希望所有 phone 在这方面做 IOS 所做的事情。

我目前的情况是 Pi 托管网页(除其他外),这是我的偏好,但这甚至可以在本机解决吗?

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

这是路由,因为来自phone的流量需要路由到两个接口之一。可能没有路由 through the phone,但这仍然是一个路由问题。幸运的是,路由部分似乎在所有三个平台上都能正常工作。

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

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

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

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

  • 没有 public 甚至知道此 FQDN 的 DNS 服务器。在那种情况下,IOS 可能正在使用类似 mDNS 的东西来定位 Raspberry Pi.
  • 一个知道这个 FQDN 的 public DNS 服务器。那样的话,可能WindowsPhone检查了martians的DNS回复并拒绝了,认为是攻击。

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

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

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