It has been 1118 days since the last update, the content of the article may be outdated.

前面帮那个哥们装完星际宝盒的OpenWRT之后,发现空载时的核心温度为80℃以上,于是我也想装一个体验一下,看到他的界面比Padavan好看,而且还支持KMS服务器什么的插件,然后我也给我的新三(NewWiFi D2)装了一个。

目录

前言

首先说明,我会尽量使用图形化界面来进行配置,因为命令配置通常是无记录且不可逆的。

刷机

刷机就不说了,恩山论坛上一大把自编译固件,但是我用的是官方固件,因为装各种包的玄学问题会尽量少(折腾那个哥们的OpenWRT已经充分让我感受到了什么叫玄学),在这里找到d-team_newifi-d2-squashfs-sysupgrade.bin,注意一定要是squashfs-sysupgrade的,另一个真的是纯净版系统,啥都没有,连WiFi驱动都得自己装的那种,很不推荐。这个有一些基本的功能,算是一般定义的纯净了。然后可以使用主机名来访问路由器,这样就不用看网关了,有些固件的默认网关地址不是192.168.1.1而是别的,但是主机名一般都默认是OpenWRT,在浏览器里输入OpenWRT/来访问管理界面。同理,以后需要输入内网IP的地方都可以使用主机名来代替(一般情况下,我测试log服务器不能用主机名连接,可能是bug)。

换源

装好之后,就可以换软件源了,参考清华源使用帮助更换源,由于我校校园网使用DrCOM进行认证,所以现在还没有网络,需要先手动安装dogcomluci-app-dogcomdogcom的手动编译我上篇博客已经说得很明白了,不再赘述;况且dogcom作者mchomeRelease了一个misp_24kc的版本出来,适用于新三、小米AC2100等。我是这样安装的,首先在电脑上下载插件,进入到插件目录,Shift+右键呼出菜单,然后再点击在此处启动PowerShell,输入python -m http.server,这要求您的电脑有Python环境。然后在路由器中看自己的IP或者使用主机名,我这里使用主机名,命令如下:

bash
1
2
opkg install http://EvydePC:8000/dogcom.ipk
opkg install http://EvydePC:8000/luci-app-dogcom.ipk

或者您也可以在LUCI界面的系统->软件包处上传软件包并安装。
配置好Dogcom之后,就能上网了。首先打开,点击更新列表...来更新软件源,当然您也可以使用opkg update来更新。

扩容

我觉得新三的闪存不太够,于是插了一个U盘(也为后来部署NUT工具留下了伏笔),下面就是把软件包安装目录挂载到U盘了,参考这篇文章即可,但是原文有些命令格式不太对,我这里重新引用一下命令(这些软件包也可以在图形化界面里安装,但是因为图形化界面和这个同步,所以这样安装也可以):

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 安装插件
opkg install fdisk swap-utils kmod-usb-storage kmod-fs-ext4 e2fsprogs kmod-usb-ohci kmod-usb-uhci block-mount

# 使用fdisk对U盘进行分区,/dev/sda是U盘

fdisk /dev/sda
# 依次输入以下字符

p
d # 删除U盘分区
n
p
1 # 分区数量
<回车> # 默认分区起点
<回车> # 默认分区尾部
w # 保存配置
# 格式化

mkfs.ext4 /dev/新建分区的名字 # 一般sda

# 挂载

mount /dev/sda /mnt/sda
# 如果提示没有找到文件夹,可以先使用mkdir /mnt/sda建立文件夹

cd /mnt/sda
ls
# 显示结果lost+found即为成功
# 迁移/overlay数据

cp -r /overlay/* /mnt/sda # sda是新建分区的名字
# 最后查看/mnt/sda目录下是否有了/overlay目录的数据,有则成功

建议重启路由器,再在图形化界面里进行挂载,具体在系统->挂载点,然后点击添加,选择U盘设备(通过大小可以判断),此时应该会只有一个选项就是挂载点,选择作为外部 overlay 使用(/overlay),顺便把启用的勾打上,保存并应用,最后建议重启一下。

换主题

这里推荐Argon,博主列出了详细的安装方法,这里不再赘述,就是一定要注意一下LEDE系统和OpenWRT系统的插件不一样。装完之后记得装配套的配置插件。换完之后可能报错,装一下luci-compat就好了。

汉化

首先,在系统->语言和界面里面选择对应的主题和语言,然后,安装能安装的所有软件包的对应汉化包,比如系统自带软件firewall,在软件包搜索的时候发现其有一个luci-i18n-firewall-zh-cn的汉化包,安装所有能安装的以luci-i18n开头-zh-cn结尾的汉化包。

插件

官方插件

我这里列出的,都是软件源里有的插件。我直接先列出命令:

bash
1
opkg install miniupnpd nlbwmon nut nut-common nut-upslog nut-upsmon nut-upssched luci-app-autoreboot luci-app-nut luci-app-nlbwmon luci-app-upnp
插件名称 作用
luci-app-autoreboot 设置定时重启
luci-app-nut, nut, nut-common, nut-upslog, nut-upsmon, nut-upssched Network UPS Tools(NUT)管理NUT工具
luci-app-nlbwmon, nlbwmon 流量统计
luci-app-upnp, miniupnpd UPnP管理

官方的就这些,记得装汉化包。

第三方插件

这里列出的,都是网上找的插件,很不稳定,甚至有的插件作者已经不再更新,但是有另外的开发者fork到他那里更新,比如vlmcsd
还是先上命令:

bash
1
opkg install vlmcsd frpc luci-app-vlmcsd luci-app-frpc
插件名称 作用
luci-app-frpc,frpc Frpc内网穿透,作者唯一且仍在更新
luci-app-vlmcsd, vlmcsd KMS服务器,用于自动激活内网MicroSoft产品,作者已停止更新,第三方开发者仍在更新

好像我听说还有一个JetBrains全家桶激活的,不过我没有相关需求就没装。 以及老生常谈Clash,我只能说OpenWRT上的OpenClash非常阴间,完美诠释了Open这个词,这个OpenClash甚至不如老毛子固件的好用。如果非要用,建议用ShellClash,或者和我一样在另一个设备上装ShellClash,按需手动切换,具体还是见我之后的博客。

配置

这些插件都需要配置,大多数按默认配配置可以很好地工作,这里主要说一下NUT的配置,尤其是和群晖搭配使用,这个我打算单开一篇博客说,顺便说一下群晖的配置。

IPv6配置

教育网IPv6一直是个老大难问题,我一直在找一个较为完美的解决办法,网上一共有三种办法,第一是NAT转发,但是我觉得这样相当不妥,违背了IPv6的初衷(就和去中心化加密货币整出个交易所一样可笑);第二种是路由器桥接,就是把所有IPv6包直接交给上游处理,这样虽然比较稳定,但是有两个问题:日志里会产生一大堆错误、路由器本身没有IPv6地址。第三种就是利用自带的DHCPv6客户端进行管理了,这里介绍的也是这种办法。
我之前看教程,一直不明白到底为什么这样操作,而且按照各种教程操作完都不管用,后来在一个将睡未睡的夜晚,我顿悟了,第二天一顿操作,直接就能用了,下面我来说一下我理解的“原理”和操作办法。
首先说一下,我们这里的校园网IPv6不需要认证,插上网线就可以上网,会分配一个/64的地址,所以可以用这种办法再往下分。以及所有的配置都在网络->接口里面。

WAN6

首先从这个接口讲起,这个接口是很重要的,我一开始以为这个接口通了之后,LAN设备就可以通过这个接口上网,和WAN口一样,后来发现不是,这个不像WAN口是NAT转发,要用我们的方法的话,这个接口就只是给路由器本身上网的(大概)。网上有许多改配置文件的,实际上我看就是把WAN6的DHCP服务器打开,但我仔细一想,WAN6和WAN本身都是一个物理接口,开哪个应该都一样;况且OpenWRT官方没给WAN6增加DHCP服务器这个选项可能就是不想让我们随便动。那我们就不动,WAN6的设置保持默认。在我这里,如下表:

设置类别 选项名称
常规设置 协议 DHCPv6客户端
常规设置 请求 IPv6 地址 try(尝试)
常规设置 请求指定长度的 IPv6 前缀 自动
高级设置 使用内置的 IPv6 管理 取消勾选
高级设置 强制链路 勾选
高级设置 使用默认网关 勾选
高级设置 自动获取 DNS 服务器 取消勾选
高级设置 使用自定义的 DNS 服务器 2400:3200::1
高级设置 使用自定义的 DNS 服务器 2400:3200:baba::1
物理设置 桥接接口 取消勾选(记得一定不能把WAN和LAN桥接,会导致死循环访问不了网关)

以上是WAN6口的设置。

WAN

比较主要的来了,WAN口相对是很重要的,有的人按照教程操作了半天发现没有用,主要就是没打开DHCP服务器的开关。配置如下:

设置类别 选项名称
高级设置 使用内置的 IPv6 管理 取消勾选
高级设置 强制链路 勾选
DHCP服务器->常规设置 忽略此接口 取消勾选
DHCP服务器->高级设置 动态 DHCP 勾选
DHCP服务器->高级设置 强制 勾选
DHCP服务器->IPv6设置 路由通告服务 中继模式
DHCP服务器->IPv6设置 DHCPv6 服务 中继模式
DHCP服务器->IPv6设置 NDP 代理 中继模式
DHCP服务器->IPv6设置 主设备 勾选
DHCP服务器->IPv6设置 通告的 DNS 服务器 2400:3200::1
DHCP服务器->IPv6设置 通告的 DNS 服务器 2400:3200:baba::1

强制是因为LAN口已经有一个DHCP服务器了,但是中继出去肯定也有一个DHCP服务器,所以得勾选强制,因为WAN6是给路由器本身上网的,整个内网的IPv6配置可以说和WAN6关系不大,所以WAN口就是主设备。

LAN

这个主要就是求稳,所以我也不设置成中继模式,设置成混合比较稳,最好能把租约改成12h,这样会很稳。

设置类别 选项名称
高级设置 使用内置的 IPv6 管理 取消勾选
高级设置 强制链路 勾选
DHCP服务器->常规设置 忽略此接口 取消勾选
DHCP服务器->高级设置 动态 DHCP 勾选
DHCP服务器->高级设置 强制 取消勾选
DHCP服务器->IPv6设置 路由通告服务 混合模式
DHCP服务器->IPv6设置 DHCPv6 服务 混合模式
DHCP服务器->IPv6设置 NDP 代理 混合模式
DHCP服务器->IPv6设置 主设备 取消勾选
DHCP服务器->IPv6设置 DHCPv6 模式 有状态+无状态
DHCP服务器->IPv6设置 总是通告默认路由 取消勾选
DHCP服务器->IPv6设置 通告的 DNS 服务器 2400:3200::1
DHCP服务器->IPv6设置 通告的 DNS 服务器 2400:3200:baba::1

防火墙

记得把网络->防火墙里面的转发都改成接受。

重启一下路由器,IPv6地址应该已经有了,也可以上网了,我的纯净版固件不存在DNSMasq挡IPv6的问题,其它固件的用户需要注意下两个地方,一个是负载均衡里面的,另一个是DHCP/DNS服务器里面的禁止解析IPv6地址,取消勾选就好。

杂项配置

配置完IPv6,剩下的就是一些杂项的小配置了。

NTP

NTR NTP服务器想必大家都知道是干什么的,OpenWRT默认的是官方的服务器,国内还是用阿里云吧,在系统->系统->时间同步里面加入ntp1.aliyun.com就可以。

管理权限

我校是大内网,每台设备有固定的独立局域网(据说也是公网只不过被防火墙挡了)IP,所以有时候要通过外网管理,就需要调整一下管理权限,主要是SSH和uHTTPd这两个地方,详细调整就不描述了。

防火墙

防火墙主要就是IPv6的转发打开,以及允许WAN口传入,不然无法远程访问。

端口转发/UPnP

这里要注意一下,光开UPnP不管用,需要在防火墙里进行相应的设置才行。

密码

系统->管理权->主机密码这里。

静态DHCP地址

网络->DHCP/DNS->静态地址分配这里,添加即可,也可以设置主机名。

日志

官方固件默认会把日志写入文件,我偏不 但是这样就会出现一个问题,如果突然断电日志就无法存到文件里,这时候就需要一个日志服务器,一直运转的。我本来是想放到云服务器上的,后来整了群晖之后发现群晖的管理界面比较友好,就放到了群晖上。无论哪里,OpenWRT上的配置是差不多的。
系统->系统->日志里面,把缓冲区大小改为0,这样是为了将日志实时同步,这里缓冲区是按照kb计算的,对于日志来说已经相当大了,所以改成0就会把每一条日志都发送到服务器上。外部系统日志服务器地址这里按理说改成主机名是可以的,但是似乎不太行,公网域名我也没有试过,总之IP是可以正常使用的。外部系统日志服务器端口外部系统日志服务器协议保持默认的514UDP即可(和服务器那边的配置相同),除非有特殊需求,否则建议就这样,毕竟缓冲区为0要用TCP的话似乎有点慢。日志记录等级建议改成注意,不然有好多无用的日志会堆到日志服务器里(除非需要找Bug再改成别的)。

后记

至此,一个可用的OpenWRT系统算是调试好了,至于一些其它功能,我在群晖/内网服务器里面进行了实现,下一篇博客会讲。我觉得路由器干好路由器的事情就好了,甚至那些修改DNS的插件都应该放在内网服务器单开一个DNS服务器,不过那是后话了,这是我一贯的思想:需求分离。