Docker部署OpenWrt实现旁路由上网的详细步骤以及排雷点

发布于:2025-09-11 ⋅ 阅读:(19) ⋅ 点赞:(0)

一、起因

        前两年玩AIO和黑群的时候,折腾Docker部署OpenWrt做旁路由,从来没有成功过,后来通过用虚拟机安装实现了旁路由的功能,所以也就没在细查问题。包括家里的白群上,也是用虚拟机安装了OpenWrt而不是用Docker。

        前两天心血来潮,玩了下飞牛nas的系统,测试Docker的时候,突然想起了几年前绕过去的这个坑,决定再尝试尝试,一番折腾之后成功了,于是写下来做个备忘。

二、过程

1、准备固件,docker版本的一般是xxx.tar.gz文件,假设叫wrt.tar.gz吧。

2、开启设备网卡混杂模式,ssh里输入命令:

ip link set eth0 promisc on

这里是第一个坑,eth0一般是linux下第一个网卡的名字,我用vm装的飞牛,敲了这个命令,结果提示eth0不存在!见鬼了的,明明是可以上网的?ifconfig查看了下,飞牛里这块网卡的名字是ens33。。。行吧,于是命令变成

ip link set ens33 promisc on

OK,搞定。接下来设置网络

3、创建一个名为openwrt的macvlan

docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.254 -o parent=ens33 openwrt

这一步,是整个安装过程中最大的坑,回想下,当年没有搞定,就是这里出了问题,网上搜教程搜攻略,大多数是复制粘贴的一句:

docker network create -d macvlan –subnet=10.0.0.0/24 –gateway=10.0.0.1 -o parent=eth0 openwrt

先不说这一句命令错误百出,里边的子网、网关值也鲜有解释说明,照抄的话,基本上抄一个死一个。首先subnet的值,必须是现实中网络环境所处网段,大多数家庭用户通过路由器自动获取ip上网的话,ipv4地址一般都是192.168.0.x,网关是192.168.0.1,那么这里的subnet值就要写成“192.168.0.0/24”,gateway值为“192.168.0.1”。我这里网段是192.168.0.0,但是网关是254。其次,parent=eth0这里,也要按照实际情况修改,比如我这里的网卡就不是eth0而是ens33

4、加载镜像,创建并启动容器

docker import wrt.tar.gz myopenwrt

docker run --restart=always --name=openwrt -d --network=openwrt --privileged myopenwrt /sbin/init

5、进入openwrt容器的bash

docker exec -it openwrt sh

6、修改OpenWrt的管理ip地址

nano /etc/config/network

找到interface为“lan”的代码段,找到option ipaddr ,修改后边引号里的ip地址为你需要的值,例如'192.168.0.188',然后保存退出。

7、重启OpenWrt网络

 /etc/init.d/network restart

8、浏览器里输入刚才设置的ip地址,用默认用户名密码登录后根据自己的情况进行设置,然后将其他上网设备的网关改为OpenWrt的ip地址,OK,完成。

三、结束

本次部署一次成功,也解决了之前的问题,把回想起来的两个坑做个说明备忘,也希望能帮到有缘人。


网站公告

今日签到

点亮在社区的每一天
去签到