Install an Openwrt container in Docker hosted on Debian version 11.
升级了OpenMediaVault系统到6.9.8-1 (Shaitan),通过omv-extras安装了Docker 20.10.21版本;准备将通过PVE运行的OpenWrt系统切换到Docker中运行,使用旁路由模式支持内网中其它设备使用。记录下操作流程,方便日后使用。
当前网络设置
- 网络: 192.168.5.0/24
- 主路由器(网关):192.168.5.1
- 子网掩码: 255.255.255.0
- OpenWRT的IP: 192.168.5.91
可通过现有主路由器查看以上设置信息
Step1:拉取Openwrt Image文件
这里使用的是以下版;可选择其它版本;
docker pull sulinggg/openwrt:x86_64
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sulinggg/openwrt x86_64 3d9db27509a6 7 months ago 223MB
Step2:打开OMV物理机网卡的混杂模式
$ ip addr
查看当前物理网卡:enp1s0为当前系统使用的网卡名称
ip link set enp1s0 promisc on
ip link | grep enp1s0
2: enp1s0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
简单的讲,混杂模式就是指网卡能接受所有通过它的数据流,不管是什么格式,什么地址的
Step3:创建一个为OpenWrt专用的Docker网络
设置中需要为OpenWrt分配IP地址,需要先配置出虚拟网卡,Docker中使用macvlan完成虚拟网卡设置,增加一个macvlan模式的网卡,子网和网关根据前述网络信息设置。
docker network create --driver macvlan --subnet=192.168.5.0/24 --gateway=192.168.5.1 -o parent=enp1s0 macnet
docker network ls
a94c8f7268xx macnet macvlan local
Step4:运行openwrt容器
创建容器并运行openwrt容器,注意网络ip与现有网络设备无冲突
docker run -d \
--restart always \
--network macnet \
--ip 192.168.5.91 \
--privileged \
--name openwrt \
sulinggg/openwrt:x86_64 /sbin/init
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9541f2ff6822 sulinggg/openwrt:x86_64 "/sbin/init" 3 hours ago Up 3 hours openwrt
Step5: 进入容器完成网络设置
docker exec -it openwrt bash
或
docker exec -it openwrt sh
编辑网络配置, 修改lan部分的设置,替换lan网络配置如下:
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.5.91' # 为 openwrt 设置 ip 地址
option netmask '255.255.255.0' # 子网掩码
option gateway '192.168.5.1' # 网关
option broadcast '192.168.5.255'
option dns '119.29.29.29' # DNS,根据实际情况设置
通过vi进入编辑,保存后退出
vim /etc/config/network
Step6:重启网络
重启容器内网络
/etc/init.d/network restart
网络重启后,openwrt已经部署完成,可以通过浏览器访问openwrt的IP(本例为192.168.5.91)访问系统的Web操作界面;默认用户如下,登录后可修改; - 默认账号:root - 默认密码:password
Step7:Openwrt旁路由设置
Openwrt旁路由设置,主要有以下三个方式,可根据实际网络需求设置;
- 修改主路由dhcp配置,将其下发网关与DNS改为openwrt设备的ip地址
- 关闭主路由dhcp服务,打开openwrt设备dhcp服务,由openwrt管理网络中设备的ip地址分配
- 手工直接修改各设备上的网络信息,使用Openwrt做为DNS解析的设备,不推荐使用
Links:
-
Ref Link: https://www.szxiot.com/2023/02/23/deploy-openwrt-with-docker/
-
Ref Link: https://blog.gavinzh.com/2022/03/28/Docker-OpenWrt-Side-Route-Installation-Tutorial/
================================