OpenWRT折腾记 - 2
前面帮那个哥们装完星际宝盒的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进行认证,所以现在还没有网络,需要先手动安装dogcom和luci-app-dogcom,dogcom的手动编译我上篇博客已经说得很明白了,不再赘述;况且dogcom作者mchomeRelease了一个misp_24kc的版本出来,适用于新三、小米AC2100等。我是这样安装的,首先在电脑上下载插件,进入到插件目录,Shift+右键呼出菜单,然后再点击在此处启动PowerShell,输入python -m http.server,这要求您的电脑有Python环境。然后在路由器中看自己的IP或者使用主机名,我这里使用主机名,命令如下:
1 | opkg install http://EvydePC:8000/dogcom.ipk |
或者您也可以在LUCI界面的系统->软件包处上传软件包并安装。
配置好Dogcom之后,就能上网了。首先打开,点击更新列表...来更新软件源,当然您也可以使用opkg update来更新。
扩容
我觉得新三的闪存不太够,于是插了一个U盘(也为后来部署NUT工具留下了伏笔),下面就是把软件包安装目录挂载到U盘了,参考这篇文章即可,但是原文有些命令格式不太对,我这里重新引用一下命令(这些软件包也可以在图形化界面里安装,但是因为图形化界面和这个同步,所以这样安装也可以):
1 | # 安装插件 |
建议重启路由器,再在图形化界面里进行挂载,具体在系统->挂载点,然后点击添加,选择U盘设备(通过大小可以判断),此时应该会只有一个选项就是挂载点,选择作为外部 overlay 使用(/overlay),顺便把启用的勾打上,保存并应用,最后建议重启一下。
换主题
这里推荐Argon,博主列出了详细的安装方法,这里不再赘述,就是一定要注意一下LEDE系统和OpenWRT系统的插件不一样。装完之后记得装配套的配置插件。换完之后可能报错,装一下luci-compat就好了。
汉化
首先,在系统->语言和界面里面选择对应的主题和语言,然后,安装能安装的所有软件包的对应汉化包,比如系统自带软件firewall,在软件包搜索的时候发现其有一个luci-i18n-firewall-zh-cn的汉化包,安装所有能安装的以luci-i18n开头-zh-cn结尾的汉化包。
插件
官方插件
我这里列出的,都是软件源里有的插件。我直接先列出命令:
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。
还是先上命令:
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是可以正常使用的。外部系统日志服务器端口和外部系统日志服务器协议保持默认的514和UDP即可(和服务器那边的配置相同),除非有特殊需求,否则建议就这样,毕竟缓冲区为0要用TCP的话似乎有点慢。日志记录等级建议改成注意,不然有好多无用的日志会堆到日志服务器里(除非需要找Bug再改成别的)。
后记
至此,一个可用的OpenWRT系统算是调试好了,至于一些其它功能,我在群晖/内网服务器里面进行了实现,下一篇博客会讲。我觉得路由器干好路由器的事情就好了,甚至那些修改DNS的插件都应该放在内网服务器单开一个DNS服务器,不过那是后话了,这是我一贯的思想:需求分离。


