Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视

家里房子的网络走线是运营商一根光纤到弱电箱,弱电箱4根网线到3个房间及客厅。装修已经完成没有办法改线了。

之前客厅安装了一个小米路由器 R3G(已刷入 Hiboy 大佬的 Padavan 固件),家里无线信号真心不怎么样。虽然后面买了一个小米的 wifi信号放大器,信号覆盖范围是有所增加,但苦于小区里邻里之间的信道相互干扰和穿墙等因素,网速还是没有什么改善。

最近黑鸟博客发现小米 R3G 的 CPU 芯片 MT7621A 居然内置 switch,而且 padavan 提供了相关的命令和方法可以设置该 switch 的 vlan,决定调整下家里的网络,其主要思想是数据尽量走实体网线以减少 wifi 上的传输,尽量不要额外加设备(尽量利用旧设备为主,之前有 2 个小米 mini 在家吃灰)。

我家里的的组网如下(vlan 号是根据运营商的规划设定的):

图 1  整体网络规划
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

上图中Modem放置在弱电箱中,弱电箱出3根网线分别到两个房间和客厅:

  • Router1(R3G)性能较强,放置在客厅作为家里的主路由器;
  • Router2、Router3(刷了Padavan固件)分别放置在主卧和客房,作为扩展接入的热点。
  • 整个家庭的拨号和局域网的 DHCP、NAT 等均由 Router1 承担;
  • Modem 的 PPPOE 设置为桥接模式(不让光猫拨号);

组网说明:

  • 如果设置 Modem 拨号为路由模式,则 Modem 将自行拨号,NAT、DHCP 等功能都在 Modem 上完成,但黑鸟君长期用惯了Hiboy大佬的 Padavan 的 KP过广告、$$、多媒体服务器、VPN 拨入家庭网络(有公网IP)等功能,显然让 Modem 自行拨号就无法用这些功能了,故放弃;
  • 如果让 Modem 后面的各路由器各自 PPPOE 拨号(黑鸟君所在城市可以多播),每个Router上再设置 KP、$$ 等,但这导致每个Router 都各自做 NAT,后面带来的设备将不在一个大的二层网络上,也放弃。(如果 Router2、Router3 通过 VPN 到 Router1 还是存在类似的跨三层问题)。
  • 该组网的方案相当于把 Modem 的拨号、NAT 等功能移动到外置的 Router1,并把 Router1 的本地局域网反向接入到 Modem,利用 Modem 下面 LAN 口之间二层互通的特性,再连接到其他路由器上。

我测了下电信送的光猫(型号为 TEWA-700E)LAN 口有如下特性:不管是否带有 tag 头的包均能在各 LAN 口之间转发。可以把 Modem 的 LAN 口看做是交换机上具有相同缺省 vlan 的 trunk 口(假定缺省 vlan 为 1)。

有时客厅和主卧要看 IPTV,利用单线复用的思想,在 Router1、Router2 的 WAN 上打通 Vlan43 走 IPTV 业务,并将该 VLAN 绑定到Router1、Router2 的 LAN 口(该端口配置为 untag 模式),剥离 vlan 的 tag 头后连接到 IPTV 盒子。

物理网口与 siwtch 连接关系确定

我猜测 R3G 的内部的 switch 网口连接如下:

图 2  R3G 内部 switch 连接图
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

R3G(Padavan)系统 Linux上有 eth2、eth3、ra0、ra1、rai0、rai1 网卡,接线如上图,其中 eth2、ra0、ra1、rai0、rai1 配置成一个网桥,相当于一个交换机、它们在二层网络上互通。(下图未出现rai1是因为我没有开启 5G guest wifi)

图 3  R3G 网桥信息
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

图2中的红色框表示:switch和CPU及WAN/LAN的对应关系。 “switch vlan dump”命令结果里portmap的位置表示switch的网口,如“111-1-1”,从左到右序号从0到6(共7位)表示switch的7个网口。(其他路由器如果极路由4增强版,虽然用的也是MT7621A的处理器,其switch和CPU、WAN/LAN的对应关系却不太一样。自行配置switch前,需弄清WAN/LAN/CPU等网口与switch的对应关系)

图 4  R3G内部VLAN
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

确定 switch 和 CPU、WAN/LAN 的对应关系,黑鸟博客用了以下两种方法:

  1. 用“switch dump”看交换模块的二层转发表,根据其中的mac(即可知道对应的设备)和各个设备所连接路由器的网口,确定CPU、WAN/LAN连接的switch的位置。该命令输出结果中port(0:6)字段(共有8位,最后一位忽略)的位置和之前portmap对应。

图 5  R3G内部switch二层转发表
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

  1. 在路由界面上“端口隔离和 VLAN 过滤”页面,设置各种组合,在后台观察哪些位置的网口发生变化从而确定各个物理网口与switch的对应关系。(备注:为避免在配置 switch 过程中连接中断,建议从wifi登录路由器)。

 

同理猜测得出小米 mini 的内部连线(可知 CPU 只有一个物理网卡连接 switch,这点 MT7621 确实比 MT7620 有所增强):

图 6  小米 Mini 内部 switch 连接图
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

主路由器Router1(R3G)设置

根据规划R3G路由器从vlan94进行PPPOE拨号、从vlan43走IPTV业务。只需在界面上完成如下设置即可:

图 7  R3G页面配置vlan
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

完成设置后此时路由vlan情况如下:

图 8  R3G自动配置的vlan
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

分析可知(结合“图 2  R3G内部switch连接图”):

  • vlan94连接1(WAN)、5(CPU),可知CPU可以从94进入switch经过WAN口到Modem完成PPPOE拨号,此类包进出Router1均带94tag头;
  • vlan43连接1(WAN)、3(LAN1)、5(CPU),IPTV盒子连接LAN1经过WAN口走IPTV业务,此类包进出Router1均带43tag头;
  • vlan1是路由器本地局域网,IP、LAN2、内部网桥(接无线)在此 vlan 上;
  • vlan2是系统自己配置的vlan连接1(WAN)、5(CPU),路由从 WAN 口收到不带 tag 的数据包,通过 switch 会打上 2tag头上送到 CPU 的 2 口;

根据规划,要求将 Router1 的本地局域网回送到光猫,有如下 2 个方法:

  1. 将2加入到网桥br0,这样 Router1 内部的 vlan1、vlan2 就合并了,本地局域网的数据包直接通过网桥 br0 经过 vlan2,从WAN 后出去(不带 tag)回送到 Modem;

配置:在路由器启动后执行“brctl addif br0 eth3.2”即可;

  1. 在 switch 上完成本地局域网的转发:
  • 取消 vlan2 里的各个端口;
  • 将 switch 的 1 号(WAN)口划入 vlan1,并设置该网口的确实 vlan 为 1;
  • CPU 无需连接 vlan43(因为 IPTV 是盒子自己拨号的无需路由器CPU参与);
switch vlan set 1  1110101 0 0 uuu-u-u

switch vlan set 2  0000000 0 0 -------

switch vlan set 43 0101000 0 0 -t-u---

switch vlan set 94 0100010 0 0 -t---t-

switch reg w 0x2004 0x570003

switch reg w 0x2104 0xFF0003

switch reg w 0x2204 0x570003

switch reg w 0x2304 0x0A0003

switch reg w 0x2404 0x570003

switch reg w 0x2504 0x220003

switch reg w 0x2604 0x570003

switch pvid 0 1

switch pvid 1 1

switch pvid 2 1

switch pvid 3 43

switch pvid 4 1

switch pvid 5 1

switch pvid 6 1

MT7621A的vlan设置涉及到matrix寄存器的设置;(如果不会以后会具体讲)

由于每次修改各个 vlan 里的成员端口都要手动计算各个端口的 matrix 值,比较繁琐。本人自行开发了一个自动计算/配置的脚本:(需在所有switch vlan set 。。。命令之后运行),该脚本会根据 switch vlan dump 命令结果里的 portmap 列表计算matrix:

将下面的脚本拷贝到Padavan上,直接运行即可,默认是打印设置寄存器的命令(相关命令可以贴到路由器的启动后执行脚本里)。后面加“w”参数,表示脚本在打印的同时执行相应命令。(自行开发用用的,未经专门测试,不喜勿喷)
链接: https://pan.baidu.com/s/1h7Ob8BcXAaW6DjlZqSOO9g 提取码: xwrx
图 9  自动设置matrix脚本
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

按网络规划设置R3G路由器后,vlan相关数据如下图所示。

图 10  R3G最终vlan配置
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

黑鸟博客测试了上述的 2 个方法都可以实现期望功能,但是推荐使用第2种,因为数据包可以在 switch 上直接转发,没有必要上送到 CPU 的网卡再通过网桥转发,回到 switch,白白消耗路由器性能,但是此方法配置较复杂。如果嫌麻烦并且也不想了解 switch 网口各种对应关系,直接用第一种方法就可以了。

图 11  主路由器额外配置
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》
 

辅路由器Router2(小米Mini)设置

Router2主要功能是:

  • WAN 口上 vlan1(不带 tag)的包用做 wifi 的热点数据源,并连接到 LAN2 口(不带tag);
  • WAN 口上 vlan43(带 tag),连接到 LAN1 口(剥掉 Tag),给 IPTV 用;

要实现上述的功能,Padavan 的 AP 模式是接近的,理论上在界面上设置 AP 模式后,手动修改 switch 完成 vlan43 的转发要求即可。

黑鸟博客在设置路由器为 AP 模式后,默认 vlan 配置如下:

图 12  小米 mini AP 模式默认 vlan
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

尝试过以下方法:

switch vlan set 0 1  10111011 0 0 u-uuu-tt

switch vlan set 1 43 01001000 0 0 -u--t---

switch pvid 1 43

图 13  AP 模式设置后的 vlan
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

发现 switch 的 1 号口(LAN1)上有 43vlan 的二层转发表,4 号口(WAN)上却没有。

查阅相关资料后,在上述三条命令的前面再增加了“mtk_esw 64 0x00020003 0x002B002B”,即通过mtk_esw命令设置vlan条目;

mtk_esw 64 0x00020003 0x002B002B

switch vlan set 0 1  10111011 0 0 u-uuu-tt

switch vlan set 1 43 01001000 0 0 -u--t---

switch pvid 1 43

查看switch上vlan相关配置:

图 14  AP 模式 mtk_esw 设置后的 vlan
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

发现此时二层转发表里有各种 vlan 的条目了,其中 43vlan 的转发条目和对应的端口信息都是正确的,1 号口(LAN1)上有 43vlan 的二层转发表,4 号口(WAN)也有了,但是此时 IPTV 业务依然无法使用,无法理解

Padavan 固件在 AP 模式下,其“外部网络 (WAN) – 外网设置”这页面时无法使用,所以我也没有办法从页面上进行相关 vlan 的设置。

感觉 MT7620A 的处理器内部 switch 配置 vlan 后,也需设置下相关的寄存器,网上找不到资料,无法解决。这里如果有高手看到如果有办法解决,希望指点一二,本站黑鸟博客不胜感激。

既然解决不了,只能绕过去了。设置路由器为默认的路由模式,在页面上配置相关的 vlan 数据,然后修改 vlan 相关配置让 WAN 进来的(不带tag头的)数据包直接上送到网桥(不走 CPU 及 NAT)。页面上的配置如下:

图 15  路由模式小米 Mini 页面 vlan 配置
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

上述配置完成后,switch配置如下(此时IPTV业务可以正常使用):

图 16  页面设置后的vlan
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

此 Router2 工作在路由模式下,家庭局域网的数据包不带 tag 从 WAN 进入路由器,经 NAT 后通过网桥 Br0 由 wifi 发射出来,这将导致从 Router2 的 wifi 连接上来的设备与主路由器 Router1 连接上来的设备不在一个 2 层的网络里。修改如下:

switch vlan set 1 2 00000000 0 0 --------

switch vlan set 2 6 00001011 0 0 ----u-tt

switch pvid 4 6

ifconfig br0:0 192.168.199.201 netmask 255.255.255.0

ifconfig eth2.6 0.0.0.0

brctl addif br0 eth2.6

ifconfig eth2.2 0.0.0.0

route add default gw 192.168.199.1

echo "nameserver 192.168.199.1" > /etc/resolv.conf

Router2 不要做 NAT,即 vlan2 无需使用,通过 vlan6 将 WAN口上将不太 tag 的数据包上送到 CPU 的 eth2.6 虚拟网卡,将该 eth2.6网卡加入到网桥 br0,让家庭局域网的数据包能到网桥 br0,再连接到各个 wifi 网卡和 LAN2。注意:

  • 这里一定要将数据包上送到 br0,这样 Router2 的 wifi 才能将接入的设备连接到家庭局域网里,不能再switch上直接转发);
  • 这里要另外起一个 vlan 连接 WAN口和eth2(即vlan6),如果直接用 vlan2,即要求将 2 加入到网桥 br0 中,但此时eth2.1 已经在网桥里了,相当于将 HNAT 的输入(eth2.2)和输出(eth2.1)接在一个交换机(br0)上,将导致路由器死机,无法登陆;
  • 因为默认 Router2 会在 br0 上起一个 DHCP 服务器,该 DHCP 将和 Router1 的 DHCP 冲突,应该配置关闭 Router2 上的DHCP、DNS、防火墙等(最重要的是 DHCP 一定要关);
  • Router2 的 LAN 网络地址也要避免和 Router1 里的 LAN 在一个网段里,否则局域网的网关冲突。主路由器是配置的 168.199.1,Router2 要避开它;

图 17  辅路由器内网IP设置
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

完成上述配置后,Router2将可以完成网络规划中的预期功能。虽然实现上走了野路子,但功能上是实现了,只是不够简洁。最主要的问题还是在AP模式下switch不能正常转发vlan43中的数据包(可能刷Router2刷Pandorabox更加合适吧)。

图 18  辅路由器最终vlan
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

辅路由器Router3(小米Mini)设置

该路由器设置为Padavan的AP模式,直接在页面上操作即可,无需多言。

TEWA-700E光猫设置

配置该光猫之前需先获取其超级用户名和密码,详见:

https://jingyan.baidu.com/article/ae97a646032107bbfd461d18.html

关于用户侧 VLAN 的理解,之前看过相关光猫 vlan 的配置,我的理解用户侧 vlan 是:家庭网络接入光猫后,如果收到带有所配置用户侧 vlan tag 头的包,光猫将自动剥掉该 tag 头,然后打上 WAN(运营商)侧的 vlan 的 tag,发到运营商。相当于替换了 tag 头里的 vlanid 字段。如下图:

图 19  用户侧VLAN绑定
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

即eth0 网口上收到带8tag的包,将替换为 94tag 的包发送给运营商,运营商回来的带 94tag 的包再替换为 8tag 的包,回到用户侧。

但是我在配置实践过程中,配置用户侧为 94 绑定到 1_INTERNET_B_VID_94(我所在的城市运营商是用 vlan94 提供网络服务的)。路由器时无法正常拨号的。这一点我比较难理解,希望论坛里的高手不吝赐教。

我的配置是这样的,删除所有的 vlan 侧绑定:

图 20  光猫 PPPOE 设置
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

       这样光猫就是纯粹的收包转发,路由器所发出的包,已经携带了运营商提供网络服务 vlan 的 tag 头。Router1 此时 PPPOE拨号成功;

同理也关闭光猫上 IPTV 网络连接的 VLAN,如下图:

图 21  光猫IPTV设置
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

       光猫最主要的就是要完成上述两个地方的修改(这前提是:要求家庭网络PPPOE和IPTV的vlan规划和运营商提供的vlan一致),其他不要动;额外说明如下:

光猫内置一个 DHCP 服务器默认不带 tag 头,所以会和 Router1 的 DHCP 服务器冲突,所以要关闭光猫的 DHCP 服务器。光猫用户侧的 IP 地址也要避免与家庭局域网的IP在一个网段,否则可能造成 IP 冲突(如果要访问光猫页面,只需在连接家庭 wifi 后,手动在无线网卡上绑一个同网段的 IP 即可,如 192.168.1.6/24)。

规划中 Router1 连接在光猫的 LAN1(千兆)、Router2、Router3 分 别连接 LAN2、LAN3(百兆)。(如果要把光猫的 IPTV 口用作 LAN 口,只要将光猫的“1_INTERNET_B_VID_”配置页面中“LAN 端口绑定”中的 iTV 勾选选中,同时将“4_Other_B_VID_”配置页面中“LAN端口绑定”中iTV勾选去掉。)

图 22 光猫关闭 DHCP
《Padavan固件单线复用PPPOE、LAN局域网、IPTV网络电视》

       我的光猫是放在弱电箱(铁制的)里的,它的 wifi 信号几乎可忽略,所以我关闭了光猫的 wifi。

完成上述配置后,我所规划的网络基本实现:从 Router1、Router2、Router3 接入的 wifi 设备都在一个二层局域网里,这些设备IP地址都是由主路由器 Router1 分配,所有的设备最终都是通过 Router1 访问 Internet,Router1 上的 KP、$$、多媒体服务器等都可以被家里所有的设备使用,Router2、Router3 只是做 wifi 热点的扩展。连接在 Router1 及 Router2 的 LAN1 口上的 IPTV 盒子时也能正常观看网络电视。

问题说明:

  • Router1、Router3 的管理页面上可以看到所有接入家庭网络的设备列表。Router2 的管理页面上无法显示。
  • 家里是电信 100M 的宽带,连接主路由器 Router1 的 5G wifi,下载速度 10MB/s 左右基本跑满。但连接辅助路由器Router2、Router3 的 5G wifi,下载速度只有 6-7MB/s,我感觉是光猫的包转发速率不足导致。

(转载)

点赞
  1. 红嘴鸭说道:

    太专业 看的都不太懂 :biggrin:

  2. 惠帮帮说道:

    博主好厉害,写的这么专业

发表评论

电子邮件地址不会被公开。 必填项已用*标注