为Docker容器启用NAT IPV6(多容器共享一个公网V6)

1. 前言

IPv6已经推出很久了,在政策推动下也有很多IDC提供IPV6地址,如阿里云提供/64的地址。
在实际操作里面,往往要让访客也使用IPV6来访问你的项目,如果docker没开启ipv6支持,且你没用host网络模式的话,端口多半访问不了,或者在后端看不见访客真实IP(往往看到的是docker网关)。
但是默认情况下你开启的Docker IPv6支持是每个容器一个IPv6地址

这样有两个坏处:

    1. 容器IPv6如果被扫描到,可能有安全隐患;
    1. 有一些小IDC可能只提供个位数的IPv6地址,没有更多地址给容器。

本文简单记录下咋给docker启用ipv6-nat

2. 步骤

要用到这个项目:github.com/robbertkl/docker-ipv6nat

首先你可以拉去该项目对应的镜像:

docker pull robbertkl/ipv6nat

随后用docker命令跑起来容器就行了:

docker run -d --name ipv6nat --privileged --network host --restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock:ro -v /lib/modules:/lib/modules:ro robbertkl/ipv6nat

对于详细的说明你可以参考这里

随后,你可以创建一个新的docker网络来启用ipv6:

docker network create --ipv6 --subnet fd00:dead:beef::/48 mynetwork

这里的fd00:dead:beef::/48便是你的内网ip了。

接下来,把你要启用ipv6访问的容器添加到该网络中即可完成操作。

添加新评论