将无线客户端连接到不可配置的远程 WiFi AP

将无线客户端连接到不可配置的远程 WiFi AP

让我介绍一下场景。

AP#1 <-----> (Linux #1) <-----> 中间网络 <-----> (Linux #2) <-----> 无线客户端

总之,我需要在无线客户端中运行的应用程序能够与接入点 #1 进行透明通信(美联社#1)。

如上所示,我有一个名为美联社#1,它正在为给定的应用程序生成热点。可以通过关联到美联社#1,我想要一个无线客户端来远程使用它。由于我无法触及美联社#1,但我可以配置Linux#1Linux#2,我尝试了以下方法:

  • Linux#1关联到美联社#1使用 wpa 请求者,保持在同一个子网中。
  • Linux#2为另一个子网中的无线客户端创建一个接入点。
  • 无线客户端与 AP#1 中的固定 IP 通信,流量在Linux#1,以便与美联社#1是透明的。

到目前为止一切顺利,无线客户端可以 ping AP#1 的地址。但是,无线客户端通过向 255.255.255.255 发送 UDP 数据包来启动通信,期望美联社#1在应用程序实际开始工作之前回答。有什么方法可以来回路由这些请求,还是 255.255.255.255 通常不可路由?

我想过通过 gretap 隧道更改此配置,但是由于我无法配置,因此此拓扑与我看到的示例略有不同美联社#1

我的问题是:

  • 您认为通过建立某种 L2 隧道可以解决这个问题吗?
  • 如果是这样,最好的选择是什么?
  • 在这种情况下,是否有可能删除 Linux #1 上的 NAT,并使 AP#1 和无线客户端之间的关联完全透明?

提前致谢,抱歉问了些新手问题。

答案1

您认为通过建立某种 L2 隧道可以解决这个问题吗?

是的,两端都有桥接。但 Linux 可能不太容易桥接 Wi-Fi 客户端接口(见下文)。

有什么方法可以来回路由这些请求,或者 255.255.255.255 通常不可路由?

并不禁止转发广播,例如 Cisco IOS 有该选项,但路由器为了避免循环默认不这样做。

我不确定 Linux 是否可以原生地做到这一点,尽管使用模糊的 iptables 规则可能可以做到这一点。使用bcrelay可以单向转发广播的用户空间守护进程会更容易。

在这种情况下,是否有可能删除 Linux #1 上的 NAT,并使 AP#1 和无线客户端之间的关联完全透明?

不完全是。你可以让它在 IP 级别完全透明,但标准 Wi-Fi 客户端只能发送带有其自身 MAC 地址的帧,因此你不能简单地桥接客户端 Wi-Fi 接口 - 需要二层地址转换Linux#1 设备上的某种类型的设备。(“Linux#2”设备是 AP,因此它在第 2 层完全透明。

我不知道如何在标准 Linux 上实现它,尽管我曾在专有固件(Mikrotik RouterOS 和 Ubiquiti airOS 设备)中看到过 ARPNAT,当它们设置为站点模式时。我认为许多消费者“无线网桥”也实现了它。

(Linux 确实支持完全可桥接的“4addr”模式关联,但您的 AP 很可能不支持它。)

相关内容