群晖配置MACVLAN DSM7.1&DSM7.2

20250325092242745-2-1P619100PJ31

配置macvlan

本教程过程中使用SSH 进行macvlan配置,需要在群晖的面板开启SSH!

在配置maclvan之前,可以使用命令ifconfig查看当前使用的网卡,这里演示的使用是ovs_eth0其他网卡请自行替换。

创建的macvlan 有支持IPV4或者V4和V6 一起用。

IPV4

docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
-o parent=ovs_eth0 macvlan

IPV4&IPV6

docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
--ipv6 \
--subnet=2008::/60 \
--gateway=2008::1 \
-o parent=ovs_eth0 macvlan

其中–subnet是你现在内网的IP网段,–gateway是你的网关,ipv6的subnet和gateway与V4同理。

到此群晖的macvlan就配置结束。

配置macvlan与宿主机通讯

上一步配置好macvlan之后,因为macvlan设计之初的想法是不能与宿主机通讯的,所以我们需要在创建一个虚拟的macvlan桥接达到与宿主机通讯的目的。

因为群晖并没有nmcli的命令只有ip命令,但是ip命令会在重启后消失,所以我们需要借助系统的systemctl命令来开机自启动执行脚本。

脚本可以存放在你随意的地方,教程中的路径仅供参考。

开始脚本:

ip link add macvlan_host link ovs_eth0 type macvlan mode bridge
ip addr add 192.168.1.111 dev macvlan_host
ip link set macvlan_host up
ip route add 192.168.222 dev macvlan_host

这里简单做个解释,方便大家理解

第一条命令是增加一个macvlan的桥接网卡名字是macvlan_host 可以根据自己喜好去改名字,ovs_eth0是你使用的网卡名字查询方法与创建maclvan相同。

第二条命令是给第一条命令创建的网卡一个IP

第三条命令是把创建的网卡生效。

第四条命令就是添加路由,其中的IP是你容器使用macvlan分配到的ip地址,以后每次增加新容器,都需要重复添加此条命令,注意IP要换。

停止脚本:

ip route del 192.168.1.222 dev macvlan_host || true
ip link set macvlan_host down || true
ip addr del 192.168.1.111 dev macvlan_host || true
ip link del macvlan_host || true

命令没什么过多解释的,就是删除路由和创建的网卡,第一条命令与开始的命令的最后一条内的IP 要一样,开始脚本有几个,删除脚本就要有几。

群晖的systemctl的services路径在/usr/local/lib/systemd/system所以我们创建一个macvlan.servies

touch /usr/local/lib/systemd/system/macvlan.service ###创建macvlan.service文件

vi /usr/local/lib/systemd/system/macvlan.service ###编辑

粘贴下面的内容

[Unit]
Description=Macvlan shim to allow docker to route to host
# After=pkgctl-Docker.service
# BindsTo=pkgctl-Docker.service
ReloadPropagatedFrom=pkgctl-Docker.service
PartOf=pkgctl-Docker.service

[Service]
Type=oneshot
ExecStart=/bin/bash /usr/local/bin/macvlan_start.sh
ExecStop=/bin/bash /usr/local/bin/macvlan_stop.sh
RemainAfterExit=yes
Restart=no

[Install]
WantedBy=pkgctl-Docker.service

这里需要注意几个地方,死一个是开始脚本macvlan_start.sh与maclan_stop.sh的路径位置其中/usr/local/bin要替换成你自己的路径。

文件结尾处的

[Install]
WantedBy=pkgctl-Docker.service

在群晖不同的版本中,有不同的名字

dsm7.1是pkgctl-Docker.service

dsm7.22是pkgctl-ContainerManager.service

请根据不同的系统,进行修改。

后期如果群晖更新系统,导致无法使用,可以使用命令 ls /usr/local/lib/systemd/system查看新的docker服务器。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容