文章

N1在armbian的docker中使用openwrt

  最近更新时间:2020-02-29
文章目录

前言

N1的性能比较强,这里可以在N1上运行一个openwrt来方便的进行科学上网。

开始

准备

首先要在N1中运行armbian并且安装docker:

curl -fsSL https://get.docker.com | bash

关于N1的刷机可以参考:斐讯N1刷机并配置SMB
完成了docker的安装我们就可以进行下一步了。

运行openwrt

先将openwrt的docker镜像导入到本地

docker pull unifreq/openwrt-aarch64:r9.10.24

打开网卡的混杂模式

ip link set eth0 promisc on

接着给docker创建网络,这里按照的192.168.2.1是主路由的IP,根据实际情况修改

docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet

运行openwrt

docker run --name op2 --restart always -d --network macnet --privileged unifreq/openwrt-aarch64:r9.10.24 /sbin/init

修改docker内网络设置

docker exec -it op2 /bin/bash

此处可能会出现错误,那么改用

docker exec -it op2 sh

要注意,执行完上面的命令后,我们这里就已经进入了docker的容器内,此时修改的是openwrt的设置了
修改网络设置vi /etc/config/network
输入i开始编辑,编辑完成之后按ESC退出编辑,然后输入:wq(不要忘记冒号)回车保存。这里要确保设置的IP和主路由的IP在同一个网段内。

现在退回到bash-4.4#这个界面了,这里输入exit退出容器回到n1的armbian终端。

重启openwrt容器使得设置生效

docker restart op2

注意:armbian存在bug(这个问题在armbian的最新版本已经修复了),docker重启时会使得N1设备也重启,想要解决这个问题请参考:https://www.right.com.cn/forum/thread-958173-1-1.html的451楼的示例代码。
重启完成之后,就可以访问docker内的openwrt了,IP为你在容器内设置的IP,例如192.168.2.2,用户名为:root,密码为:password
进入管理后台之后打开网络→接口修改LAN接口的参数,将网关地址设置为主路由的IP。

如果你需要使用N1自动管理DHCP,则在主路由的网络-接口中关闭DHCP

重启电脑后,在电脑中运行

ipconfig

查看默认网关是否已经修改成了N1的openwrt的IP,如果是,那么就成功了。
但是这样设置下的N1如果出现了故障,那么整个局域网可能都会出现网络故障。另外一种方案则是使用主路进行DHCP管理,在需要特殊功能的设备上手动设置网关,打开主路由的DHCP设置,并且关闭N1内的DHCP。
windows打开网络和Internet设置→更改适配器选项,选择正在使用的网卡(网线一般为以太网,WiFi为WLAN)→右键属性→Internet协议版本4

防火墙设置:
N1的openwrt的管理后台,打开网络→防火墙→自定义规则,添加

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

重启防火墙即可,自此n1内使用docker运行openwrt设置完成。

补充

有的时候IPV6会出现问题(科学上网的gfw模式不生效等),可以尝试将主/旁路由的IPV6都禁用来解决。

参考资料:
斐讯N1小钢炮固件docker安装最新版openwrt实现旁路由伪软路
N1刷电视盒子&主旁路由&小钢炮教程
N1及贝壳云Armbian 5.98(加强版), 内核5.3.x, 及 Docker Openwrt

发表回复

  • 评论5则,共1页,当前第1
    • shen159876

      请问下添加的这句防火墙的意义在哪里
      iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
      不添加的话我也一直可以用

    • nie

      请问如果我使用主路由管理DHCP,armbian中的openwrt开启科学上网功能,如何使得armbian也能科学上网呢?网上找了一圈也没搞定。 谢谢[undefined]

    • nie

      请问在使用主路由管理DHCP,armbian中openwrt开启科学上网的情况下,如何使得armbian也能科学上网?