Intro
斐讯大火的时候,我也没忍住入了一台 K2P,幸好成功下了车。不过可惜的是这台金色 K2P 用的是 BCM 博通芯片,没有 Breed 只有功能有限的 CFE,可刷的固件也少的可怜。
这次折腾的主要目的是实现单线复用,刷机可做可不做,但因为现在用的梅林跑不满 200M 带宽,只能保持在 150M 左右,所以这次决定刷回官方或者官改。
为什么要单线复用?
主要是为了在弱电箱与客厅之间只有一根网线连接的情况下实现以下目标
- 路由器放客厅:通常家庭路由器放弱电箱会导致 WIFI 信号变得很差
- 路由器拨号:运营商自带的光猫性能实在太弱,还要承担拨号上网的任务,导致网络经常断网,路由器拨号后光猫只主要负责光信号和电信号的转换
- 观看 IPTV:IPTV 需要从光猫的 iTV 口直连 IPTV,需要单独占一根网线,如果路由器放客厅那这跟网线就被路由器占用了,不过如果你没有第四点需求的话也可以直接选择支持 IPTV 的路由器或固件,再或者单独购买一个分线器。由于我家没有 IPTV 所以本文不会过多讨论 IPTV 的接入,实际上通过再划分一个 VLAN 可以完美实现
- 卧室有线 Mesh 组网或电脑接网线:卧室想要通过有线上网就需要让客厅路由器拨号后的上网流量能够传回到弱电箱,但弱电箱到客厅只有一根线,这时就需要用到单线复用了
普通刷机
准备工具
准备工作
首先需要让路由器进入 CFE。电脑连接路由器,然后将电脑 IP 地址改为固定 192.168.2.2,给路由器断电然后按住 reset 不放再开机,此时打开网关地址 192.168.2.1 即可进入 CFE。
Ps:可以在后台开一个ping 192.168.2.1 -t
来监视路由器状态,TTL 正常值为 64,进入 CFE 后为 100.。
开始刷机
打开 tftpd32,把Server interfaces
设置为你的网卡,将下载好的路由器固件放在 tftpd32 软件同级目录下。
浏览器依次打开:
http://192.168.2.1/do.htm?cmd=flash+-noheader+192.168.2.2:固件文件名+flash0.trx
http://192.168.2.1/do.htm?cmd=nvram+erase
http://192.168.2.1/do.htm?cmd=reboot
第一个地址是刷机命令,开始后在 tftpd32 上会显示进度,可以用过 ping 来查看刷机是否结束(刷机状态是 ping 不通的)。
最后等待路由器重启完成后即刷机完成!
拆机救砖
本来想看教程刷一个 AC9 的 CFE,这样就可以不用 tftp32 直接在 cfe 里刷机了,结果搞完直接进不去 CFE 了。所以就直接上编程器开整,另外 B2 也可以通过同样的方法刷回 B1 或者其它固件。
准备
- CH341a 编程器 + 免拆夹
- 安装好 CH341a 驱动
- NeoProgrammer 编程软件
- 16 进制编辑器(可选)
修改固件 MAC
如果是网上下载的别人的编程器备份建议修改 MAC 为自己的后再刷入,如果是自己之前的备份则可以跳过(不过如果是自己之前备份的应该也用不着看这一节吧)。
用 WinHex 或者 UltraEdit 之类的 16 进制编辑器打开固件文件,搜索关键词**et1macaddr
,我的是在 00fc0f10h
位置,可以大致参考一下上下文。把后面的 MAC 地址改成你路由器背面写的 MAC 地址即可。
拆机
K2P 的拆机部分很简单,只要把背部两个硅胶垫取下来,拧下里面的两颗螺丝,最后再从右上角用翘片之类的东西撬开,上半部分撬开后直接一点点用力掰下半部分就打开了,卡扣也不会断。
拆开背部后用免拆夹夹住 K2P 的 GD25Q127C 闪存芯片,这里注意一定不要夹错了,夹子红色线对着圆点标记的地方(图上红色箭头指向的白色圆点)。
编程器刷机
CH341a 连接电脑后路由器指示灯开始亮红灯,打开 NeoProgrammer,先点击检测
检查能否正常识别芯片,建议刷之前先点击 读取IC
备份一遍编程器固件,然后 擦除IC
,擦除完成后点 查空
。
打开文件
选择固件,注意是完整的编程器固件而非单独的路由器刷机固件不要搞混了!最后点击 写入/编程IC
进入刷机等待完成。
单线复用
接下来是重头戏,前面说了客厅到弱电箱只有一根网线,可是我想让路由器放在客厅并且由路由器进行拨号上网,同时要让网络回到弱电箱,让房间里的电脑可以上网。
一种解决方案就是本文使用的 VLAN 划分,VLAN(Virtual Local Area Network)即虚拟局域网,相关概念可参考网上资料,即便你不了解 VLAN 相关的概念,也可以按照下面的操作一步一步设置,一样可以达成单线复用的目标。
此方案的特点是对硬件要求不高,不需要交换机,唯一的要求就是路由器要支持VLAN,或者是可以开启路由器的telnet。
光猫设置
打开光猫后台管理,如何获取超级管理员账号密码这里不过多赘述,可以自己上网摸索。
因为要路由器拨号所以光猫只负责调制解调,因此光猫需要设置为桥接,进入网络
-网络设置
-网络连接
,选择用于上网的连接,将 连接方式
改为 桥接
,又因为要用到 VLAN,所以这里取消勾选所有的 LAN端口绑定
,点击保存。
然后进行 VLAN 设置,打开网络
-网络设置
-VLAN绑定
,选择一个光猫口作为 Trunk 接口也就是单线复用的端口,VLAN 设置为 2,这个 VLAN 2 用于 PPPoE 拨号,其余包括 VLAN 1 就是正常的上网数据。
光猫设置结束,接下来就是路由器设置。
路由器设置
设置的前提需要路由器打开 Telnet,开启方法自行寻找,这里主要介绍 VLAN 配置。
Telnet 连接路由器,使用命令查看路由器默认 VLAN 配置
robocfg show
查到路由器默认的 VLAN 为
vlan1: 0 1 2 3 8t
vlan2: 4 5
其它的不用管,这里我们只需要设置端口 4 也就是路由器的 WAN 口,VLAN 1 是经拨号后的正常上网的流量,VLAN 2 是 PPPoE 协议的拨号数据。所以我们需要将端口 4 也划分到 VLAN 1,这样才能让路由器的 WAN 口和 LAN 在一个广播域下,从而让拨号过后的数据流量经 WAN 口传回到光猫。此时端口 4 同时在 VLAN 1 和 VLAN 2 中,要实现正常上网数据和 PPPoE 协议数据分流,需要将 VLAN 2 中的端口 4 加上 Tag 标签。
更改路由器 VLAN 设置:
robocfg vlans reset vlan 1 ports "0 1 2 3 4 8t" vlan 2 ports "4t 5u"
再次查看 VLAN 配置:
vlan1: 0 1 2 3 4 8t
vlan2: 4t 5
让我们来大致整理一下数据流向,先来重温一下 PPPoE发现阶段建立连接的过程,路由器在 VLAN2 上广播 PADI 数据包以寻找 PPPoE 服务器的回应,此时通过端口 4 的 PADI 数据包将被打上 PVID 为 2 的标记,光猫接收到 PVID2 的数据后自动将包通过指定端口递交给上游 PPPoE 服务器,PPPoE 服务器接收到 PADI 请求后会回应一个 PADO 数据包,客户端收到 PADO 响应后再从中选择一个服务商发送 PADR,最后服务器收到 PADR 后会再发送一个 PADS 响应表示客户端与服务器已建立连接。之后客户端与 PPPoE 便可进行正常认证和数据通信,这些数据包全部都经过 VLAN 2 进行传播。PPPoE 拨号成功后,路由器便开始将正常的上网流量在 VLAN 1 中开始传播,而这里经过端口 4 回到光猫或路由器的数据都是 Untaged(未标记)的,光猫收到不带 Tag 标记的数据后则会将其转发到其它端口,再将卧室的电脑连接到光猫的其它端口便可以接收到来自路由器的正常流量。
上一下网络拓扑图,由于我家的光猫只有一个千兆口,所以最终在千兆口上接了一个千兆交换机,有没有都可以。
成果展示
最终卧室测速如下
卧室电脑关闭 WIndows 防火墙并开启 DMZ 后,可实现 NAT1
btw
网上还有很多其它不用 VLAN 实现单线复用的方法,比如路由器 WAN 口与 LAN 短接的方法,另一种是在客厅和弱电箱各放一台交换机,路由器 WAN 口和 LAN 均接到客厅交换机。后者应该是较为主流的方案,可惜这两个方案在我这里都不行,尽管检查过路由器的 WAN 口和 LAN 口 MAC 地址已经是不同的,采用这两种方案还是会出现广播风暴(仅代表我个人情况,一般使用这两种方案是没问题的)。
2023/10/22补充
今天放假回到家打开电脑,发现电脑没有网,看了以下路由器工作正常,经过排查后发现是VLAN设置被重置了,看来这个VLAN的设置是一次性的重启后就会恢复,所以需要在路由器的启动任务里也添加该VLAN设置
robocfg vlans reset vlan 1 ports "0 1 2 3 4 8t" vlan 2 ports "4t 5u"
2024/11/24补充
用了一段时间出现无法拨号的问题,考虑到应该是因为交换机无法识别 VLAN ID,导致无法返回到正确的PPPoE 服务器,把交换机去掉就解决了。
Reference
K2P 金色版解放啦!diy 的 cfe!附带刚刚编译的 7743 版华硕固件!
K2P真是一代刷机神机啊
其实说K2P刷机神机也只是说的A版MTK芯片的,B版BCM根本没几个固件能刷,刷来刷去最后用的还是官改。
我也是从K2P入坑软路由的
真是影响一批人的一代神机。