生之为萌,乐享创造

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 里敲:

opkg update
opkg install kmod-macvlan mwan3 luci-app-mwan3

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

《OpenWrt 折腾全记录》

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

《OpenWrt 折腾全记录》

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

《OpenWrt 折腾全记录》

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

《OpenWrt 折腾全记录》

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

《OpenWrt 折腾全记录》

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

ip link add link eth0.2 name vth0 type macvlan
ifconfig vth0 up
ip link add link eth0.2 name vth1 type macvlan
ifconfig vth1 up
ip link add link eth0.2 name vth2 type macvlan
ifconfig vth2 up
ip link add link eth0.2 name vth3 type macvlan
ifconfig vth3 up
ip link add link eth0.2 name vth4 type macvlan
ifconfig vth4 up

因为我在宿舍里需要单线实现五拨,所以就建立了 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 漫游,不过因为我两个路由器距离还是蛮近的,所以设置同名信号还是会有比较大的冲突,暂时先搁置了。日后有机会再写吧。

发表评论

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