自在工坊

走在代码边缘

Docker下部署OpenWrt操作记录

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 bashdocker 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旁路由设置,主要有以下三个方式,可根据实际网络需求设置;

  1. 修改主路由dhcp配置,将其下发网关与DNS改为openwrt设备的ip地址
  2. 关闭主路由dhcp服务,打开openwrt设备dhcp服务,由openwrt管理网络中设备的ip地址分配
  3. 手工直接修改各设备上的网络信息,使用Openwrt做为DNS解析的设备,不推荐使用

Links:

================================

Pelican Image

Comments