共享公共 Wifi

共享公共 Wifi

我在船上使用 Raspberry Pi 来记录各种传感器,并将其作为船上共享互联网的热点。我有一个 USB wifi 适配器,带有安装在桅杆上的外部天线。我还有一个 4G 调制解调器,同样带有外部天线,并通过以太网连接回 Raspberry Pi。我能够使用 iptables 创建网络地址转换,以在 Raspberry Pi 3 的内部 wifi 设备上共享上述 wifi 连接。

但是,在某些公共 wifi 热点上,USB wifi 设备不断断开连接。我的研究表明,公共 wifi AP 可能正在查看连接到我本地热点的设备的 MAC 地址,并发现它与它认证的 USB 设备的 MAC 地址不匹配,因此取消了对 USB 设备的认证。

我知道如果我能控制具有 wifi 连接的公共 AP,则可以使用 WDS 或 4 地址模式,但这显然是不可能的。

我探索了 ebtables 的使用,但除非使用 4 地址模式,否则您无法将 STA wifi 设备连接到虚拟网桥。

我确信一定可以模拟 TP Link WiFi 扩展器说明书中描述的内容:

当范围扩展器在通用模式下工作时:

在此模式下,Range Extender 将用 RE 自己的 MAC 地址替换所有客户端的 MAC 地址”

我找不到任何描述如何使用 Linux 发行版实现这一点的内容。

如果有人知道如何实现上述通用模式所描述的内容,我将不胜感激。

或者,是否有某种方法可以通过公共 wifi AP 对我本地热点的每个客户端进行身份验证?

答案1

您无法(可靠地)将桥接模式用于您无法控制的 AP。使用中继器模式(本质上是 MAC 地址的 1:1 NAT)需要付出不小的努力。这也意味着您必须在每个设备上单独登录。

相反,您需要的是 NAT。最简单的解决方案是使用类似下面的方法:

iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

此外,您必须确保您的内部网络使用不同的 IP 子网,以免引起冲突。

使用 NAT,您将拥有不同的网络段。热点永远不会知道隐藏在 RasPi 后面的设备。它看不到任何 MAC 地址,但可以看到 wlan0。每个连接您只需登录一次。

相关内容