zhangguanzhang's Blog

斐讯N1刷机和旁路由的设置

字数统计: 3.5k阅读时长: 14 min
2020/05/12 Share

由来

        之前一直是使用k2popenwrt或者pandora跑v2用,前几天看到了个v2的订阅地址给写到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
2
3
cd /root
# 有些固件不一定是这个脚本名,可能是 install.sh 啥的,没有下面脚本就 ls -l 看看
./inst-to-emmc.sh

跟着交互走,不出意外看到成功就可以pweroff关机了,然后拔掉U盘。

后续u盘刷新系统固件后,插上开机,觉得好用想把u盘的系统刷到emcc里的话

1
2
cd /root
./update-to-emmc.sh

旁路由的配置

路由静态ip配置

开机后继续键盘。更改旁路由的网络配置文件

1
2
cp /etc/config/network /etc/config/network.bak
vi /etc/config/network

192.168.1.1改为预期的配置,没网关的话就也加上预期的主路由的ip

1
2
3
option ipaddr '192.168.2.2'
option netmask '255.255.255.0'
option gateway '192.168.2.1'

重启网络

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
2
3,192.168.2.2                    # 配置dhcp的网关,指向旁路由自己
6,192.168.2.2,8.8.4.4,8.8.8.8 # 配置dhcp获取到的dns,如果稳定则旁路由自己的IP,建议只设置旁路由的ip

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
2
3
cd /usr/bin/AdGuardHome
cp -a /tmp/upload/AdGuardHome .
chmod 755 AdGuardHome

服务-AdGuard Home-手动设置,下面是我用的配置文件,web登录的密码是root

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
bind_host: 0.0.0.0
bind_port: 3000
users:
- name: root
password: $2y$05$8h.LpbIR7U50.qbV7ynCtOvS9szcqu2lFk6J86Oabnz1J5BtLpVni
http_proxy: ""
language: ""
rlimit_nofile: 0
debug_pprof: false
web_session_ttl: 720
dns:
bind_host: 0.0.0.0
port: 53
statistics_interval: 1
querylog_enabled: false
querylog_interval: 1
querylog_size_memory: 1000
anonymize_client_ip: false
protection_enabled: true
blocking_mode: nxdomain
blocking_ipv4: ""
blocking_ipv6: ""
blocked_response_ttl: 10
parental_block_host: family-block.dns.adguard.com
safebrowsing_block_host: standard-block.dns.adguard.com
ratelimit: 0
ratelimit_whitelist: []
refuse_any: false
upstream_dns:
- sdns://AwAAAAAAAAAAAAANdGxzOi8vOC44LjguOA
- sdns://AAAAAAAAAAAACTc3Ljg4LjguOA
- sdns://AAAAAAAAAAAACjc3Ljg4LjguODg
- sdns://AQMAAAAAAAAAFDE4NS4yMjguMTY4LjE2ODo4NDQzILysMvrVQ2kXHwgy1gdQJ8MgjO7w6OmflBjcd2Bl1I8pEWNsZWFuYnJvd3Npbmcub3Jn
- sdns://AgcAAAAAAAAABzEuMC4wLjGgENk8mGSlIfMGXMOlIlCcKvq7AVgcrZxtjon911-ep0cg63Ul-I8NlFj4GplQGb_TTLiczclX57DvMV8Q-JdjgRgSZG5zLmNsb3VkZmxhcmUuY29tCi9kbnMtcXVlcnk
- sdns://AwAAAAAAAAAAAAANdGxzOi8vOS45LjkuOQ
# - https://dns10.quad9.net/dns-query
- tcp://223.5.5.5
- sdns://AgUAAAAAAAAAACAe9iTP_15r07rd8_3b_epWVGfjdymdx-5mdRZvMAzBuQ5kbnMuZ29vZ2xlLmNvbQ0vZXhwZXJpbWVudGFs
- sdns://AQQAAAAAAAAAEDc3Ljg4LjguNzg6MTUzNTMg04TAccn3RmKvKszVe13MlxTUB7atNgHhrtwG1W1JYyciMi5kbnNjcnlwdC1jZXJ0LmJyb3dzZXIueWFuZGV4Lm5ldA
# - https://1.1.1.1/dns-query
- sdns://AQAAAAAAAAAADjIwOC42Ny4yMjAuMjIwILc1EUAgbyJdPivYItf9aR6hwzzI1maNDL4Ev6vKQ_t5GzIuZG5zY3J5cHQtY2VydC5vcGVuZG5zLmNvbQ
- sdns://AAAAAAAAAAAADTEzMC41OS4zMS4yNDg
bootstrap_dns:
- 223.5.5.5
- 223.6.6.6
- 1.1.1.1
- 8.8.4.4
- 9.9.9.10
- 114.114.114.114
- 149.112.112.10
all_servers: true
fastest_addr: false
allowed_clients: []
disallowed_clients: []
blocked_hosts: []
cache_size: 4194304
cache_ttl_min: 0
cache_ttl_max: 0
bogus_nxdomain: []
aaaa_disabled: true
enable_dnssec: false
edns_client_subnet: false
filtering_enabled: true
filters_update_interval: 24
parental_enabled: false
safesearch_enabled: false
safebrowsing_enabled: false
safebrowsing_cache_size: 1048576
safesearch_cache_size: 1048576
parental_cache_size: 1048576
cache_time: 30
rewrites:
- domain: plugins.jetbrains.com
answer: 13.32.53.109
- domain: mini.ffnews.cn
answer: 127.0.0.1
- domain: tongji.flash.cn
answer: 127.0.0.1
- domain: mini.flash.2144.com
answer: 127.0.0.1
- domain: download.jetbrains.com
answer: 52.30.174.243
- domain: www.jetbrains.com
answer: 127.0.0.1
- domain: jetbrains.com
answer: 0.0.0.0
- domain: www.atlium.com
answer: 0.0.0.0
- domain: atlium.com
answer: 0.0.0.0
blocked_services: []
tls:
enabled: false
server_name: ""
force_https: false
port_https: 443
port_dns_over_tls: 853
allow_unencrypted_doh: false
strict_sni_check: false
certificate_chain: ""
private_key: ""
certificate_path: ""
private_key_path: ""
filters:
- enabled: true
url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
name: AdGuard Simplified Domain Names filter
id: 1
- enabled: true
url: https://adaway.org/hosts.txt
name: AdAway
id: 2
- enabled: false
url: https://hosts-file.net/ad_servers.txt
name: hpHosts - Ad and Tracking servers only
id: 3
- enabled: true
url: https://www.malwaredomainlist.com/hostslist/hosts.txt
name: MalwareDomainList.com Hosts List
id: 4
- enabled: false
url: https://raw.githubusercontent.com/vokins/yhosts/master/data/tvbox.txt
name: tvbox
id: 1575018007
- enabled: true
url: https://hosts.nfz.moe/full/hosts
name: neoHosts full
id: 1575618240
- enabled: false
url: https://hosts.nfz.moe/basic/hosts
name: neoHosts basic
id: 1575618241
- enabled: false
url: http://sbc.io/hosts/hosts
name: StevenBlack host basic
id: 1575618242
- enabled: false
url: http://sbc.io/hosts/alternates/fakenews-gambling-porn-social/hosts
name: StevenBlack host+fakenews + gambling + porn + social
id: 1575618243
- enabled: false
url: https://cdn.jsdelivr.net/gh/privacy-protection-tools/anti-AD/anti-ad-easylist.txt
name: anti-AD(Adblock+neohosts+yhosts+cjxlist+adhlist)
id: 1577113202
whitelist_filters: []
user_rules: []
dhcp:
enabled: false
interface_name: ""
gateway_ip: ""
subnet_mask: ""
range_start: ""
range_end: ""
lease_duration: 86400
icmp_timeout_msec: 1000
clients: []
log_file: ""
verbose: false
schema_version: 6

保存应用后打开web:3000就可以看到了,默认root/root
设置-常规设置里保留时间之类的不要设置成30天90天之类的,特别是你接入设备多,日志记录了可能把路由器容量撑满,配置成24小时就够了

主路由的lan配置

关闭DHCP即可,因为有人的旁路由丢包说关闭主路由的DHCP然后重启主路由。如果你不能动主路由,可以旁路由上关闭dhcp,就是接入的设备需要设置下不适用dhcp的ip,使用静态ip配置网关和dns成旁路有的ip。有些主路由现在的wan口默认是智能选择,可能需要改成固定wan口模式后重启下

后续的一些问题和解决办法

N1盒子旁路由丢包

有人说缺少下面iptables命令,但是我前面加了后面配置完无法上网,我最后把它删除了就能上网了

1
2
3
4
注:固件做旁路由的话不要忘了加自定义防火墙规则(网络->防火墙->自定义规则):
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
也可以尝试(有桥接存在的情况下)
iptables -t nat -I POSTROUTING -o br-lan -j MASQUERADE

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

安装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
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
34
35
1. U盘刷入M大的9.2.0 CoreELEC系统

2. U盘插N1远离HDMI的那个USB口,对,是远离的那个口,然后加电开机

3. 路由器看该系统IP,然后Xshell进入,用户名root ,密码coreelec

4. 电脑端刷机工具加载IMG文件,我用的是R大的6.2.3,勾选“擦除flash”,然后点开始

5. 双公头线连接电脑和N1近HDMI线的那个口,是的,此时就可以直接连上双公头线。

6. Xshell端命令行处输入: reboot update

7. 此时会重启,然后耐心等待刷入安卓系统即可,整个过程U盘也不用拔。

8. 耐心等待刷完,点停止,然后拔出所有的U盘,网线啥的,再上电就可以了。
------------------------------------------------------------------------------------------------------------

附:查看N1安卓系统有线和无线MAC办法,前提是如R大的盒子已有busybox

1. 路由器查看N1安卓盒子IP

2. Xshell进入,注意此时端口是:2223,用户名:rush,密码rush

3. 进入后ifconfig即可查看有线和无线的MAC了

测试结果,

1. 有线的MAC重启后不会变,IP不会变

2. 同一个安卓IMG刷入别的盒子后,别的盒子有线MAC地址和前一盒子不同,不用担心有线MAC重合问题

3. 无线MAC固定就是00:90:4C:C5:12:38,刷2个盒子都一样,重合

4. 蓝牙MAC不重合,刷了2个盒子做了测试。
5. 干掉安卓,把armbian 5.77重新写入EMMC后,发现在armbian里每次重启有线MAC都会变,但IP不变,无线的MAC也不变。
CATALOG
  1. 1. 由来
    1. 1.1. 刷机
      1. 1.1.1. adb
      2. 1.1.2. 准备镜像文件
      3. 1.1.3. 刷机
    2. 1.2. 旁路由的配置
      1. 1.2.1. 路由静态ip配置
      2. 1.2.2. web配置
        1. 1.2.2.1. time
        2. 1.2.2.2. DHCP
        3. 1.2.2.3. DNS
      3. 1.2.3. 主路由的lan配置
    3. 1.3. 后续的一些问题和解决办法
      1. 1.3.1. N1盒子旁路由丢包
      2. 1.3.2. docker容器无法访问外网
      3. 1.3.3. 安装tcpdump
    4. 1.4. 救砖(免拆机)
      1. 1.4.1. 救砖开始
    5. 1.5. 刷回安卓盒子系统