最近入手了个传说中的N1,CPU、内存、存储卡的配置还不错,但只有1个网口(不过是千兆的),USB接口又是2.0的,实在没有想好到底能干啥。本来想只刷个openwrt路由固件来测试哈的,但又觉得浪费了它的强大配置,何不先刷入armbian固件,再在docker中安装openwrt,今后想要添加别的功能还可以无限的发挥想象。由于对linux和docker一知半解,过程中走了不少弯路,为了给像我一样的小白指指路,也为自己做个备忘录,将折腾记录及注意事项分享如下:
一、大体流程:
1.将armbian刷入U盘
2.将N1降级
3.将armbian刷入N1的内部存储emmc
4.安装docker
5.在docker中安装openwrt软路由
6.主路由与旁路由的设置
7.其他事项
二、详细过程:
1.将armbian刷入U盘
1.1.下载适合N1的armbian镜像文件。有大神专门修改后适配N1的驱动dtb文件(包括降低运行负载等优化),更有大神制作好了集成驱动的armbian系统镜像。我用的是enshan大神flippy制作的镜像【在此膜拜并感谢】,只需要写入不做任何修改即可正常使用。下载链接:链接:https://pan.baidu.com/s/1UiCmdGVtG7OtmtntCQNzQw;提取码:ug54
1.2.准备U盘镜像写入软件,用绿色单文件软件rufus即可(可度娘搜到),运行该软件,选中你要写入镜像文件的U盘(注意:会清除U盘上所有,请提前做好备份),其它按缺省设置即可,点击开始写完即可拔下U盘备用。
2.将N1降级(若已降级直接跳到第3步)
2.1.打开N1的adb调试功能:将N1启动到nas主界面点击4次固件版本即可打开adb(会有提示)
2.2.下载webpad提供一键降级工具:
微云:链接:https://share.weiyun.com/5klmuxd;密码:yaefa9
原目录结构解压至计算机
2.3.在计算机(需与N1在同一网段)运行onekey 子目录下的 run.bat ,按提示操作:(注意是按数字2并回车,并将盒子ip修改为你自己的!N1的ip可以通过N1连接的上级路由器查看得到。)
3.将armbian刷入N1的内部存储emmc
3.1.将N1启动进入刷机模式:在计算机(需与N1在同一网段)中运行如下命令(在前述的onekey目录中有adb.exe及其所需文件)
——①.adb connect N1的ip(可用ifconfig查询得到)
——-②.adb shell
——-③.reboot update(黑屏重启时迅速插入U盘)
—–注意:如果在N1进入原生固件(哪怕是已经降过级但未重刷系统固件)的nas界面时插入U盘,会将U盘中文件夹的访问权限从root修改为别的,导致刷入系统后出现很多莫名其妙的问题,所以务必按前述流程操作。否则只有重新制作U盘。
—-只要U盘成功启动进入系统一次,以后就不再需要用命令方式,直接在N1关机状态插入U盘即可启动到U盘系统。
3.2.U盘启动进入armbian系统
U盘系统启动后【此时可以给N1接上显示器和键鼠直接进行后续操作,也可在同网段计算机上通过ssh方式操作】需要输入用户名及密码,缺省值是root,1234,并要求修改密码(不能与1234相同或相近)———务必记住修改后的密码。
3.3.将系统写入emmc
用root账户deng登录后,直接运行./install.sh(新版已改成./install-to-emmc.sh)即可自动安装,所有脚本运行完毕后,关机,拔掉U盘,开机即可正常进入emmc的armbian系统,用户名和密码即为刚才在U盘系统中修改的。
4.安装docker
flippy大神的armbian5.98已经集成了install-docker.sh脚本,直接用root登录运行./install-docker.sh即可完成安装。
5.在docker中安装openwrt软路由
5.1.寻找适合你的在docker中运行的openwrt源或镜像包,我依然用的是flippy大神的(再次感谢,在前述armbian下载链接里有),现在已经更新到r9.10.24版了。
5.2.下载并导入openwrt镜像包
—-①.将docker-img-openwrt-aarch64-r9.10.24.gz文件上传至N1的/root目录
—-②.ssh到N1
—-③.导入软路由docker包:
—-gzip -dc docker-img-openwrt-aarch64-r9.10.24.gz | docker load
—-或者docker pull unifreq/openwrt-aarch64:r9.10.24(如果未按第①步事先下载并上传镜像包的话)
—最新版:docker pull unifreq/openwrt-aarch64:r20.10.20
5.3.开启网卡的混杂模式(这样是为了目前这个阶段能正常安装并配置,要永久开启需修改配置文件,稍后详述)
ip link set eth0 promisc on
5.4.创建docker的虚拟网络(可用docker network ls查看已创建了哪些)
docker network create -d macvlan –subnet=192.168.12.0/24 –gateway=192.168.12.1 -o parent=eth0 macnet
【名称为macnet,macvlan模式,将12.x修改为你自己主路由的网段】
5.5.开启openwrt容器:
docker run –restart always -d –network macnet –privileged unifreq/openwrt-aarch64:r9.10.24 /sbin/init
———-注意路由包名与前述导入的保持一致,后面的/sbin/init可以省略–
5.6.进入openwrt容器修改network设置(当然也可以安装docker的图形管理界面然后修改—–我的没有成功,所以就只能在ssh中敲命令啰)
——docker exec -it cranky_faraday bash→相当于进入openwrt的shell,其中cranky_faraday为openwrt容器名,可以通过运行docker container ls 显示出的NAMES字段获得(也可以在5.5.中-n的方式zhid指定容器名)
——vi /etc/config/network,将option ipaddr 192.168.X.1替换为你想登录op的ip,注意其应在主路由网段内,如192.168.12.5,ESC,:wq
5.7.reboot或者/etc/init.d/network restart,此时已经可以在浏览器中输入192.168.12.5登录openwrt软路由了!
6.主路由与旁路由的设置
6.1.openwrt旁路由:关闭dhcp,网关填主路由ip,dns可以为主路由ip或114等公共dns,且将其【物理设置】中的【桥接接口】取消掉。还有最重要的1点:务必在防火墙添加规则设置:iptables -t nat -I POSTROUTING -j MASQUERADE并重启防火墙
6.2.主路由:开启dhcp,网关和dns填旁路由ip。
(如果主路由是openwrt固件可在dhcp服务器的dhcp选项中按下图填入-如此设置网关和dns依然不变,只有通过主路由dhcp分配到ip的设备之网关和dns才指向旁路由)
—-如果主路由采用padavan及开启硬加速, 而用N1做旁路由时可能出现不兼容情况,导致网络卡顿,关闭主路由硬加速可以解决(将主路由padavan的外部网络WAN -> 外网设置选项卡 -> IPv4硬件加速,由OFFLOAD TCP/UDP for LAN/WLAN,修改为OFFLOAD TCP/UDP for LAN—-
7.其他事项
如此设置后,会存在如下问题:
①.同网段设备均可以正常访问(包括ping)N1和op,但N1和op之间是不能互访的【需要将armbian的ip设置为静态的才行】
②.N1重启网卡混杂模式会失效,需设为永久开启
解决方案是修改/etc/network/interfaces文件(eth0部分):(谨慎操作,可能导致armbian永远无网络)
auto eth0
iface eth0 inet manual
up ip link set eth0 promisc on
auto macvlan
iface macvlan inet static
address 192.168.12.104→修改成你需要的
netmask 255.255.255.0
gateway 192.168.12.1→需改成你的主路由ip或192.168.12.5(旁路由的ip)
dns-nameservers 192.168.12.1→需改成你的主路由ip或12.5或再加1个公共dns比如114
pre-up ip link add macvlan link eth0 type macvlan mode bridge
post-down ip link del macvlan link eth0 type macvlan mode bridge
改完后重启网络systemctl restart networking或者重启系统查看效果
———永久开启网卡混杂模式的最简单方法:———–
修改 /etc/rc.local 加入如下代码:
ip link set eth0 promisc on
或者
ifconfig eth0 promisc
改完重启系统即可(完全启动完才生效,大概需要两三分钟)。
原文链接:https://blog.csdn.net/engineerlzk/article/details/102918772