Docker IPv6 网络环境配置

由于目前Docker 在IPv6网络中运行的相关配置并非默认自动生成的,所以需要大家根据自己的网络环境来具体做一些相应配置,具体如下:

本次操作是在 Ubuntu16/18或者CentOS7 OS上面 通过docker官网手册安装方式 安装的Docker程序

 

第一步 在 docker 配置文件 添加IPv6配置参数

配置文件路径均为/etc/docker/daemon.json
如果改文件不存在,请直接创建
 
如果docker运行的寄主机已经成功获取到IPv6公网地址并能够正常访问IPv6公网资源后,还不知道怎么给docker分配对应的IPv6地址,
则可直接将 docker 的默认IPv6网段设置为 fc00:17:1:1::/64 (可以理解为IPv6的内网地址)
 
{
  "ipv6": true,
  "fixed-cidr-v6": "fc00:17:1:1::/64"
}

之后需要手动对刚才的IPv6内网地址设置NAT转换(因为docker 在IPv4的环境下会自动将内网地址做NAT转换)

并通过 -L 来查看NAT配置是否添加成功

ip6tables -t nat -A POSTROUTING -s fc00:17:1:1::/64 -j MASQUERADE
ip6tables -t nat -L

最后重新启动 docker 服务

systemctl restart docker

效果如下:

经过上述配置后,通过docker run 方式启动(利用默认的bridge网络模式)的容器即可自动获取到fc00:1:1::/64 网段中的IPv6地址。

并能够继承Host寄主机的网络资源环境。

如果你想使用 docker-compose 的方式来启动一组容器的话,那还需要对之前使用的 docker-compose.yml 文件进行部分升级,具体如下:

首先,compose的版本需要使用

version: '2.1'

然后在每一个services中添加网络参数(举例存在一个名为 app_net 的网络)

    networks:
        app_net:

之后在yml文件的最后添加 app_net 这个网络的具体参数:

复制代码
networks:
    app_net:
        driver: bridge
        enable_ipv6: true
        ipam:
            driver: default
            config:
            - subnet: 172.19.0.0/24
              gateway: 172.19.0.1
            - subnet: fc00:32:1:1::/120
              gateway: fc00:32:1:1::1
复制代码

其中给这个网络分配的IPv6网段是 fc00:32:1:1::/120 (不要与之前deamon.json中的网段有重合),/120网段可以提供 256个的可用地址

然后把这个IPv6内网地址段(fc00:32:1:1::/120) 利用  ip6tables -t nat 的指令(同上)将该地址段成功添加到host 寄主机中的 IPv6 nat配置中即可

之后再用 ip6tables -t nat -L  查看是否添加成功

最后利用访问一些公网的IPv6地址来测试网络是否搭建成功即可。

posted @ 2021-12-03 21:19  lclc  阅读(1703)  评论(0编辑  收藏  举报