生之为萌,乐享创造

OpenWrt 折腾全记录

鼓足干劲,力争上游,多快好省地建设宿舍网络。

虽然我们学校作为一所理应提供更好网络的学校,但现实总是残酷的。我校的校园网一个月才免费 10 GB,超出部分 3 元 1 GB,这价格堪比移动的 5 元 30 MB 了。不过,学校提供了不限制流量的有线网络。然而最高速率的套餐仅仅也只是 300 元 180 天 20 Mbps 理论下行。在如今这个随随便便就要下个数十 GB 文件的时代,这个网速实在是需要狠狠地批判一番。

于是,在和舍友 PY 商量一番之后,总共拿到了 5 个上网账号。那么,开始愉快地改造宿舍网络吧。

0x0 前期准备

首先需要准备能刷 OpenWrt 的路由器。这里我用的是斐讯 K3 和 K2。为什么要用两个路由器呢?因为虽然理论上 K3 的硬件足以使信号覆盖整个宿舍并带动 20+ 设备,但由于 OpenWrt 对 K3 的支持至今不好,所以信号远不如原厂系统强。另外就是宿舍又两堵奇怪的墙,所有路由器的信号隔墙必削减到几乎为 0 的程度。所以就用 K2 配合。

之后给路由器刷上 OpenWrt。这里因为 K3 是作为主路由的,需要负责如 KMS 服务器、正确上网等服务,所以我直接刷了 Lean 的整合版。K2 是作为副路由的,只需要保证 QoS 等的正常并充当交换机的作用即可(后面会详细说说);加上它本身的闪存容量并不大,所以就直接刷了官方原版 OpenWrt。

再就是,记得准备一根网线。

0x1 单线多拨——提升网络速度

提升上网体验的第一步就是提升上网速度。由于学校每个人的位置只有一个网口,所以需要采用单线多拨的方式。

目前多拨主要采用的是 mwan3。这里我们就基于这个来配置。

首先安装 mwan3 和 macvlan。可以在“软件包”里直接搜索并安装kmod-macvlan mwan3 luci-app-mwan3这三个软件包。或者,也可以在 SSH 里敲:

接下来,删除原有的所有 wan 接口(包括 wan6 等),只保留 lan,如下图:

《OpenWrt 折腾全记录》

由于删除了所有的 wan,我们会丢失 eth0.2 这个网卡。为了找回,我们新建一个接口,名称任意(这里我使用了 interface 作为新接口的名称),选择“不配置协议”,“包括以下接口”选择 eth0.2

《OpenWrt 折腾全记录》

创建之后,在“高级设置”中选择“开机自动运行”。

《OpenWrt 折腾全记录》

“物理设置中”切记不要勾选“桥接接口”。“防火墙设置”选择 wan

《OpenWrt 折腾全记录》

这样 eth0.2 接口找回来了,如图所示。

《OpenWrt 折腾全记录》

接下来在 eth0.2 接口上建立 vlan。登录 SSH,输入以下命令:

因为我在宿舍里需要单线实现五拨,所以就建立了 5 个 vlan。可以根据实际情况进行调整。下面开始建立连接。

在“接口”中选择“添加新接口…”,输入名称(这里我用了 wan0 ~ wan4),协议选择 PPPoE,“包括以下接口”选择我们刚才建立的 vlan,比如 wan0。之后,输入上网账号和密码。

《OpenWrt 折腾全记录》

然后,在“高级设置”中,勾选“开机自动运行”,然后填写“使用网关跃点”值。注意,每个连接的网关跃点不能相同。

《OpenWrt 折腾全记录》

防火墙区域仍旧选择 wan。点击“保存&应用”之后就会自动拨号了。

按照同样的步骤,完成每一个连接接口的创建。物理接口分别对应之前创建的 vlan,防火墙仍旧选择 wan。不同的是网关跃点不能相同。完成之后开始配置 mwan3 叠加带宽。

在“网络”下找到“负载均衡”或者“Load Balancing”。如果保留有 mwan3 初始默认建立的接口,全部删除,因为这些接口的名称和我们上一步中创建的连接接口不同,对我们来说没有用了。

按照上一步中连接接口的名字,在 mwan3 里创建对应的名字相同的接口。主要需要设置的就是 Ping 地址,这是用来检测是否已经连接上的,最好设置成那种几乎不会宕机的网站。

《OpenWrt 折腾全记录》

然后在“Members”(中文叫“成员”)选项卡里,同样先删掉 mwan3 默认创建的所有成员,之后新建与上面接口对应的成员。名字随意(例如 wan0_m0_w0 等),接口选择上面创建的。跃点数和比重的话,因为我们是单纯的多拨,不牵扯负载均衡相关的深入操作,所以都设置为 1 就好。

《OpenWrt 折腾全记录》

完成之后,切换到“Policies”(“策略”)选项卡,除了 balanced 其他的都删掉,点击“修改”,添加所有的成员。

《OpenWrt 折腾全记录》

切换到“Rules”(“规则”)选项卡,照样删掉多余的,新建或者就利用默认的 default_rule。要修改的是“分配的策略”(“Policy assigned”),选择我们上一步创建的策略,其他如图即可。

《OpenWrt 折腾全记录》

保存并应用之后,多拨应该就生效了。可以在“状态”中的“负载均衡”(“Load Balancing”)查看状态。

《OpenWrt 折腾全记录》

0x2 QoS——改善网络质量

宿舍的每个人毕竟上网习惯是不一样的,经常会出现一个人在玩游戏(要求低延迟)的同时另一个人在下载东西(要求高速度)。这样就需要保证不同网络业务的优先级,达到在一定容量的网络环境中的最大化——这就是 QoS 的目标。

现在 OpenWrt / LEDE 常用的一种 QoS 是 SQM QoS。至于具体和以前的石像鬼 QoS 有什么区别,我还没有仔细查阅过相关资料。这里我们基于 SQM QoS 进行配置。

在开始之前,先进行网络测速。如果开启了任何 QoS 和 / 或类似的东西,需要先关闭。

没有安装 SQM 的话,先安装 luci-app-qos。然后在“网络”中找到“SQM QoS”。

《OpenWrt 折腾全记录》

勾选“Enable this SQM instance”。接口的选择取决于想要限制什么:如果是针对某一连接类型(有线或无线)限制,选择该连接即可;如果是想全部限制,选择 br-lan(lan) 即可。

然后根据先前的测速结果,将实际结果乘上 80%~95%,填入下面速度框中。需要注意的是,如果上一步选择的是 br-lan(lan),那么这里的上下行速度需要反着填(即上行速度填到下行速度处,下行速度填到上行速度处)。

然后,在“Queuing Discipline”中,第一项选择 cake,第二项选择 piece_of_cake.qos。到这里 QoS 就赋配置完毕了,点击“保存并应用”使之生效。

《OpenWrt 折腾全记录》

0x3 路由器改交换机——扩展网络范围

开头提到过,因为宿舍建筑问题,不得不使用两个路由器。但同时又想要都能享受到高速网络,那么我们可以将次级路由改为交换机使用,这样既继承了主路由的网络,同时连接到次级路由的所有设备由主路由分配 IP 地址(不产生新的子网),方便管理。

在完成配置前不要将次级路由连接到主路由。

登录到次级路由后台,修改 wan 口地址为静态地址。IP 地址设置成主路由中唯一的不会被其他设备占用的地址,网关和 DNS 服务器填写主路由的地址。

《OpenWrt 折腾全记录》

然后配置 VLAN。在“网络”中选择“交换机”,将多余的 LAN 口都设置为如下图 LAN 1 ~ 3 的样子,1 选“关”,2 选“未标记”。当然可以都改,我这里留了一个是方便维护。

《OpenWrt 折腾全记录》

进入无线设置,将无线接口的“网络”改为 wan。如果不能修改,那么删掉原有无线接口后新建。

《OpenWrt 折腾全记录》

配置防火墙,将 wan 的 Input 改为 Accept(接受)。这是为了日后能通过访问我们之前设置的 wan 口 IP 访问次级路由。

《OpenWrt 折腾全记录》

最后修改次级路由的 lan 口 IP。注意网段要和主路由不同,避免冲突。

《OpenWrt 折腾全记录》

至此配置完成

0x4 参考资料

OpenWrt 路由器 macvlan 单线多拨的方法

https://blog.csdn.net/lvshaorong/article/details/70568791

OpenWrt 可以保证插件可用的 AP 模式设置

https://blog.csdn.net/w763613202/article/details/78471442

0x5 其他

本来想再写一写关于用 OpenWrt 实现 802.11r 漫游,不过因为我两个路由器距离还是蛮近的,所以设置同名信号还是会有比较大的冲突,暂时先搁置了。日后有机会再写吧。

发表评论

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