部署步骤

1. 开启网卡混杂模式

注意enp1s0 需要根据 ifconfig 命令查看自己的本地网卡名称进行替换

sudo ip link set enp1s0 promisc on

2. 创建 Macvlan 虚拟网卡

参数说明

  • --subnet:子网网段
  • --gateway:网关地址
  • -o parent:虚拟网卡的真实父级网卡(第一步中的本地网卡名称)
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=enp1s0 macnet

3. 验证虚拟网卡创建

成功创建后能看到名称为 macnet 的虚拟网卡

docker network ls

4. 拉取 OpenWrt 镜像

国内环境使用 registry.cn-hangzhou.aliyuncs.com/zzsrv/openwrt:latest
玩客云32位使用 dickhub/openwrt:arm_cortex-a5_vfpv4

docker pull zzsrv/openwrt:latest

5. 创建并运行容器

docker run --restart always --name openwrt -d --network macnet --privileged zzsrv/openwrt /sbin/init

6. 进入容器内部环境

docker exec -it openwrt bash

7. 修改网络配置

根据实际情况修改网络配置,修改完成后保存退出

vi /etc/config/network

8. 重启容器

退出容器后,在宿主机执行重启命令

docker container restart openwrt

注意事项

项目 说明
网卡名称 enp1s0 需替换为实际网卡名称
子网网段 需与局域网环境匹配,避免冲突
网关地址 需与路由器网关地址一致
镜像源 可使用国内镜像源加速拉取

常用命令参考

docker ps
docker logs openwrt
docker stop openwrt
docker rm openwrt

玩客云18.06软件包

cat > /etc/opkg/opkg.conf << 'EOF'
list option roots_dir /usr/lib/opkg
option tmp_dir /var/tmp
option check_signature 0
EOF
cat > /etc/opkg/distfeeds.conf << 'EOF'
src/gz immortalwrt_core http://downloads.immortalwrt.org/releases/18.06-k5.4-SNAPSHOT/targets/at91/sama5/packages
src/gz immortalwrt_base http://downloads.immortalwrt.org/releases/packages-18.06-k5.4/arm_cortex-a5_vfpv4/base
src/gz immortalwrt_luci http://downloads.immortalwrt.org/releases/packages-18.06-k5.4/arm_cortex-a5_vfpv4/luci
src/gz immortalwrt_packages http://downloads.immortalwrt.org/releases/packages-18.06-k5.4/arm_cortex-a5_vfpv4/packages
src/gz immortalwrt_routing http://downloads.immortalwrt.org/releases/packages-18.06-k5.4/arm_cortex-a5_vfpv4/routing
src/gz immortalwrt_telephony http://downloads.immortalwrt.org/releases/packages-18.06-k5.4/arm_cortex-a5_vfpv4/telephony
EOF
rm -rf /var/opkg-lists/*
opkg update