斐讯n1安装centos7+docker openwrt

首先声明,我的n1是降级过的,系统默认usb启动优先级大于emmc,所以可以直接将镜像写入u盘,通过u盘启动系统,同时通过脚本将系统写入emmc.

同时,由于n1的usb是2.0,推荐将常用系统写入emmc,而不是通过u盘启动(虽然emmc只有8G).亲测速度快的不是一点半点,最直观的感受就是执行yum update.

centos镜像

N1盒子 CentOS7.9系统镜像,支持写入EMMC - 斐讯无线路由器以及其它斐迅网络设备 - 恩山无线论坛 - Powered by Discuz! (right.com.cn)

同时附上论坛上的简单教程:

分享N1盒子CentOS7.9系统下安装最新版本的宝塔面板linux7.7简单教程 - 斐讯无线路由器以及其它斐迅网络设备 - 恩山无线论坛 - Powered by Discuz! (right.com.cn)

特别感谢恩山论坛的各位大佬!

在此我也简单记录一下,以防某天重装系统:joy:

修改写入emmc的脚本,添加上复制lib64文件夹的命令

1
2
3
4
5
6
vi /root/.install_os_to_emmc/install.sh

在153行后添加下面命令

echo "Copy LIB64..."
tar -cf - lib64 | (cd $DIR_INSTALL; tar -xpf -)

image-20220116094823830

安装宝塔

禁止宝塔打开swap内存,纯净系统只占用200-300MB内存,对于n1的2G内存来说,基本上够用了,何况8G的emmc也很稀缺

1
2
3
4
5
修改宝塔安装脚本
删除或注释掉以下三条命令
# if [ "${MEM_TOTAL}" -le "1" ];then
# Auto_Swap
# fi

关于宝塔安装nginx和php,听说是编译安装性能更优,只是安装较慢,本人亲测Nginx 1.20.2 Nginx 1.18 php7.4均可编译安装成功

安装docker

网上也有很多教程,我就直接一点

1
2
3
4
5
6
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker

docker安装openwrt

1
2
3
4
首先开启网卡混杂模式
ip link set eth0 promisc on
#创建vlan
docker network create -d macvlan --subnet=192.168.10.0/24 --gateway=192.168.10.1 -o parent=eth0 macnet

网段与主路由相同

1
2
3
4
5
docker run --restart always --name openwrt -d --network macnet --privileged sulinggg/openwrt:latest /sbin/init
此时openwrt已在运行
进入容器修改lan接口
docker exec -it openwrt bash
vi /etc/config/network

只需修改config interface 'lan'中的配置

ipaddr为主路由网段下的一个ip

1
2
3
option ipaddr '192.168.1.111'
option gateway '192.168.1.1'
option dns '192.168.1.1'

重启/etc/init.d/network restart之后就可以在浏览器输入192.168.1.111进入openwrt管理页面,默认密码为password

关于旁路网关上网

使用服务->PassWall操作就行,实际上就是一个代理工具客户端

配置好之后,只需在设备上修改为静态ip,注意网关和DNS都要改为openwrt的ip192.168.1.111,大功告成,可以去测试一下

记得去接口里把桥接关掉!!!

补充

  1. 解决宿主机无法和docker的macvlan通信

    Docker的macvlan模式容器与宿主机通信问题-飘云 (piaoyun.cc)

    Docker 使用 macvlan 网络容器与宿主机的通信过程 | 一小步 (smalloutcome.com)

    一句话:

    mavlan 虚拟出来的网口不能和父网口直通,但是可以和同一子网的其他网口互通(包括其他虚拟出来的网口)。

    通过在宿主机上用 macvlan 添加一个虚拟网口 mynet ,并在宿主机上配置路由到容器的数据包由 mynet 发出,就架起了宿主机与容器的通信桥梁。
    宿主机发往容器的数据包,由 mynet 发给容器;容器发往宿主机的数据包先发给 mynet,再由 mynet 转交给 eth0。

    1
    2
    3
    4
    ip link add mynet link eth0 type macvlan mode bridge
    # ip addr add 192.168.1.112 dev mynet
    ip link set mynet up
    ip route add 192.168.1.111 dev mynet

    至此, 宿主机和容器应该是能互相ping通

  2. 解决宿主机使用openwrt网关时无法联网

    在docker中运行openwrt · Issue #4 · lisaac/blog (github.com)

    1
    2
    ip route del default #删除默认路由
    ip route add default via 192.168.1.111 dev mynet # 设置静态路由

一些思考

我们使用代理时,软件将我们的网络请求拦截,进而向代理服务器发送请求,代理服务器再向我们的目标服务器发送我们被软件拦截的原始请求,最后再返回

使用旁路网关时,我们的设备首先将请求发送至openwrt,在openwrt端一番操作再返回

两种方式本质都是一样的,只是第一种一个设备一个代理,第二种多个设备一个代理,对我们的使用体验来说,当然是第二种更好

参考

在Docker 中运行 OpenWrt 旁路网关 | 美丽应用 (mlapp.cn)