我想在车库里安装一个以太网交换机,它将提供与主楼相同的 LAN 段的连接。但是,主楼和车库之间没有网线,但车库里有 WiFi 覆盖。
我已经用支持无线桥接模式的 TP-Link Archer A7 路由器实现了我想要的功能。但是我更想用一个简单的 Raspberry Pi 和一个基本的以太网交换机来实现它。
通过使用 GRE TAP 接口/隧道,我几乎能够成功,但它在处理长数据包时会遇到困难(因为一些烦人的 MTU 问题),因此丢失了许多数据包。我也在网上找到了一些使用 NAT 解决这个问题的方法,但这在我的用例中是不可接受的。连接到交换机的设备需要与主楼中的所有其他设备位于同一 LAN 段上。
有人可以提供实现这一目标的最佳方法的答案吗?
在 openwrt 上,有一个通过 wifi“桥接器”扩展网络的解决方案。
它依赖于 openwrt-relayd(注意,还有其他“relayd”软件,因此会造成混乱)。
但是,如果您的接入点和 RPi 的 wifi 硬件支持它,则根据 802.11s 的 WiFi 网状网络更为可取。使用 检查
iw list
,查找mesh point
“支持的接口模式”。现在我可以使用 OpenVPN TAP 连接来实现这一点。OpenVPN 似乎不会像 GRE TAP 那样遇到 MTU 问题,因为它会自动将长以太网帧分割成多个 UDP 数据包。
以下方法也依赖于主楼中的一台 Raspberry Pi(或某种可以运行 OpenVPN 的 Linux 机器......)。
Raspberry Pi 1号(主楼)
在主楼的 Raspberry Pi 上(物理连接到主以太网端),我修改了 /etc/network/interfaces 以执行以下操作:
这确保有一个可用的桥接器来连接 TAP 接口。
在 RPi 1 上,我还创建了以下 OpenVPN 配置文件。
(我显示没有配置加密以节省空间。这对我来说也不是什么大问题,因为它只在本地网络上运行。没有加密也有助于提高速度)。
openvpn 启动时运行的 up_tap0.sh 脚本只是将 tap0 接口连接到网桥:
Raspberry Pi 2 号(车库)
在第二台 Raspberry Pi 上(在车库中),我首先确保它已连接到 Wifi 网络(使用 NetworkManager 或 /etc/network/interfaces)。然后我创建了这个 OpenVPN 配置:
RPi2 上的脚本 up_tap0.sh 包含以下内容:
在 RPi1 和 RPi2 上启动 OpenVPN,并将交换机和计算机连接到车库中 RPi2 的可用以太网端口后,我能够通过 DHCP 获取 IP 地址!:) 并且它似乎运行得很好。另一台计算机现在显示为该网络上的任何其他设备。