[教程]在斐讯N1上刷Armbian,安装Docker+OpenWrt

写在前面

上面这篇文字是,直接刷armbian,然后把openwrt刷写到emmc,个人感觉不太方便:万一openwrt设置出错,无法联网的话,又得重新刷回电视系统,然后再刷armbian,再……好烦

今天要说的是n1运行armbian,openwrt以docker容器的形式运行,万一出错,删除容器,创建容器就好了。

在装完docker后,安装个portainer web界面看着顺眼一点

开始

1,刷armbian

不再重复了,参考 https://zhujitips.com/1788

2,安装docker

curl -fsSL https://get.docker.com/ | sh 
#一句话,就安装了docker,建议n1网络在科学环境下,不然会慢或者失败!
systemctl start docker
systemctl enable docker

3,安装portainer汉化版

ssh,到根目录,新建目录

 mkdir /public
cd /public

wget 下载portainer汉化包

 wget http://soft.zhujitips.com/n1/7.docker/Portainer-CN.zip

解压,删除压缩包,赋权限

 unzip -o  Portainer-CN.zip
rm -rf *.zip
chmod -R 777 /public

安装portainer

docker volume create portainer_data
docker run -d --name portainer -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /public:/public portainer/portainer:linux-arm64


#应该用上面那一条命令,下面这个是英文版,没汉化的,

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer:linux-arm64  #博主自己留着看看的,别运行这条
ip link set eth0 promisc on #打开网卡混杂模式
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet
#这是添加macvlan网络
#subent 指网段
#gateway 主路由的ip

设置portainer开机自动运行, 先找到 ID:

docker container ls  #查看id
docker update --restart=always d38d236068e1 
# 比如这是我的,后面的一串,换成你自己的

4,拉取openwrt镜像(建议科学环境下,不然慢且可能失败)

docker pull unifreq/openwrt-aarch64:latest  #拉取镜像

docker run -d --name="OpenWRT" --restart unless-stopped --network macnet --privileged unifreq/openwrt-aarch64 /sbin/init
#以后台方式运行openwrt容器。
(万一openwrt设置出错,删除容器后重新运行容器:需要把添加的macvlan网络那条删掉,才删除得了这容器,然后再先运行添加macvlan网络那条,这时候,不用再去拉取镜像了,本地已经有了,直接运行容器了)

4-1,下面这个是armbian下,命令行方式操作openwrt容器的方法

4-1,4-2随便选一个

docker exec -it OpenWRT /bin/bash
vi /etc/config/network #更改 openwrt 网卡信息

vi命令使用方法
先按字母 i 才可以输入文字
把 192.168.1.1改成 192.168.1.254
按esc退出编辑模式按冒号 : 输入 w q 回车 编辑完成保存

4-2,portainer web界面管理docker下处理,更直观

首次安装portainer,登录地址是armbian的ip:9000

会让你注册个管理用户

portainer登录页

选择local当地,进入后,如下画面

armbian下命令行方式添加的macnet网络,镜像,容器,都在此只管的显示了

点击上图 openwrt容器右侧的”>_“符号,运行命令行,修改网络ip如4-1

openwrt设置

http://192.168.1.254

进入openwrt web界面

默认用户名:root,密码:password

openwrt旁路由设置办法(此方法:需要科学研究的设备,需要在你上网设备中网络手动设置,网关为这openwrt的ip)

关闭dhcp,网关填主路由ip,dns可以为主路由ip,建议当地dns ip

注:如果把主路由dhcp关掉,开openwrt的dhcp,那么所有上网设备的网络设置可以是自动获取就行,那样的话,所有设备都能科学研究了

在防火墙添加规则设置

iptables -t nat -I POSTROUTING -j MASQUERADE #网上看到,用这个,我实际使用下来,应该是下面的才是正确的

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE #应该用这条

最近在弄一个N1的时候,发现国外通,国内不通的问题,用上面那个自建防火墙规则,没有效果,一定要如下操作才正常。

网络-接口-物理设置-桥接接口,去除勾选,然后保存应用

这时候,会发现和你的openwrt失联了。去portainer上,重启一下该容器,即可。

5,万一openwrt设置错误,启动不了了,那么来这里删除网络,删除openwrt容器;再新建网络,运行openwrt容器

删除macnet网络

删除openwrt容器

应该在portainer下也能方便的新建macnet网络,弄不太明白,还是armbian下命令行,一句话,最方便

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.254 -o parent=eth0 macnet 

运行openwrt容器

docker run -d --name="OpenWRT"   --restart unless-stopped   --network macnet   --privileged   unifreq/openwrt-aarch64   /sbin/init

到此,openwrt容器很快就重建好了,再次去修改openwrt 网络ip,登录openwrt进行设置吧

附上armbian下改网络,重启网络的命令,如下

nano /etc/network/interfaces #修改网络
/etc/init.d/networking restart # 重启网络

这是静态IP地址的设置样例,供参考

auto eth0
iface eth0 inet static
address 192.168.8.100    
netmask 255.255.255.0
gateway 192.168.8.2
dns-nameserver 119.29.29.29

解决宿主机armbian无网络的问题

cp  /etc/network/interfaces  /etc/network/interfaces.bak ##备份一下,万一呢
nano /etc/network/interfaces #编辑interfaces文件

删除所有内容,下载interfaces这个文件,把里面所有内容拷贝到上面文件里,并保存

还有一个可能,宿主机没有DNSSERVER

nano /etc/resolv.conf
加入
nameserver 114.114.114.114
即可