在 Docker 中运行 OpenWrt(旁路由)
·2 min read·BIGWONG Studio
OpenWrtNetwork
原理: 使用 Docker macvlan 虚拟化一个二层网卡给容器使用,类似于虚拟机的桥接网卡。
默认账密: root / password
方式一:Shell 命令
ip link set [你的网卡名,例如 eth0] promisc on
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=[同上网卡名] macnet
docker run --restart always -d --network macnet --privileged -v /lib/modules:/lib/modules raymondwong/openwrt_r9:autobuild-21.12.6-arm64
等待容器状态变为 running,然后打开 http://192.168.1.254 验证是否部署成功。
方式二:Docker Compose
ip link set [你的网卡名,例如 eth0] promisc on
mkdir openwrt && cd openwrt
# 将下方 YAML 内容保存为 docker-compose.yaml,然后修改 driver_opts.parent 为你的网卡名
# 在同一目录下运行:
docker-compose up -d
等待容器状态变为 running,然后打开 http://192.168.1.254 验证是否部署成功。
docker-compose.yaml
version: '2'
services:
openwrt:
image: raymondwong/openwrt_r9:21.2.1-arm64
container_name: openwrt_r9
privileged: true
restart: always
networks:
openwrt_macnet:
ipv4_address: 192.168.1.254
networks:
openwrt_macnet:
driver: macvlan
driver_opts:
parent: en0
ipam:
config:
- subnet: 192.168.1.0/24
ip_range: 192.168.1.128/25
gateway: 192.168.1.1
注意: 本方案为单网卡方案。如果部分插件工作异常,可以尝试添加第二张虚拟网卡来模拟真实路由器。