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

省流总结: 通过修改配置文件,使用NAT6的方式,让使用docker bridge网络内的容器也能访问IPv6 具体方法: 0.首先确保linux服务器上的ip转发相应功能是开启的 1.编辑 /etc/docker/daemon.json,写入以下内容,开启IPv6支持(如果该文件已经存在其他内容的话,把花括号内的选项,按照文件格式,添加到文件的末尾即可) {   “ipv6”: true,   “fixed-cidr-v6”: “fd10::/80” }复制代码 2.创建一个支持ipv6的docker bridge网络,例如下面这样(其中 anet 为网络的标识名字,fd00::/80为内网子网网段) docker network create –ipv6 –subnet fd00::/80 anet复制代码 3.修改iptables的配置文件,加入NAT规则以能使其正常访问外部(以下为命令方式暂时生效,需要随后使用既定方法永久保存。如果服务器本身就存在iptables相关的配置文件的话,请考虑转换格式后,将其直接写入配置文件) ip6tables -t nat -A POSTROUTING -s fd00::/80 ! -o br+ -j MASQUERADE ip6tables -t nat -A POSTROUTING -s fd10::/80 ! -o docker0 -j MASQUERADE复制代码 4.重启docker相关服务,尝试添加一个容器到已经创建的bridge网络(如果使用的是命令行的话则需要加一个 –network 选项后面跟上创建的网络,如果用的是docker compose文件的话直接加一个 network: 后面跟上创建的网络即可) 5.可以进入容器内命令行,试试ping任意一个IPv6网站,如果出现以下类似于以下这个例子的话,那就代表成功了 # ping -6 google.com PING google.com (2a00:1450:4001:809::200e): 56 data bytes 64 bytes from 2a00:1450:4001:809::200e: seq=0 ttl=53 time=1.234 ms 64 bytes from 2a00:1450:4001:809::200e: seq=1 ttl=53 time=1.611 ms 64 bytes from 2a00:1450:4001:809::200e: seq=2 ttl=53 time=1.860 ms 64 bytes from 2a00:1450:4001:809::200e: seq=3 ttl=53 time=1.769 ms — google.com ping statistics — 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 12.769/16.618/19.611 ms复制代码

请登录后发表评论

    • 头像╰青春是一首歌0
    • 头像做ー個明媚の钕子0