如果你想要作为旁路由或中继路由使用,在本文末尾会有相应文章的链接,但是Docker以及网卡的配置有一些坑建议参考本文。
准备
在开始安装之前,你需要准备好一些设备。
OrangePi5(其他版本或者树莓派都可以)
刷有系统的TF卡(以香橙派官方提供的Ubuntu镜像)
电源
一个USB的网卡(我这里用的是绿联的千兆网口,型号是AX88179。如果你的设备有多个网口的话就可以不用这个了)
双绞线若干
首先将香橙派组装好,插上USB网卡并在设备自带的网口上插上网线(网线另一端为主路由器的LAN),通电,进入系统(刷系统以及SSH配置等环节不是本文重点,详细看我以前文章或自行百度,本文默认基本环境已经配置完成并且读者能在终端简单使用vim等)
如果你要拿本设备当作主路由使用,但是身边没有其他路由器可用来帮助配置,可以将PC的网口与设备的网口用一根网线对等连接,只不过PC的默认网关必须手动设置为设备的IP地址。对等配置的方法可参考文章双网口主机通过 docker 安装 openwrt 实现软路由功能-CSDN
连接设备
使用你的PC通过SSH连接香橙派,或者直接在香橙派上接屏幕和键盘在终端中执行
网卡配置
获取信息
在终端中执行以下命令检验USB网卡是否挂载
lsusb
1
1
如果出现对应的设备信息,应该就是成功了(这里的AX88179就是我的USB网卡)
Bus 001 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
1
1
再执行以下命令
ifconfig
1
1
一般设备自带的名称为eth0,记录它被分配的IPv4地址及子网掩码。
而USB的网卡名称与品牌和型号有关,我的名称是enx后面跟上mac地址,这需要根据你自己的情况做判断,本文以enx名称为例。(如果设备是双网口而不是用的USB网卡的话,此处应该是eth1,若果是无线网卡的话应该是wlan0。不绝对,仅供参考)
除此之外我们还要拿到默认网关的地址(默认网关一般是所连接的路由器的地址)
route -n
1
1
找到Destination字段为0.0.0.0的那一行的Gateway字段对应的地址即为默认网关
例如我拿到的ip为192.168.1.24,子网掩码为255.255.255.0,默认网关为192.168.1.1,下文将以此地址为例进行配置(你的可能跟我不一样,在配置的时候以你为准)。
另外补充一点,我们会在接下来将eth0对应的网口作为WAN口,env对应的外接USB网口作为LAN口。
开启网卡的混杂模式
执行以下命令,将上述网卡设置成混杂模式
ip link set eth0 promisc on
ip link set env promisc on
1
2
1
2
要取消的话将上述命令的on改为off即可
开启ipv4转发
修改配置文件
vim /etc/sysctl.conf
1
1
添加一行配置
net.ipv4.ip_forward = 1
1
1
或者将原文件中的net.ipv4.ip_forward = 1注释给取消
按esc+:,并输入wq保存文件后执行命令重新添加配置
sysctl -p /etc/sysctl.conf
1
1
Docker配置
安装Docker
执行以下命令
sudo apt update
sudo apt install docker
1
2
1
2
配置Docker服务开机启动
在我的设备上(OrangePi 5)总是存在设备重启,但是OpenWRT不启动的现象,即使我已经将Docker容器设为了开机自启。最后发现是Docker本身的服务没有设为开机自启。
目前对于树莓派是否会有这种情况暂不明确,读者可自行使用下放命令进行验证。
systemctl list-unit-files | grep docker
1
1
找到输出结果的docker.service一行
docker.service disabled enabled
docker.socket enabled enabled
1
2
1
2
如果如上所示,是disabled,那么说明Docker本身的服务并不是开机自启动
通过以下命令可进行修改
systemctl enable docker.service
1
1
再执行systemctl list-unit-files | grep docker输出结果变成了enabled即修改成功
docker.service enabled enabled
docker.socket enabled enabled
1
2
1
2
获取Docker镜像
由于OrangePi5是arm架构的,所以使用的镜像必须是兼容arm的
我用的是suling大佬制作的Docker镜像,这里附上Docker Hub链接
Docker Hub: https://hub.docker.com/r/sulinggg/openwrt
注意,这里与你的设备有关,本文只给出树莓派和armv8/aarch64的镜像获取操作。为方便参考,此处附上一张镜像对应设备的表格(不代表最新),但仍建议访问上述链接查看适配你设备的镜像
支持设备/平台 DockerHub 阿里云镜像仓库 (上海)
树莓派 1B sulinggg/openwrt:rpi1 registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi1
树莓派 2B sulinggg/openwrt:rpi2 registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi2
树莓派 3B / 3B+ sulinggg/openwrt:rpi3 registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi3
树莓派 4B sulinggg/openwrt:rpi4 registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi4
armv7 sulinggg/openwrt:armv7 registry.cn-shanghai.aliyuncs.com/suling/openwrt:armv7
arm8/aarch64 sulinggg/openwrt:armv8 registry.cn-shanghai.aliyuncs.com/suling/openwrt:armv8
i386_pentium4/386 sulinggg/openwrt:386 registry.cn-shanghai.aliyuncs.com/suling/openwrt:386
x86_64/amd64 sulinggg/openwrt:x86_64 registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64
如果你的设备为OrangePi5或者其他armv8/aarch64的设备,请在终端中执行下方命令
docker pull sulinggg/openwrt:armv8
1
1
如果你的设备为树莓派2B/3B/3B+/4B,请在终端执行下方命令
docker pull sulinggg/openwrt:latest
1
1
创建WAN端口的macvlan
macvlan是linux的一种虚拟化网卡技术,可将一块物理网卡虚拟成多块虚拟网卡,并且每个虚拟网卡都可以将其虚拟mac并且指定相应的IP地址。
使用以下命令可查看系统是否支持macvlan。
modprobe macvlan
1
1
如果不支持,则需要升级Linux内核。(像OrangePi5、树莓派等官方提供的最新镜像一般都是支持的)
创建WAN端口的macvlan,名称为macnet0
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet0
1
1
注意,这里需要根据上述获取到的地址来配置(根据你的实际情况来填)。subnet字段对应端口所处的网络地址192.168.1.0/24,其中的/24为子网掩码对应255.255.255.0;gateway字段对应默认网关192.168.1.1;parent对应网卡。
可执行下方命令,验证是否创建成功
docker network ls
1
1
如果输出结果的NAME字段那一列有macnet0即成功。
LAN端口的macvlan暂不创建。
启动容器
此处请先阅读参数说明再执行命令!
docker run -d --restart always --network macnet0 --ip 192.168.1.100 --privileged --name openwrt sulinggg/openwrt:armv8 /sbin/init
1
1
简单说明下几个参数:
--restart always为开机自启
--network macnet0为我们刚才创建的WAN端口的macvlan
--ip 192.168.1.100是为容器分配的ip地址,这里需要注意网段与eth0获取的一致,并且不能够冲突(也就是说当前网络下不能有其他设备的地址为192.168.1.100)。需根据自己的实际情况来配置。
--privileged为特权模式
--name openwrt容器名称为openwrt
sulinggg/openwrt:armv8对应刚才获取的镜像。如果你的设备是树莓派,并且是按照我文章上方的命令获取的,则此处为sulinggg/openwrt:latest。其他设备则须根据你获取的镜像来写。
进入容器
端口配置
输入命令即可进入容器
docker exec -it openwrt bash
1
1
Ps: 输入exit可退出容器终端
配置文件
vim /etc/config/network
1
1
将字段(不要在意这个名称,之后我们会改)
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.123.100'
option netmask '255.255.255.0'
option ip6assign '60'
option gateway '192.168.123.1'
option broadcast '192.168.123.255'
option dns '192.168.123.1'
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
修改为(还是根据上文和你的实际情况来)
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.1.100'
option netmask '255.255.255.0'
option ip6assign '60'
option gateway '192.168.1.1'
option broadcast '192.168.1.255'
option dns '192.168.1.1'
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
其中
ipaddr后的地址与Docker容器分配的地址一致
netmask后为之前获取的子网掩码
gateway后为之前获取的默认网关
broadcast后为广播地址,改成同一网段
dns后为dns地址,此处保持与默认网关一致
按esc+:,并输入wq保存文件
重启容器网络
/etc/init.d/network restart
1
1
创建LAN端口的macvlan
LAN端口的macvlan的网段可以根据你的需要人为规划,我这里以网卡env和网段192.168.2.x/24为例
创建LAN端口macvlan,名称为macnet1
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=env macnet1
1
1
参数的含义同上文
然后,我们将容器加入到这个网络来。
docker networkc connect macnet1 openwrt
1
1
OpenWRT管理页面配置
进入管理页面
将你的PC连接到与软路由的WAN端口同一网络下,并在浏览器地址栏中输入192.168.1.100
这里的地址与上文中容器分配的地址一致,同样根据你的实际情况来。
用户名是root,默认密码为password
LAN接口配置
在默认配置中,名称为lan的接口实际上是WAN接口,这里我们再另外创建接口。
打开网络->接口,点击页面中的添加新接口,名称为LANS,协议为静态地址,以太网适配器选eth1(这里的eth1不是宿主机的,而是对应macnet1)
提交后,我们对此接口进行修改。配置如下图所示(IP地址与macnet1网段一致)
然后防火墙设置为lan区域
页面底部,取消下图中的勾选,在此端口开启DHCP服务器
然后在高级设置里,开启动态DHCP和强制DHCP
最后,点击保存&应用按钮。
防火墙设置
为了让PC能从WAN侧去访问OpenWRT,将网络->防火墙 WAN区域的入站从拒绝改为接受
点击应用&保存。
WAN接口配置
wan接口配置建议将PC连接到USB网口,然后通过地址192.168.2.1进入管理界面,因为接下来会将原有的名称为lan的接口删掉,操作不慎可能会导致当前页面无法访问。
如果连接到USB网口,PC无法通过DHCP服务获取IP,并且在PC控制台中尝试Ping命令
ping 192.168.2.1
1
1
若无法访问网关,则可以在PC上将获取IP地址的获取方式改为静态,并将设置本机IP为192.168.2.2(只要在同网段且不冲突即可),默认网关为192.168.2.1,子网掩码为255.255.255.0。
首先还是创建接口,协议推荐选择静态,以太网适配器选择eth0。
(如果你要将这个设备之后作为主路由的话,光猫模式为桥接模式,这里要改成PPPoE;如果光猫为PPPoE的话,这里就要设成DHCP)
创建完成后,点击修改,配置如下图。
防火墙与DHCP配置如下
点击保存&应用按钮。
删除原有接口
最后我们要回到网络->接口页面,删除原有的名称为lan的接口
添加静态路由
完成上述步骤你会发现LAN一侧可能无法上网,这时候添加一条静态路由规则
打开网络->静态路由,在静态IPv4路由那里点击添加
接口选择LANS,对象为192.168.2.0,子网掩码为255.255.255.0,IPv4网关为WAN口地址192.168.1.100
这时候我们回到Docker容器内终端中(注意是容器内),重启下网络
/etc/init.d/network restart
1
1
问题
LAN侧无法上网
上述配置完成后,LAN侧接入PC无法仍旧无法上网
步骤一
重启宿主机
步骤二
如果步骤一没解决问题,并且LAN侧PC访问网页显示找不到DNS服务器,可以尝试以下配置
进入到Docker容器
docker exec -it openwrt bash
1
1
打开文件
vim /etc/resolv.conf
1
1
最下方添加
nameserver 8.8.8.8
1
1
保存并重启容器网络
/etc/init.d/network restart
1
1
按理来讲是不用配置这一步的,即使修改了文件也会被管理页面的配置覆盖。但是非常邪门,在我的设备上不进行这一步会出一些上不去网的现象。请读者根据自己的情况来判断吧。(如果你不懂这些东西,建议照做)
容器网络无法访问宿主机
Docker为了保证安全性,是不允许容器去访问宿主机的,但是并不绝对可以通过配置去绕过限制
可以参考 https://www.treesir.pub/post/n1-docker/
网卡混杂重启失效问题
我在OrangePi 5 上进行配置的时候并未遇到过这种情况,但网上许多文章都提到了这种现象,所以我就写了这部分内容。
此部分参考了https://www.cnblogs.com/mokou/p/16173553.html
写个开机启动的脚本就好了
vim /etc/init.d/iplinkset.sh
1
1
写入内容
#!/bin/sh
ip link set eth0 promisc on
ip link set env promisc on
1
2
3
1
2
3
增加可执行权限
chmod +x /etc/init.d/iplinkset.sh
1
1
设置开机启动权限
update-rc.d iplinkset.sh defaults
1
1
如果要禁用开机启动,则可执行下方命令
update-rc.d -f iplinkset.sh remove
1
1
对OpenWRT容器停止或删除导致宿主机卡顿或重启
这点在Docker镜像作者的文章中提到过,原文如下:在对容器进行停止或删除操作时,树莓派可能会发生卡顿现象,SSH 可能会断开,1~2 分钟后会恢复正常,目前原因不明
OpenWRT插件问题
同样源于镜像作者文章:经测试,发现 Adblock 不工作,UnblockNeteaseMusic 需要自行设置代理,除此之外容器中的 OpenWrt 多数应用工作正常
其他配置
有些人的需求不一定跟我一样,可能会把设备拿来做旁路由等,可部分参考下方文章
旁路由(这是本文使用的Docker镜像作者的文章,比较详细):https://mlapp.cn/376.html
主路由:https://www.cnblogs.com/mokou/p/16173553.html
结束
由于作者写这篇教程的时候已经搭建完成了,加上时间仓促,上述部分操作是根据回忆来写的,甚至有些步骤没有经过二次验证,可能存在些许错误,如有发现请及时反馈。
文章知识点与官方知识档案匹配
云原生入门技能树首页概览
8792 人正在系统学习中
点击阅读全文
打开CSDN APP,看更多技术内容
树莓派4B跑 OpenWrt 根目录扩容 及 docker 配置_sean908的博客...
首先需要ssh到路由器 # 把软件包列表更新 opkg update # 安装分区软件 opkg install cfdisk # 使用cfdisk进行空间划分 cfdisk /dev/mmcblk0 我用的是16G的存储卡, 把空闲空间全拿来划给根目录和docker 其中docker分区的直接在cfdisk里...
继续访问
...树莓派_教你用树莓派安装集成docker版openwrt、homeassistant等及一...
集成DOCKER版本OPENWRT,还有HOME ASSISTANT以及N1 智能家居镜像出炉,ARMBIAN系统全DOCKER形式包含OPENWRT这两篇帖子以来,一时心痒痒,重新拿出吃灰多年的树莓派3B+以及春节入手的N1折腾了起来。
继续访问
openwrt-orangepi-zero-ext4-sdcard.img.gz
OpenWrt-Lede_18.06.02 OrangePi Zero wifi-xr819 and soc-audio enabled! OrangePi Zero 安装OpenWrt 能够实现wifi和播放音乐。 详细安装和操作步骤: First Run boot-config: http://192.168.10.1/cgi-bin/modules/boot-config/index.cgi Click Create a backup of uboot (dtb-file) Configure items to boot (wifi-xr819, Sunxi-IR, 1Wire (PA06 GPIO-6), i2c0, i2c1, pwm0, usb2-3 ..). Click Save changes. Click Apply changes, and reboot. Orange-pi reboots and a new AP appears "orangepi-zero".
热门推荐 在Docker 中运行 OpenWrt 旁路网关
步骤开始 成功登陆到树莓派的 SSH 后,在拉取镜像之前,我们还需要进行一些额外的工作: 1.打开网卡混杂模式 sudo ip link set eth0 promisc on 2.创建网络 (须结合实际网络情况,不能照抄命令) docker network create -d macvlan --subnet=192.168.123.0/24 --ga...
继续访问
openwrtx86安装docker_群晖Docker安装openwrt简易流程_weixin_3995137...
在docker安装openwrt前要准备三个前提: 一、开启ssh并启用root,这个就不赘述了,百度一下或者张大妈都有很多教程的。 二、docker安装Portainer可视化面板三、开启设置以太网卡开启混杂模式,docker搭建macvlan网络。
继续访问
贝壳如何docker安装openwrt_基于Docker编译openwrt_简甜XIU09161027的...
Docker确实是个好东西,当我用MAC OSX下载编译openwrt过程中遇到不少问题时,想到openwrt官网wiki建议使用的Ubuntu,于是我想到了Docker。 至于Docker怎样好,在MAC OSX里怎么安装,在这里不作细说,可参考这篇文章。
继续访问
斐讯盒子N1-docker入门二(制作openwrt)
一、准备工作 1、下载源码 git clone https://github.com/openwrt/openwrt.git 2、安装依赖包 apt-get install gcc binutils bzip2 flex python perl make find grep diff unzip gawk getopt subversion libz-dev libc 3、安装源码包 ./scripts/feeds install -a ./scripts/feeds install -a 二
继续访问
Auto_Build_OpenWrt:自动构建ARMv8设备的OpenWrt
行动OpenWrt 使用GitHub Actions构建OpenWrt并发布Docker映像 感谢P3TERX , bin20088和flippy ,这只是他们工作的结合。 发行的固件适用于S9xxx设备,Newifi_D2,G-Dock,amd64和带有rtl8125以太网设备的J4125。 随意或拉以节省时间,它将每天更新。 如何使用 您需要添加4个(至少第一个)机密,才能使Actions正常工作。 RELEASES_TOKEN ,应该是您的Github个人访问令牌,并且至少已检查public_repo 。 DOCKER_USERNAME (可选,如果不需要aarch64 docker img)是您的dockerhub用户名。 DOCKER_PASSWORD (可选,如果您不需要aarch64 docker img),它实际上不是您的dockerhub帐户的密码,而是从do
orangepi安装PHP5,OrangePi Zero 制作NAS服务器
系统选择我选择的系统是dietpi,当然你也可以尝试使用基于debian的其他系统(比如:armbian)dietpi首先添加openmediavault软件源:编辑/etc/apt/sources.list.d/openmediavault.list(没有则自行创建)vi /etc/apt/sources.list.d/openmediavault.list在openmediavault.lis...
继续访问
最新发布 Orangepi 5 Unixbench基准测试结果
OPI 5的Unixbench基准测试结果
继续访问
树莓派中利用docker搭建openwrt旁路由
树莓派中利用docker搭建openwrt旁路由 注意需要先查看内核信息(需要是aarch64) uname -m 1.查询当前网卡名称(以下均以网卡名eth0为例,请注意替换) ifconfig 2.打开网卡混杂模式 ip link set eth0 promisc on 3.创建虚拟网络 docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=eth0 macnet 4.拉取
继续访问
Docker和Docker 网卡的创建及其使用openWRT
Docker使用及其应用
继续访问
orangepi zero2 安装openwrt的docker方法
orangepi zero2 docker安装openwrt docker安装 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 或 curl -sSL https://get.daocloud.io/docker | sh openwrt安装 查看网络信息 ifconfig 网卡混杂模式 ip link set eth0 promisc on 创建macvlan,ip替换自己的网络ip docker network
继续访问
使用香橙派zero2及其他单网口开发板搭建UU加速盒
使用香橙派zero2及其他单网口开发板搭建UU加速盒
继续访问
Linux 5.1移植到orange pi (五)--USB摄像头
1:mjpg-streamer在orange pi ubuntu上测试UVC camera sudo apt-get install libjpeg8-dev sudo apt-get install imagemagick sudo apt-get install libv4l-dev sudo apt-get install cmake git clone https:/...
继续访问
【云原生之Docker实战】使用Docker部署openwrt软路由
【云原生之Dokcer实战】使用Docker部署openwrt软路由
继续访问
OrangePi Zero 安装OpenWrt 实现wifi和播放音乐
OrangePi Zero 安装OpenWrt 实现wifi和播放音乐 官方Orange Pi Zero硬件规格: CPU H2 Quad-core Cortex-A7 H.265/HEVC 1080P. GPU Mali400MP2 GPU @600MHz Memory 512MB DDR3 TF card (Max. 64GB)/ NOR Flash(2MB Default not posted) 10/100M Ethernet WIFI XR819, IEEE 802.11 b/g/n 1.
继续访问
树莓派Raspberry Pi 3B+ 安装OpenWrt及配置(有线、无线联网,AP)
OpenWrt官方介绍 OpenWrt项目是一个针对嵌入式设备的Linux操作系统。OpenWrt不是一个单一且不可更改的固件,而是提供了具有软件包管理功能的完全可写的文件系统。这使您可以不使用供应商提供的应用程序选择和配置,而是通过使用软件包来定制设备以适应任何应用程序。对于开发人员来说,OpenWrt是一个无需围绕它构建完整固件就能开发应用程序的框架对于普通用户来说,这意味着拥有了完全定...
继续访问
ARMv8的两种执行状态: AArch64/AArch32
Copied from ARM® Compiler User Guide When compiling code, you must first decide which target the executable is to run on. An ARMv8-A target can run in different states: • AArch64 state targets execu...
继续访问
香橙派R1 Plus开发板使用OpenWRT镜像的操作说明
香橙派R1 Plus电脑开发板采用瑞芯微RK3328 四核64位处理器,拥有1GB DDR4内存、双千兆网口、TF卡插槽、散热风扇接口等功能接口,支持openWRT等操作系统,板子其中一个千兆网口是 USB3.0 转接的,实测转发速率能达到900MB以上,适合作为家庭路由器使用,其中,r1plus的openwrt系统已经配置好,可以直接用作路由器。 openwrt镜像的安装和烧写 Linux 镜像的方法是一样的,大家可以参考下香橙派官方的使用手册。下文对系统的使用做简单的说明: 1、OpenWRT
继续访问
树莓派4B跑 OpenWrt 根目录扩容 及 docker 配置
本文主要 对树莓派使用存储卡运行OpenWrt时根目录空间紧缺 及docker初始化 做简要介绍
继续访问
刷软路由系统openwrt并基础配置网络
首先常见路由线路有 光猫拨号 =>路由器ap 光猫拨号 =>路由器ap =>软路由(单臂路由) 光猫拨号 =>软路由 =>路由器ap (隔一层nat转发) 光猫桥接 =>软路由 =>路由器ap (软路由拨号) ...
继续访问
双千兆网口开发板香橙派R1 Plus 运行OpenWRT系统使用Samba网络共享
香橙派Zero2开发板采用全志H616 四核 64位处理器,512MB/1GB 内存可选,集成千兆以太网、蓝牙5.0+双频WiFi、USB2.0、Micro-HDMI等端口,适配了OpenWRT系统,可做路由器方案。 下文将介绍安装OpenWRT后如何使用Samba 网络共享: 1) 点击“服务”->“网络”进入Samba 网络共享管理页面 2) 点击底部“新增”需要共享的目录,这里以设置共享/mnt 目录为例,设置好共享 目录的名称、路径和权限后,点击“保存并应用” 3) 在 w.
继续访问
orangepi zero2部署网心云docker版
orangepi zero2部署网心云docker版
继续访问
树莓派docker安装openwrt
docker
linux
写评论
评论
收藏
点赞
踩
分享
前往
×
可以的,要实现远程控制,必须要有一台服务器作为消息交流媒介。比如在同一个局域网内,香橙派搭建一个服务器192.168.1.101:80,客户端安卓设备连接到该服务进行消息判断及响应对应代码。反之安卓设备搭建一个服务器192.168.1.102:80,对客户端香橙派发来的消息进行判断及响应对应代码。
如果不在同一个局域网内,必须要有一个公网IP作为服务器 或 公网IP映射内网服务器。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)