openwrt-docker
您好,根据您提供的操作说明,我为您整理了一份在 Docker 中部署 OpenWrt 和 Clash 的清晰指南。
🔧 准备工作:验证网络环境
您提到的教程中使用了 ens33 作为网卡名和 192.168.254.0/24 作为网络网段。在开始操作前,请务必在您的 Ubuntu 系统中运行以下命令,确认这些信息与您的实际环境匹配:
1 | # 1. 查看您的主网卡名称(不一定是ens33) |
关键核对点:
- 物理网卡名:确认用于连接外网(或您希望 OpenWrt 接入)的网卡名称,例如
ens160、eth0等。 - 子网与网关:确认您希望为 OpenWrt 虚拟网络分配的网段(如
192.168.254.0/24)不能与宿主机 Ubuntu 所在的局域网网段(例如192.168.1.0/24)重叠,否则会导致网络冲突。
📦 操作步骤:部署 OpenWrt
以下步骤基于您提供的命令,并加入了关键提示。
拉取 OpenWrt 镜像
1
docker pull piaoyizy/openwrt-x86:latest
启用网卡混杂模式
将以下命令中的ens33替换为您第一步中确认的真实物理网卡名。1
sudo ip link set ens33 promisc on
创建 Macvlan 网络
同样,将parent=ens33中的网卡名替换。subnet和gateway也请根据您的规划修改。1
docker network create -d macvlan --subnet=192.168.254.0/24 --gateway=192.168.254.2 -o parent=ens33 macnet
- 创建后,可用
docker network ls命令查看是否出现macnet。
- 创建后,可用
创建并启动 OpenWrt 容器
这里使用了zzsrv/openwrt:x86_64镜像,与第一步拉取的镜像名不一致,请注意。如果前者拉取失败,可以尝试将zzsrv/openwrt:x86_64替换为piaoyizy/openwrt-x86:latest。1
docker run --restart always --name openwrt -d --network macnet --privileged zzsrv/openwrt:x86_64 /sbin/init
进入容器并配置网络
- 进入容器:
1
docker exec -it openwrt bash
- 修改网络配置,将容器 IP 设置到
macnet网段内(例如192.168.254.10):1
vi /etc/config/network
- 按
i进入编辑模式,修改config interface 'lan'下的ipaddr选项,例如:1
option ipaddr '192.168.254.10'
- 按
ESC键退出编辑模式,输入:wq保存并退出vi编辑器。 - 退出容器命令行(输入
exit或按Ctrl+D)。
- 进入容器:
重启容器使配置生效
1
docker container restart openwrt
默认登录信息:配置完成后,理论上可通过
http://192.168.254.10访问其 Web 管理界面(如 Luci)。默认账号为root,默认密码为password。
🚀 补充:部署 Clash 服务
您提供的 Clash 部署命令非常清晰,可以直接运行。它会在后台启动一个 Clash 容器,并映射 Web 面板和代理端口。
1 | docker run --name clash -d \ |
关键说明:
-p 9090:9090:将容器的 9090 端口映射到宿主机。请注意,这与您之前安装的 Cockpit 服务端口(9090)冲突。您必须修改其中一个服务的端口。- 建议:将 Clash 的 Web 面板端口改为其他未被占用的端口,例如
-p 9091:9090,这样您就可以通过宿主机的9091端口访问 Clash 面板。
- 建议:将 Clash 的 Web 面板端口改为其他未被占用的端口,例如
-v ...:将宿主机目录挂载到容器,用于持久化 Clash 配置文件(如config.yaml)。请确保/www/wwwroot/docker/clash/config目录存在。
⚠️ 重要提醒与建议
- 镜像来源:请注意,您提供的步骤中出现了两个不同的 OpenWrt 镜像名称。建议统一使用其中一个,并确保其来源可靠。
- 网络规划:这是最关键的步骤。错误地设置 Macvlan 子网(与主机网络冲突)会导致宿主机或容器网络不可用。请务必提前规划好不冲突的 IP 网段。
- 端口冲突:如前所述,Clash 的 9090 端口会与 Cockpit 冲突,必须在运行时修改。
- 防火墙:如果宿主机 Ubuntu 启用了
ufw防火墙,需要放行相关端口(如 Clash 的 7890-7892,以及修改后的管理端口)。 - 后续使用:成功运行 OpenWrt 容器后,通常需要将其设置为旁路由或主路由,并配置 Clash 作为其透明网关,这涉及更复杂的网络配置。
如果您在根据本指南操作时遇到具体问题(例如网络不通、端口冲突或镜像拉取失败),可以提供更多错误信息,我可以帮您进一步分析。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 works!
评论
WalineUtterances


