全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 515|回复: 3

简单几步 让docker bridge网络也能使用IPv6

[复制链接]
发表于 2024-1-13 14:14:55 | 显示全部楼层 |阅读模式
省流总结:

通过修改配置文件,使用NAT6的方式,让使用docker bridge网络内的容器也能访问IPv6


具体方法:

0.首先确保linux服务器上的ip转发相应功能是开启的

1.编辑 /etc/docker/daemon.json,写入以下内容,开启IPv6支持(如果该文件已经存在其他内容的话,把花括号内的选项,按照文件格式,添加到文件的末尾即可)

  1. {
  2.   "ipv6": true,
  3.   "fixed-cidr-v6": "fd10::/80"
  4. }
复制代码


2.创建一个支持ipv6的docker bridge网络,例如下面这样(其中 anet 为网络的标识名字,fd00::/80为内网子网网段)

  1. docker network create --ipv6 --subnet fd00::/80 anet
复制代码


3.修改iptables的配置文件,加入NAT规则以能使其正常访问外部(以下为命令方式暂时生效,需要随后使用既定方法永久保存。如果服务器本身就存在iptables相关的配置文件的话,请考虑转换格式后,将其直接写入配置文件)

  1. ip6tables -t nat -A POSTROUTING -s fd00::/80 ! -o br+ -j MASQUERADE
  2. ip6tables -t nat -A POSTROUTING -s fd10::/80 ! -o docker0 -j MASQUERADE
复制代码


4.重启docker相关服务,尝试添加一个容器到已经创建的bridge网络(如果使用的是命令行的话则需要加一个 --network 选项后面跟上创建的网络,如果用的是docker compose文件的话直接加一个 network: 后面跟上创建的网络即可)

5.可以进入容器内命令行,试试ping任意一个IPv6网站,如果出现以下类似于以下这个例子的话,那就代表成功了

  1. # ping -6 google.com

  2. PING google.com (2a00:1450:4001:809::200e): 56 data bytes
  3. 64 bytes from 2a00:1450:4001:809::200e: seq=0 ttl=53 time=1.234 ms
  4. 64 bytes from 2a00:1450:4001:809::200e: seq=1 ttl=53 time=1.611 ms
  5. 64 bytes from 2a00:1450:4001:809::200e: seq=2 ttl=53 time=1.860 ms
  6. 64 bytes from 2a00:1450:4001:809::200e: seq=3 ttl=53 time=1.769 ms
  7. --- google.com ping statistics ---
  8. 4 packets transmitted, 4 packets received, 0% packet loss
  9. round-trip min/avg/max = 12.769/16.618/19.611 ms
复制代码

发表于 2024-1-13 14:16:48 | 显示全部楼层
docker ipv6我都直接给子网  现在普遍都是vps都给/64 用都用不完
发表于 2024-1-13 14:21:11 | 显示全部楼层
黄药师 发表于 2024-1-13 14:16
docker ipv6我都直接给子网  现在普遍都是vps都给/64 用都用不完

赞同
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-10 16:22 , Processed in 0.063784 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表