本篇主要通过batman-adv实现mesh网状网: 无线回程 +  有线回程

1. 组网

        通过光猫桥接模式有2路网络:  均设置为192.168.1.0网络,路由ip各不相同 

        网络1: 4口软路由 + 小米mini(openwrt)     

        网络2:  PSG1218(openwrt)

        软件安装参考openwrt官方batman-adv安装说明即可

2. 设置

         首先,所有的openwrt在/etc/config/network文件声明bat0接口,注意server模式表示提供外网服务。执行service network reload生效。

config interface 'bat0'
        option proto 'batadv'
        option routing_algo 'BATMAN_IV'
        option aggregated_ogms '1'
        option ap_isolation '0'
        option bonding '0'
        option fragmentation '1'
        option gw_mode 'server'         此处 psg1218  软路由设置为 server; 小米mini设置为client
          option gw_bandwidth '300mbit/32mbit'   #server 模式时设置 带宽

        option gw_sel_class '3'     # client模式时, 设置路由选择模式,参考openwrt batman-adv说明章节
        option log_level '0'
        option orig_interval '1000'
        option bridge_loop_avoidance '1'
        option distributed_arp_table '1'
        option multicast_mode '1'
        option network_coding '0'
        option hop_penalty '30'    网关修改此值(目前实验是改小)可以让客户端优选本网关
        option isolation_mark '0x00000000/0x00000000'

无线回程设置
        小米mini + psg1218使用无线回程,另需配置nwi_bat接口  batadv_hardif  表示此接口是bat0的物理回程接口。

config interface 'nwi_bat'
        option mtu '2304'
        option proto 'batadv_hardif'
        option master 'bat0'

然后选一无线信号5g 新增 802.11s mesh并取消转发mesh数据

service mesh 路由引导 mesh主路由设置_桥接

service mesh 路由引导 mesh主路由设置_重启_02

 无线安全看着设置,若需要设置密码选WPA3-SAE, 两个路由器Mesh ID和密码一致, 无线信号的信道一致即可。连接成功后,即可在无线看到

service mesh 路由引导 mesh主路由设置_mac地址_03

若未看到,检查信道、Mesh ID及密码。

单网线有线回程设置

        小米mini和软路由间使用有线回程, 软路由外接usb无线网卡提供一路2.4g信号给一些老设备使用。考虑到有线端口后续可能会有电脑之类有线接入,需要保留原有功能,故这里使用vlan区分, vlan.1是默认,新增一路vlan.4用作 bat0 接口的回路。

MiWiFi设置: 网络--交换机--> 新增一路vlan.4, 将其和WAN端口合并。使用其它端口互联且不取消vlan.1的untagged状态,从MiWiFi接入的客户端ping网关大包会timeout(ping的时候有日志:br-lan received packet on bat0 with own address as source address 将建议为br-lan的成员设置自己的专属mac address以解决此警告:以现有mac地址递增或者递减赋值即可)。

service mesh 路由引导 mesh主路由设置_service mesh 路由引导_04

 同样的,软路由设置:   网络--接口   设备

 br-eth桥接: eth0, eth1 ... eth3

然后从br-eth分vlan

service mesh 路由引导 mesh主路由设置_网络_05

service mesh 路由引导 mesh主路由设置_网络_06

这里也设置为vlan.4,方便bat0通过vlan.4通讯。所以作为主路由, vlan.4可以和接入端口合并,而作为旁路由,vlan.4最好是和wan口合并,可以从某种程度上避免一些环路产生。

设置好后,在miwifi及软路由/etc/config/network 新增bat0回程物理接口声明

    config interface 'batnet'
        option proto 'batadv_hardif'
        option device 'eth0.4'
        option master 'bat0'

所有路由器设置好后, 执行service network reload生效,必要时重启路由器。

        这样主路由任意接入端口用网线和旁路由(关闭DHCP)的WAN口相连,即可实现batman-adv有线回路,构建网状网。

关于MTU设置, 可以将几个路由的br-lan桥接的eth端口MTU设置为1468,避免bat0(MTU仍然为1500)接口拆包发送。同时一般internat在提供商网络之后, MTU一般也是达不到1500的,改用较小1468比较好。部分路由器交换机默认只能是1500mtu,不能设置为1560,否则网络直接瘫痪,还是默认的MTU 1500为好, 保证所有网络畅通。

启动mesh网络

        启动mesh网络,只需将bat0接口加到lan的桥接即可。对小米mini和PSG1218修改: 

service mesh 路由引导 mesh主路由设置_重启_07

 对于软路由,需要新建立一个br-lan桥接, 将br-eth.1和bat0加入;然后将br-lan作为lan的设备入口即可

service mesh 路由引导 mesh主路由设置_桥接_08

service mesh 路由引导 mesh主路由设置_mac地址_09

注意: br-lan 高级设备选项中勾选 STP 启用, 避免形成路由环路; 另需注意,openwrt创建的vlan mac地址是不变的,需要手动修改为不同,在软路由上出现过因mac地址相同导致的环路故障

所有设置好后, 建议对所有路由器重启一次。

测试

         使用ssh终端接入路由器, 执行batctl n及batctl o可以看到关联节点。最简单的测试就是在小米mini去ping另一个网络的ip地址,能ping通即表示mesh网络已经正常工作。

service mesh 路由引导 mesh主路由设置_网络_10