群晖Docker添加macvlan网络,让容器获取ipv6地址

运营商:中国电信
路由器:X86软路由,ikuai系统,3.6.0
网络环境:IPv4 & IPv6双动态公网IP地址

图片[1]-群晖Docker添加macvlan网络,让容器获取ipv6地址-杨公子的博客

一、SSH连接至群晖,输入ip a,查看网卡名称

kenny@Diskstation-zjg:~$ ip a
6: ovs_bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1
    link/ether 00:11:32:e9:fd:f9 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.23/24 brd 10.10.10.255 scope global ovs_bond0
       valid_lft forever preferred_lft forever
    inet6 fc00:b84:f70b:1::e6e/128 scope global
       valid_lft forever preferred_lft forever

inet和inet6分别对应的是nas的ipv4地址和ipv6地址,正确ipv4地址对应的ovs_bond0就是需要的网卡名称,记住备用。

二、查看运营商给我们分配的ipv6地址前缀是什么(以安徽电信为例)

1、以我的网络设备和环境为例,主路由也就是负责拨号的路由上面,我用的是ikuai系统,进入网络设置,下翻找到ipv6设置

图片[2]-群晖Docker添加macvlan网络,让容器获取ipv6地址-杨公子的博客

2、在ikuai的ipv6设置内,右边内网ipv6地址就包含有需要的前缀

图片[3]-群晖Docker添加macvlan网络,让容器获取ipv6地址-杨公子的博客

以我获取到的地址240e:361:46d6:4910::1001/60为例,macvlan网络需要的前缀就是240e:361:46d6:4910::

三、返回群晖SSH,开始创建macvlan网络并分配ipv6地址

docker network create -d macvlan -o parent=ovs_bond0 6Net --subnet=10.10.10.0/24 --ip-range=10.10.10.200/29 --gateway=10.10.10.2 --ipv6 --subnet=240e:361:46d6:4910::1/64

详细解析:

1、-d macvlan指定创建的网卡所用驱动程序为macvlan,保持不变即可。

2、-o parent=ovs_bond0指定父接口为NAS实际的网卡名称,也就是第一步中ip a获取到的网卡名称,替换ovs_bond0为你自己的网卡名称即可。

3、6Net是macvlan网络的名称,名称可以自定义,但不能缺少这一块内容,可以直接命名为macvlan

4、–subnet=10.10.10.0/24指定macvlan网卡的子网,根据实际情况替换修改即可。

5、–ip-range=10.10.10.200/29指定macvlan网卡的IP段及子网掩码,根据实际情况替换修改即可。

6、–gateway=10.10.10.2指定macvlan网卡的网关地址,也就是主路由地址,如家里有其他路由或次级路由,则以实际情况为准替换即可。

7、–ipv6 –subnet=240e:361:46d6:4910::1/64配置macvlan网卡的ipv6部分,subnet和ipv4部分一样是指定子网,240e:361:46d6:4910这个部分是前面查到的本地ipv6前缀,以你实际查到的去替换即可,/64是v6部分的子网掩码,同样以各人实际情况进行替换,一般默认/64即可。

8、确认各项内容无误后,粘贴至群晖SSH运行即可。

四、macvlan网络成功创建后,在docker内创建容器指定网络至macvlan网卡即可。

1、容器启动后,可以在主路由端刷新查看是否有对应新IP地址的设备出现

2、也可以在终端内执行

root@Diskstation-zjg:~# docker network inspect 6Net


    {
        "Name": "6Net",
        "Id": "520ced5fd86a0f38391782217ea98adf6da635fd76039e7adf74e4df460ba7e6",
        "Created": "2022-01-08T22:56:18.489283715+08:00",
        "Scope": "local",
        "Driver": "macvlan",
        "EnableIPv6": true,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.10.10.0/24",
                    "IPRange": "10.10.10.200/29",
                    "Gateway": "10.10.10.2"
                },
                {
                    "Subnet": "240e:361:46d6:4910::1/64"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "6a08fa7c79037818b66a86f670214eedb1558b1bb152d33475329253cd05190c": {
                "Name": "linuxserver-qbittorrent1",
                "EndpointID": "505854ece8c32a658ec961a2202d7d5137f0357e11f1581781f2594cc52d1695",
                "MacAddress": "02:42:0a:0a:0a:c8",
                "IPv4Address": "10.10.10.200/24",
                "IPv6Address": "240e:361:46d6:4910::2/64"
            }
        },
        "Options": {
            "parent": "ovs_bond0"
        },
        "Labels": {}
    }
]

“Containers”: {}这个部分就是容器的参数,包括容器ID、名称,MAC地址,IPv4和IPv6地址。

3、群晖DSM7可能会出现docker套件内点击网络显示空白的情况,就需要在SSH内将已创建容器的网络部分从桥接host网卡转移至macvlan网卡

root@Diskstation-zjg:~# docker stop linuxserver-qbittorrent1

root@Diskstation-zjg:~# docker network connect 6Net linuxserver-qbittorrent1

root@Diskstation-zjg:~# docker start linuxserver-qbittorrent1

docker network connect macvlan网卡名称 容器名称

执行后再启动容器即可

转载至:http://www.kennylife.cn/index.php/Synology/macvlan_synology.html

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片