为Docker容器启用NAT IPV6(多容器共享一个公网V6)
# 默认分类
1. 前言
IPv6已经推出很久了,在政策推动下也有很多IDC提供IPV6地址,如阿里云提供/64的地址。
在实际操作里面,往往要让访客也使用IPV6来访问你的项目,如果docker没开启ipv6支持,且你没用host网络模式的话,端口多半访问不了,或者在后端看不见访客真实IP(往往看到的是docker网关)。
但是默认情况下你开启的Docker IPv6支持是每个容器一个IPv6地址
这样有两个坏处:
- 容器IPv6如果被扫描到,可能有安全隐患;
- 有一些小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访问的容器添加到该网络中即可完成操作。