根据esir固件制作openwrt docker镜像

post by rocdk890 / 2022-12-21 17:13 Wednesday linux技术
相信还是有很多小伙伴喜欢用docker来运行openwrt,但市面上的openwrt docker镜像很少,有些小伙伴都把精力放在自己编译openwrt固件上去了,这样就造成需要使用docker openwrt镜像的小伙伴被逼得只能去搭建个虚拟机来进行安装openwrt.今天我就来教大家怎么把别人制作好的openwrt固件来做成docker openwrt镜像.
系统:centos 7.x(64位)
需要用的固件:esir精品小包 秋季K54版[2022] 固件包名字是openwrt-spp-k54-autumn[2022]-x86-64-generic-squashfs-legacy.img.gz

1.去esir google网盘下载固件包

https://drive.google.com/drive/folders/1uRXg_krKHPrQneI3F2GNcSVRoCgkqESr

在这个地址里选esir SPP精品小包,选最新的,目前最新的是04 Autumn[2022]

然后把下好的openwrt固件包丢到linux虚拟机里.

2.制作docker openwrt镜像包
[root@myvps ~]# mkdir openwrt

[root@myvps ~]# cd openwrt

[root@myvps openwrt]# cp ~/openwrt-spp-k54-autumn[2022]-x86-64-generic-squashfs-legacy.img.gz . 

[root@myvps openwrt]# gunzip openwrt-spp-k54-autumn[2022]-x86-64-generic-squashfs-legacy.img.gz

[root@myvps openwrt]# fdisk openwrt-spp-k54-autumn[2022]-x86-64-generic-squashfs-legacy.img -l


Disk openwrt-spp-k54-autumn[2022]-x86-64-generic-squashfs-legacy.img: 541 MB, 541589504 bytes, 1057792 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4727f5fb

                                                          Device Boot      Start         End      Blocks   Id  System
openwrt-spp-k54-autumn[2022]-x86-64-generic-squashfs-legacy.img1   *         512       33279       16384   83  Linux
openwrt-spp-k54-autumn[2022]-x86-64-generic-squashfs-legacy.img2           33792     1057791      512000   83  Linux

我们只需要把512 * 33792,把得到数值记录下来就好.

[root@myvps openwrt]# echo $((33792*512))
17301504

[root@myvps openwrt]# mkdir op

[root@myvps openwrt]# mount -o loop,offset=17301504 openwrt-spp-k54-autumn[2022]-x86-64-generic-squashfs-legacy.img ./op

[root@myvps openwrt]# tar czf openwrt.tar.gz -C ./op .

[root@myvps openwrt]# docker import openwrt.tar.gz  rocdk890/openwrt-x86-64

最后把打包好的docker 镜像上传到docker hub

[root@myvps openwrt]# docker push rocdk890/openwrt-x86-64

好了,接下来你就可以把docker openwrt镜像运行起来了.

3.打开网卡混杂模式
[root@myvps openwrt]# ip link set ens32 promisc on

4.创建网络
[root@myvps openwrt]# docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=ens32 macnet

请根据你自己的网卡名字和网段进行修改subnet gateway paarent这3个参数.

5.启迪docker openwrt
[root@myvps openwrt]# docker run --restart always --name openwrt -d --network macnet --privileged rocdk890/openwrt-x86-64 /sbin/init

6.进入容器并修改相关参数

[root@myvps openwrt]# docker exec -it openwrt sh

vi /etc/config/network
config interface 'lan'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.1.2'
option netmask '255.255.255.0'
option delegate '0'
option gateway '192.168.1.1'
option broadcast '192.168.1.0'
option dns '192.168.1.1'

保存后,重启网络 /etc/init.d/network restart

最后使用浏览器访问http://192.168.1.2
默认账号:root
默认密码:password

7.登录 web 界面后,请进入 “网络” -> “接口” -> “LAN” -> “修改”,检查最下方 “基本设置” 中的 “忽略此接口” 要是勾选状态,如果不是,请修改保存


8.如何使用 openwrt 作为旁路由?

到这一步应该就知道该怎么做了,这里也简单记录一下几种方案,根据所需情况进行选择:

方法①:可以修改主路由的 dhcp 配置,将其下发的网关与DNS改为 openwrt 的 ip 地址

方法②:关闭主路由的 dhcp,打开 openwrt 的 dhcp,由 openwrt 来分配网络中的 ip 地址和下发相关信息

方法③:直接修改设备上的网络信息,不从 dhcp 获取,直接手动填写


9.使用 openwrt 做旁路由后,在 openwrt 中检测网络通畅,但设备不能正常上网?

应该是 openwrt 防火墙的配置问题,因为 docker 的网络环境可能跟正常的硬件网络环境还有些许区别,目前在网上找到以下几个解决方案:

首先进入“网络”->“防火墙”

方法①:在“基本设置”中,“转发” 的选项从 “拒绝” 改为 “接受” 试试
来自:https://github.com/SuLingGG/blog-comments/issues/2#issuecomment-903896998

方法②:“自定义规则”中,注释规则 “iptables -t nat -I POSTROUTING -j MASQUERADE” 试试
来自:https://github.com/SuLingGG/OpenWrt-Docker/issues/13

方法③:“自定义规则”中,添加规则 “iptables -I FORWARD -j ACCEPT”、“iptables -I INPUT -j ACCEPT” 试试
来自:https://www.bilibili.com/video/BV1d3411J7bp

好了,就到这吧.

ps:
本文参考:
https://www.cnblogs.com/xwgli/p/16249437.html
https://www.expoli.tech/articles/2020/09/03/1599098023589
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-797.html

标签: centos 镜像 制作 docker openwrt esir 固件

评论: