在虚拟机,物理机部署OpenWrt路由系统,应该是很多人都折腾过的了,折腾的尽头还是希望省事的用上稳定的网络,现在,OpenWrt来到了在Docker部署的时候了,如果你感兴趣,可以看看这个建议教程,五分钟就能搭建好.
本教程使用环境为PVE下的Ubuntu虚拟机:
1 | uname -an |
因为是旁路由模式,配置的网络是接入现有的局域网,我的局域网环境信息如下:
1 | 网络:172.16.0.0/12 |
网卡混杂模式
首先设置docker所在机器的网卡模式,通过root用户或者sudo执行以下命令(其中ens18是你的网卡名字,根据你的实际替换):
1
ip link set ens18 promisc on
通过ip link
,检查该网卡是否开启混杂模式成功:
1
2
3
4
5开启前:
ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
开启后(多了PROMISC):
ens18: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
创建Docker网络
执行以下命令(供参考,具体网段,网卡信息以你本地为准):
1 | docker network create --driver macvlan --subnet=172.16.0.0/12 --gateway=172.16.16.172 -o parent=ens18 openwrt |
1 | 执行示例 |
下载镜像
不是随意的OpenWrt镜像都能在docker下运行,这里推荐https://supes.top/,可以自定义构建,也可以下载现成的镜像(下载最后一个可解压固件,一般用于Docker或LXC等容器).
下载后不用解压,将文件命名为:openwrt-x86-64-generic-rootfs.tar.gz
.
导入镜像
将镜像执行以下命令导入,最后一个参数是导入后的名字,看你喜好:
1 | docker import openwrt-x86-64-generic-rootfs.tar.gz cat_openwrt |
1 | 执行示例 |
创建容器
执行以下命令创建容器:
1 | docker run -d \ |
1 | 执行示例 |
进入容器
1 | docker exec -it openwrt sh |
1 | 执行示例 |
修改IP
如果IP信息不对,可以执行命令修改并重启网络:
1 | sed -i 's/172.16.16.5/172.16.16.1/' /etc/config/network && /etc/init.d/network restart |
当然,你也可以在容器里面手动修改其他参数.