[教程]在斐讯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
即可