这里写自定义目录标题
OpenWRT 中使用创建docker Openwrt和其他宿主机中的docker容器通信
网络拓扑
首先网络得支持多拨,否则没有意义,之所以这么折腾,是因为直接OpenWRT多拨的情况下,网心云从原先的映射公网型变成全锥型
openwrt主路由,
cpu:Intel® Celeron® CPU J1900 @ 1.99GHz
内存:4G
网口:6口intel I211 千兆网口
原先计划是PVE,然后跑4个OpenWRT虚拟机,然而带不动,基本一天死机一回
后面改成现在这种模式:
局域网上网只用了0口和1口,有多余的网口用于docker openwrt
pve虚拟机跑docker 网心云
局域网划分了4个网段
192.168.1.0/25 网关192.168.1.126
192.168.1.160/27 网关192.168.1.190
192.168.1.192/27 网关192.168.1.222
192.168.1.224/27 网关192.168.1.254
一、准备
1、openwrt镜像,
可以根据下面这个去扩容,原始镜像的软件空间太小了,版本自己下载最新的
https://blog.csdn.net/yuanmingming521/article/details/126741073
2、安装pve
网上超多教程,这里就不写了
替换国内的源
vi /etc/apt/sources.list
#把其余的注释掉
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
删除PVE企业源
vi /etc/apt/sources.list.d/pve-enterprise.list
#注释掉
#deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprise
安装docker
apt update
apt install docker.io
二、PVE配置
1、网络配置
登录pve
https://ip:8006
创建linux bridge
2、创建docker network
登录PVE后台,创建macvlan
docker network create -d macvlan --subnet=192.168.1.160/27 --gateway=192.168.1.190 -o parent=vmbr1 -o macvlan_mode=bridge net190
root@:~# docker network ls
NETWORK ID NAME DRIVER SCOPE
110ea0f854dc bridge bridge local
74e0f19ab3a1 host host local
dc7b6ee9f6c1 net190 macvlan local
3078d2dcba7c net222 macvlan local
0cf90f04cffa net254 macvlan local
4de979658c7e netlan macvlan local
3f03cc1590b4 netwan macvlan local
d861ece9492e none null local
root@:~#
三、OpenWRT配置
1、登录openwrt,在网络–>接口–>设备,添加设备配置
设备类型:选择maclan
基设备:选择对应的物理网口
模式:桥接(允许mac vlan间直接通信)
其余默认
2、配置接口ip
网络–>接口–>添加新接口
名称:br2(方便记忆,第二个网口)
协议:静态IP或者不配置协议,我这里选择的静态ip
注意地址不要配置成网段的第一个可用ip,包括后面建立容器也一样,不要使用第一个可用的ip
设备:选择对应的接口
点击创建接口,配置相应网段的空闲ip,wan口的macvlan 不配置ip
最后保存并应用
根据上面的步骤创建其余的接口
3、创建docker network
登录openwrt后台,创建网络
docker network create -d macvlan --subnet=192.168.1.160/27 --gateway=192.168.1.190 -o parent=eth2mac0 -o macvlan_mode=bridge net190
#下面这个网段随便配置的
docker network create -d macvlan --subnet=192.168.100.0/24 --gateway=192.168.100.254 -o parent=eth1mac0 -o macvlan_mode=bridge netwan
eth2mac0 这个是连接pve的网口
eth1mac0 这是连接光猫的网口
4、创建docker OpenWRT
docker run --name op190 -d --network net190 --restart=always --privileged garethwang/openwrt-22.03.2-x86-64 /sbin/init
docker network connect netwan op190
5、修改OpenWRT的配置
5.1、修改docker openwrt的lan口ip
docker exec -it op190 sh
vi /etc/config/network
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.1.190'
option netmask '255.255.255.224'
option ip6assign '60'
ctrl+d
docker restart op190
5.2、登录docker op190 配置网络和安装软件
docker和宿主机是可以ping通的,但是电脑和docker在不同网段,ping不通,用xshell或者securecrt 登录到openwrt主路由后,再跳转,
网页输入 127.0.0.1:2555,密码是password
配置pppoe拨号上网
5.3、安装必要的软件
修改opkg 源
将上面位置的配置替换成如下的配置
src/gz openwrt_core https://mirrors.aliyun.com//openwrt/releases/22.03.2/targets/x86/64/packages/
src/gz openwrt_base https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/base/
src/gz openwrt_luci https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/luci/
src/gz openwrt_packages https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/packages/
src/gz openwrt_routing https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/routing/
src/gz openwrt_telephony https://mirrors.aliyun.com/openwrt/releases/22.03.2/packages/x86_64/telephony
然后安装luci-i18n-base-zh-cn和luci-i18n-upnp-zh-cn,其他也不需要了
四、测试
在pve主机中创建容器
docker run -dit --name=wxy162 --net=net190 --ip=192.168.1.162 --privileged=true --tmpfs /run --tmpfs /tmp -v /mnt/wxy4/wxy4:/storage:rw registry.hub.docker.com/onething1/wxedge
进入docker openwrt 去pingpve中的容器地址
root@OPHOME:~# docker exec -it op190 sh
BusyBox v1.35.0 (2022-10-14 22:44:41 UTC) built-in shell (ash)
/ # ping 192.168.1.162
PING 192.168.1.162 (192.168.20.162): 56 data bytes
64 bytes from 192.168.1.162: seq=0 ttl=64 time=0.571 ms
64 bytes from 192.168.1.162: seq=1 ttl=64 time=0.450 ms
64 bytes from 192.168.1.162: seq=2 ttl=64 time=0.449 ms
64 bytes from 192.168.1.162: seq=3 ttl=64 time=0.680 ms
^C
--- 192.168.1.162 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.449/0.537/0.680 ms
/ #
五、最终结果