由来
之前一直是使用k2p
刷openwrt
或者pandora
跑 xx 用,前几天看到了个 xx 的订阅地址给写到openwrt上了。结果运行了几天发现 web 上任何配置都无法更改,ssh 上去发现 touch 报错没有容量(而且重装后感觉还是有问题,github 访问也不稳定了),意识到 k2p 容量实在太小了,于是去恩山论坛逛了下准备买个 N1 盒子玩玩旁路由。
N1有8G的rom 2G的ram,cpu 是 armv8 的。询问了一番 pdd 上有卖的,132买的刷机版+刷机线
套餐(部分固件说好些白色的稳定,如果店铺能选颜色可以选白色的试试?,刷机线是双公头的USB,后期也可以用来救砖)。到手是安卓电视盒子系统,如果不刷机则是天天链
系统。推荐买刷机版本的,省去解锁boot分区啥的(但不是意味着就啥都不用做,毕竟还是要刷openwrt),如果没解锁可以去看 https://zhuanlan.zhihu.com/p/129414399 步骤跟着降级。下面步骤是我个人使用的,有些是需要键盘啥的,你没有键盘则应该思考我步骤的目的是干啥的。我步骤全部不带图,毕竟读者都懂Linux
刷机
- 网线一根
- 一个显示屏或者家里电视,一根HDMI线
- 一个1G以上的USB刻录iso
- 一个键盘和一个鼠标
我的环境是一个路由器(主路由),我笔记本和 N1 盒子网口都连路由器的 lan,CIDR 是192.168.2.1/24
, 我盒子作为旁路由,后续准备用 192.168.2.2
静态 ip
adb
盒子插上电,然后接上网线和笔记本同一个局域网,盒子HDMI线接个显示屏或者电视。接上usb鼠标点两下设置的齿轮,最下面进去点击版本号多点几次开启开发者选项。鼠标随意右击返回,进开发者选项确认adb状态开启,进法律信息里看局域网的ip
笔记本windows如果没adb的话自行下载 adb下载连接 解压到目录,把目录加到环境变量 PATH
里
准备镜像文件
去恩山找个N1的openwrt镜像 我是使用的这个,下载了后准备一个大于 1G 的usb刻录,使用软件balenaEtcher
刻录,下载地址 https://www.balena.io/etcher/ ,下载 Portable 免安装的。刻录后usb插到盒子上
刷机
笔记本git bash或者cmd里执行adb
1 | adb connect <盒子局域网ip> 5555 |
连上之后确认下
1 | adb shell ls |
有安卓文件则继续走
1 | adb shell reboot update |
不出意外重启会进emcc系统,等待很久后把鼠标拔了换键盘。开机很久后按回车进入终端,下面是把系统写到emcc里,否则是u盘的系统.
1 | cd /root |
跟着交互走,不出意外看到成功就可以 pweroff 关机了,然后拔掉U盘。
后续u盘刷新系统固件后,插上开机,觉得好用想把u盘的系统刷到emcc里的话
1 | cd /root |
旁路由的配置
路由静态ip配置
开机后继续键盘。更改旁路由的网络配置文件
1 | cp /etc/config/network /etc/config/network.bak |
把192.168.1.1
改为预期的配置,没网关的话就也加上预期的主路由的ip
1 | option ipaddr '192.168.2.2' |
重启网络
1 | /etc/init.d/network restart |
然后浏览器进192.168.2.2
,默认密码admin password啥的试试
web配置
time
有些固件断电后 openwrt 的时间不对,可能会遇到旁路由设置好后无法上网,抓包发现 tcp 重传,最后发现旁路由断电后 ntp 没同步,如果断电后打开网页提示连接被重置就进系统
-系统
点击同步浏览器时间.。有些固件在这样操作后还是会在访问网页的时候发生连接已重置,看后面的丢包的 iptables 命令处理下后再试试
DHCP
我的固件只有一个 LAN 接口,不确定其他的是不是这样(推荐此处到最后都先看一遍完后再跟着操作)网络
-接口
,进入 LAN 修改,下面的 DHCP,开启动了。然后高级设置,动态 DHCP+强制,写上掩码,下面的 DHCP 选项两行
1 | 3,192.168.2.2 # 配置dhcp的网关,指向旁路由自己 |
IPv6设置
里前三个全部选禁用
保存应用
DNS
网络
-DHCP/DNS
-常规设置
,有必要的话配置下 DNS 转发,屏蔽一些激活码请求域名啥的,丢弃 RFC1918 上行响应数据
这个取消了,我这儿是不然某些上游dns的域名无法访问到
最下面的写 hosts 列表,例如单独的指定公网 ip 下载 jetbrains 家的插件和软件,绕过前面配置的屏蔽
网络
-DHCP/DNS
-高级设置
-DNS 服务器端口
写 0,不使用 dnsmasq 的dns功能,因为 dnsmasq 经常在加配置的时候卡死,而且解析不稳定,回到 web 上保存应用。ssh上去netstat -nlptu | grep ':53'
看看是不是 dnsmasq 没有监听 53,有些固件 web 上端口写0还是会监听,此时得手动改配置文件echo port=0 >>/etc/dnsmasq.conf
然后 web dnsmasq 那重新保存应用
因为这里关闭了dnsmasq 的 dns 解析,我们打算使用 adguardhome 来做路由器的 dns 服务。我们需要在自己 pc 上下载 adguardhome 的二进制文件上传到路由器的/usr/bin/AdGuardHome/
路径下,权限为755,或者去 github 下载 stable 版本的 arm64 的 release,或者下载下面的解压后 scp 或者web-系统-文件传输
传上去,(下载网页)[https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started]
1 | https://static.adguard.com/adguardhome/release/AdGuardHome_linux_arm64.tar.gz |
1 | cd /usr/bin/AdGuardHome |
服务
-AdGuard Home
-手动设置
,下面是我用的配置文件,web登录的密码是root
1 | bind_host: 0.0.0.0 |
保存应用后打开 web:3000 就可以看到了,默认 root/root ,默认配置文件的话就是 admin/admin
在设置
-常规设置
里保留时间之类的不要设置成30天90天之类的,特别是你接入设备多,日志记录了可能把路由器容量撑满,配置成24小时就够了
主路由的lan配置
关闭DHCP即可,因为有人的旁路由丢包说关闭主路由的 DHCP 然后重启主路由。如果你不能动主路由,可以旁路由上关闭 dhcp,就是接入的设备需要设置下不适用 dhcp 的 ip,使用静态ip配置网关和 DNS 成旁路有的ip。有些主路由现在的 wan 口默认是智能选择,可能需要改成固定 wan 口模式后重启下
后续的一些问题和解决办法
N1盒子旁路由丢包
有人说缺少下面 iptables 命令,但是我前面加了后面配置完无法上网,我最后把它删除了就能上网了。也看家庭网络条件,我不加这个 nat 的话,接在家里路由器下就无法上网了。
1 | 注:固件做旁路由的话不要忘了加自定义防火墙规则(网络->防火墙->自定义规则): |
https://koolshare.cn/thread-178371-1-1.html 帖子下面有两个人说关闭主路由的DHCP并重启主路由后才行。
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=3592744&page=1#pid8444520 帖子下说主路由关闭硬件加速
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=3592744&page=1#pid8444520 网络
-接口
-LAN
桥接关掉 不要自定义 直接单选那个eth0
网络
-接口
-LAN
-物理设置
-桥接接口
关掉 不要自定义 直接单选那个 eth0。我试了这个后,br-lan 桥接的网卡没了,eth0 静态 ip,qq 邮箱打开都更快了。观察了好几天都没丢包了。如果取消桥接后断网,可以接屏幕和键盘到盒子 ssh,看文件 /etc/config/network.bak
里的桥接那些行给加到 /etc/config/network
里重启网络
docker容器无法访问外网
容器无法访问外网,查看了下 nat 表里缺少masquerade
,网络
-防火墙
-自定义规则
,添加下面内容,CIDR 是容器的 CIDR 段,然后网络
-防火墙
-常规设置
-转发
把拒绝
切到接受
,然后点击重启防火墙
1 | iptables -t nat -I POSTROUTING -s 172.31.0.0/24 ! -o docker0 -j MASQUERADE |
猫儿 与 adh
https://www.foxzc.com/archives/2020/06/01/13
无论如何解析都要过猫儿,然后猫儿上游是自己喜欢的就行,这里我是 adh。但是猫儿无法 dns 的解析端口 bind 0.0.0.0 所以目前 dns 链路是 dnsmasq 53
—> 127.0.0.1:7874
—> 0.0.0.0:5300
的 adh
dnsmasq
命令设置
1 | # 获取信息 uci show dhcp |
界面
要在 网络
- DHCP/DNS
界面配置
基本配置
:
- 上游
DNS转发
配置为127.0.0.1#7874
的猫儿 重绑定保护(丢弃 RFC1918 上行响应数据)
取消了
HOSTS 和解析文件
:
忽略解析文件
选中
高级设置
:
DNS 服务器端口
53
猫儿
如果用了 wg ,不走代理的 wan 那里添加下
上游 127.0.0.1:5300 udp
一个就行。然后:
- 本地DNS劫持
- 自定义上游DNS服务器
- 禁止Dnsmasq缓存DNS
更改它的 dns 端口,不过没必要
1 | OP_NAME=o-p-e-n-c-l-a-s-h |
adh
adh 端口 5300,然后 5300 重定向无
此时是 dnsmasq,然后它的上游 DNS转发
配置为 127.0.0.1#7874
的猫儿,再上游是 adh。要在 网络
- DHCP/DNS
- 重绑定保护(丢弃 RFC1918 上行响应数据)
取消了。
猫儿的 dns bind
2021/09/02 不推荐改猫儿直接 bind 53,去看下它的启动和停止脚本就知道了,下面是给人参考
改 bind 0.0.0.0
1 | OP_NAME=o-p-e-n-c-l-a-s-h |
安装tcpdump
1 | https://archive.openwrt.org/releases/packages-18.06/aarch64_generic/base/ |
救砖(免拆机)
2020/09/21 我把新固件写到U盘里后插上盒子上重启,结果还是老系统。搜到官方文档说用 dd 写,上传到目录后改名。
1 | dd if=op.img of=/dev/sda |
结果重启还是老系统。然后 dd的of=/dev/mmcblk1
后开机一直不断重启。后面搜了下救砖姿势
救砖开始
需要一根 USB 双公头的线,好些之前买的时候刷机线就是,USB 线接电脑和 N1,N1 的电源插头插上插座,N1 这头电源接口不插。
链接: https://pan.baidu.com/s/1y0IM3J46KTXr071jDUwidQ 提取码: s2an, 下载 刷机软件
和 N1_mod_by_webpad_v2.2_20180920.rar
电脑解开刷机软件
安装USB Burning tool
(好些很多电视盒子刷机都可以用它)并安装,然后打开,点击左上角文件,选择解压后的webpad_v2.2_20180920
,然后取消右侧的擦除bootloader
,点击开始
后迅速插上 N1 的电源。会开始烧录,等待烧录完成后,点击停止关闭软件。盒子会自动重启进入webpad
的系统,网线接到路由器的lan口下,会默认 dhcp 获取ip。或者你接显示屏和鼠标键盘配置 ip。
然后盒子 USB 插上烧录固件的u盘,电脑 ADB connect 上后和 shell reboot update,然后笔记本配置和固件同一个二层的ip ssh 上去后执行脚本写入emcc,或者接显示器和键盘把固件写入emcc
刷回安卓盒子系统
来源 https://www.right.com.cn/forum/thread-2866816-1-1.html
1 | 1. U盘刷入M大的9.2.0 CoreELEC系统 |