物联网时代,要有网;车库作为创业的发源地,更不能没有网。由于很杯具的原因,车库距家三四百米。考虑/尝试了几种方案,比如独立安装宽带、从下水道拉光纤,都不可行。最后只剩下一个选择:无线组网。
环境
车库和家在同一排,但隔了几栋楼。房子前后都有树,两三层楼高的树有约20棵,其间还有小树。
如下图(及后续一些图)所示。
车库和家后的窗户是直接看不到的,可以说相当于隔了一片树林。
设备
考虑到并不能完全避开树,买了某大功率的山寨无线网桥,号称1000mW,但软件界面上只能设置到28dBm,这相当于:
10 ^ (28/10) = 631 mW
2.4G还是5G? 理论上,5G抗干扰能力强,不过我私下以为是因为现在用5G WiFi的人相对少一些,但以后大家还是会转到5G上。
另一个理论是,低频的衰减慢一些,衍射强一些。
最后,我买了2.4G,因为便宜。
拆开看了下,发现是某知名的无线路由器改装的。另外,固件貌似UBNT的。
考虑到山寨的价格,我们就不纠结这些了,主要看疗效。
第一次,失败
发射端固定在家后的窗户外,向着车库的方向。
接收端伸到车的天窗外,这样可以移动测试。正好有个山寨逆变器,用作电源。
结果不到200米,就完全没信号了。
第二次,成功
总结失败的原因,是因为发射端放到后窗处,完全被树挡死。理想的方式是把发射和接收端都装到屋顶,但这并不好施工(以及维护),且不说楼顶是物业锁住的;而且还需要我家和车库的楼顶是最高的,如果中间有栋楼层数更多结果还是被挡。
抱着试试看的心理,我将发射端移到了下图的路灯处,这个位置大约和树处在同一直线上,也就是大约被挡住一半;另外,发射端的位置低一点,大约在树干的位置,以避开茂盛的树枝和树叶。
结果把车开过车库几十米,还能正常连接。考虑到开车测试时,接收端实际上是在路中间,遮挡更少,于是把接收端放在车库里试了试,居然也有信号,大约10Mbps以内的速度。理论上,接收端越靠着路越好(也许路对面最好,但这需要挖路埋网线),但考虑到设备的安全,最后直接装在了车库的屋檐下。如下图所示。
方向和高度调整
从发射端看过去,接收端其实靠内侧,即靠房子的一侧,但直接向着这个方向,效果并不好;略向着路中间的方向(偏5~10度),略好一点。甚至偏30度,结果也差不多。高度上,太高了效果会差一下。
总之是要避开遮挡,方向上对得准不准,差别不太大。也许更多是靠反射或衍射?
而且,这种网速测试不算严谨,本身就有一定的波动(后面可以看到),调整了一个多小时,没有找到一个明显最优的方向和角度,最后结果就是如上图,发射端略向路偏5~10度。
网络设置
网桥的发射端和接收端硬件上是一样的,只是设置不同。两端都可以设置无线模式(Wireless Mode)和网络模式(Network Mode)。
无线模式有以下选项:
- AP
- AP WDS
- Station
- Station WDS
网络模式有以下选项:
- Bridge
- Router
- SOHO Router
关于如何组合,网桥的帮助里有一段说明。
卖家默认的设置是:
- 发射端:AP + Bridge
- 接收端:Station + Bridge
按文档的说明,这种模式是有二层NAT的。通常的NAT是三层的,即IP地址的转换,二层的NAT则是MAC地址的转换。二层NAT的效果是:在发射端看到的接收端的设备都来自于一个MAC地址,如下图所示。
这个图是家中路由器上看到的设备列表,图中所示有6个设备(车库的设备)都来自于同一MAC,所以对管理上并不直观;而且按NAT的理解,从家里应该是不能直接访问车库的设备。当然,这里还涉及到一个问题,接收端的下级设备是用路由器模式还是AP模式?——我用的AP模式,后面详说。
而我希望达到的效果是家和车库在同一个局域网中,两边的设备可以直接互访。所以最后使用透明的网桥模式。即:
- 发射端:AP WDS + Bridge
- 接收端:Station WDS + Bridge
下面是发射端的设置:
下面是接收端的设置:
OpenWRT如何切换到AP模式
车库中的路由器使用AP模式的目的是为了让车库和家在同一个网段中,并由家中的无线路由器统一管理IP地址的分配。
由于车库的路由器是刷了OpenWRT的,它并没有傻瓜化的一键切换路由器和AP模式。网上查到的一些说法是修改配置文件,我试了下,在网页界面上是可以完成这个操作的。
主要的步骤有:
- 在LAN这个接口中绑定VLAN eth0.2(即WAN和WAN6对应的VLAN);
- LAN接口禁用DHCP服务,而是作为DHCP客户端,和家里的设备使用同一个DHCP服务器;
- 删除WAN和WAN6这两个接口。
这样,路由器上最后只有一个接口,它桥接了所有端口和2.4G/5G的WiFi,如下图所示:
网络状态
评估网络状态主要看以下几个参数:
- 信号强度:最高差不多-69dBm,这个值在网桥中并不算高,但也还算可以。手机连着家里无线路由器,中等信号强度差不多这样。
- 信道带宽:60~180 Mbps之间,收和发不一定相等。
- CCQ: 用来表示连接质量的,我的在80%~100%之间
下图是网桥接收端的状态界面。
网速测试
简单的网速测试可以用测速网站(如speedtest.net),或手机App。但这容易受外网影响。严谨一点,用iperf,发射端和接收端分别作为iperf的服务器端和客户端。为了连续测速,我用了wget。在发射端和接收端各放一个树莓派,其上都有web服务器,分别从对方服务器用wget下载。从家里下载车库服务器上的文件,则反映了车库端的上载速度。
测速脚本放在crontab里,每5分钟运行一次,连续多天。
下图是最近半个月每天的平均速度及最大速度。有几天网桥停工,不计算在内;7/28前后调整过频率。
下图是24小时,每小时的平均速度。选取了两天,都是工作日;代表了两个频率设置。
ping测试
顺便用这两个树莓派做了下ping的测试。
- 家到车库(有线到有线):rtt min/avg/max/mdev = 1.708/2.396/3.494/0.586 ms
- 车库到家(有线到有线):rtt min/avg/max/mdev = 1.775/2.524/3.848/0.581 ms
- 家中树莓派(有线到有线):rtt min/avg/max/mdev = 0.615/0.657/0.689/0.030 ms
- 家中笔记本(2.4G WiFi到有线):round-trip min/avg/max/stddev = 1.265/2.159/4.044/0.755 ms
- 家中笔记本(5G WiFi到有线):round-trip min/avg/max/stddev = 1.269/1.952/2.776/0.531 ms
可见,网桥的延迟大致和WiFi相当,但要略大一些。
频率调整
频率对信号强度和网速的影响还是比较大的。最开始我用2312M,信道带宽在3045Mbps;最后改成2387M或2372M,信道带宽在60180Mbps。前者最高网速约30Mbps,后者超过了50Mbps。如前面的图所示。
这个网桥的管理界面上可以设置从2.3G~2.7G的频率,但我试了下,好像并不是所有频率都可以连通,比如一些高的频率;而2.4G段的频率效果因为和家用的2.4G WiFi重叠,效果显然不好。即使接近2.4G的第一个信道的,比如2397M,由于实际上频率是有重叠的,所以效果也并不好。
最远离2.4G的是2312M,理论上它是受干扰最小的,后来发现效果并不是最好的。也许因为改装前的原无线路由器本身就是针对2.4G设计,离2.4G远了,频率响应并不好。最后反复试验之后,使用了2372M。而且这个频率并没有被作为其它用途。(前面的24小时网速图即是这两个频率的对比。)
频率调整的方法是:先设置接收端可以使用哪些频率,这样在频率切换时,它会在这些频率中扫描切换;然后再改发射端的频率。如果顺序反了,导致连接中断,就不能远程操作接收端的网桥了。
切换的过程大约1〜2分钟。
问题
发射端和接收端设备能完全互通,但除了网桥自身,表现在:
- 在发射端的设备访问不了网桥的接收端,但从接收端的设备可以(所谓“访问”的意思是:打开网桥的管理界面,能ping通其IP地址,或ssh登录);反过来也一样;
- 网桥的接收端不能联网:即ssh登录到网桥,它内部并不能连通外网,这就导到接收端不能使用ntp服务,没法自动调整时间。
其实原因就是一个:网桥(发射端/接收端)自身只能和自己那端的设备互通。只不过发射端可以通过家里的路由器上网。
解决访问管理界面的问题并不难,用apache/nginx做反向代理就行了,反正我本来就在用反向代理。
结语
在这个三四百米的无线联网中,两个端点中间有不少树木遮挡,发送和接收端并不直接可见。选择合适的通讯频率,反复调整后,这个无线网桥能移定在大约25Mbps的速度上,最大可达50Mbps。上下行速度并不完全对称。
除了频率外,信号强度及速度还和天气以及小区内人的活动有关。早/中/晚饭时间及晚上会差一些,工作时间速度最高。
总体上,这个速度还是够用的。无线网桥,在远距离组网上还是有相当的实用价值,优点在于成本低,易于实施。