1.打开网卡的混杂模式
sudo ip link set eth0 promisc on
注意:这里的 eth0代表的是你的网卡的名称
2.创建网络
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet
这里需要查看你内网的网段进行修改,可以通过ifconfig
或者ip addr show
来查看你的设备所在的内网网段 这里建议设置静态IP。
假如说你的设备IP是 192.168.10.33 那么说明你处于192.168.10.x网段,
你需要将上面的subnet=192.168.1.0/24 --gateway=192.168.1.1
改成subnet=192.168.10.0/24 --gateway=192.168.10.1
3.拉取镜像
我用的是黑豹这个设备是arm64
架构的系统,所以我们选取的镜像也得符合arm64,可以去openwrt官网,也可以使用别人制作好的。
docker pull sulinggg/openwrt:armv8 #推荐用第一个,比较新。
docker pull buddyfly/openwrt-aarch64
4.启动容器
##使用sulinggg/openwrt:armv8
docker run --restart always --name openwrt -d --network macnet --privileged sulinggg/openwrt:armv8 /sbin/init
##使用buddyfly/openwrt-aarch64
docker run --restart always --name openwrt -d --network macnet --privileged buddyfly/openwrt-aarch64:latest
其中:--restart always
参数表示容器退出时始终重启--name openwrt
参数定义了容器名称为openwrt(这里可以自定义)-d
参数定义容器运行在Daemon模式--networt macnet
参数定义将容器加入macnet
网络--privileged
参数定义容器运行在特权模式下buddyfly/openwrt-aarch64:latest
为docker镜像名
容器启动后可以 执行docker ps -a
查看正在运行的容器
5.进入容器,修改参数。
//这里有些系统问题,有些可能不支持bash
docker exec -it openwrt bash
//bash不行就试试ash
docker exec -it openwrt ash
- 输入
nano /etc/config/network
打开文件 在里面输入/替换以下内容
config interface 'lan' option type 'bridge' option ifname 'eth0' option proto 'static' option ipaddr '192.168.1.120' option netmask '255.255.255.0' option gateway '192.168.1.1' option dns '192.168.1.1'
- 所有的 192.168.1.x 需要根据树所处网段修改,option gateway和option dns填写路由器的 IP, 一般都是.1
- 配置完毕后 请 ctrl+x 然后 Y 然后回车 保存退出
- 保存之后重启网络
/etc/init.d/network restart
6.大功告成,进入网页端
到这里基本的部署已经搞定了 接下来是网页端的配置,打开浏览器输入上一步option ipaddr
中的IP地址,比较新的镜像用户名及密码均为root
,老的密码为:password
推荐设置:
- 修改root密码
- 不提供 DHCP 服务(一定不要随意关闭接口桥接!取消桥接之后记得要勾上eth0)
7.其他容器如果想使用openwrt的容器作为网关
- 首先容器创建的时候,需要选择第2步创建的网络,并添加权限
--cap-add=NET_ADMIN
搭建完成之后,进入容器内部,运行以下代码。
# 删除现有默认网关 ip route del default # 添加新的默认网关 ip route add default via 192.168.1.120 # 检验是否设置成功 ip route show default