docker容器ipv6设置

Glider 三月 26, 2022

前言

在使用qbit等bt下载软件时,如果有ipv6地址,节点的连接性将会更好,下载速度更快,peer也会更多。刷流更快

由于docker对于ipv6的支持并不是特别好,不能像ipv4一样,为创建的容器自动分配ipv6地址,或者进行nat等操作。

但是对于一个所有软件都装在docker内的mjj来说,这是不能容忍的事情。

在查阅了诸多资料之后,这里记录一下docker如何完美开启ipv6,并且为容器自动进行v6nat等操作。

环境验证

为了开启docker的ipv6支持,首先你的host主机必须要有能用的ipv6地址(废话)

这里用北邮人进行验证

ping6 byr.pt

PING byr.pt(2001:da8:215:4078:250:56ff:fe97:654d (2001:da8:215:4078:250:56ff:fe97:654d)) 56 data bytes
64 bytes from 2001:da8:215:4078:250:56ff:fe97:654d (2001:da8:215:4078:250:56ff:fe97:654d): icmp_seq=1 ttl=48 time=88.0 ms
64 bytes from 2001:da8:215:4078:250:56ff:fe97:654d (2001:da8:215:4078:250:56ff:fe97:654d): icmp_seq=2 ttl=48 time=86.7 ms
64 bytes from 2001:da8:215:4078:250:56ff:fe97:654d (2001:da8:215:4078:250:56ff:fe97:654d): icmp_seq=3 ttl=48 time=81.6 ms
64 bytes from 2001:da8:215:4078:250:56ff:fe97:654d (2001:da8:215:4078:250:56ff:fe97:654d): icmp_seq=4 ttl=48 time=86.0 ms

接下来用busybox容器使用host网络进行验证

docker run --rm -it --net=host busybox /bin/sh

ping6 byr.pt

PING byr.pt(2001:da8:215:4078:250:56ff:fe97:654d (2001:da8:215:4078:250:56ff:fe97:654d)) 56 data bytes
64 bytes from 2001:da8:215:4078:250:56ff:fe97:654d 

如果以上输出的东西都正常,说明你的docker安装和host的ipv6都正常。

如果后续步骤出现了什么问题,一定要使用上述两种方式检查网络的连通性,以便debug

正文

经过上一节的验证后,你的ipv6地址应该是没问题了,接下来对docker的网络进行配置

vim /etc/docker/daemon.json #加入以下配置的时候,注意别破坏了原来的结构,例如镜像啥的

{
  "experimental": true,
  "ipv6": true,
  "ip6tables": true,
  "fixed-cidr-v6": "fc00:100::/24"
}

systemctl daemon-reload
systemctl restart docker

完事后查看主机本身是否还能连上ipv6,方式如同第一节。

如果没什么问题,则恭喜你,完成了设置。

如果发现主机的ipv6失效了,ping不通,则尝试以下补救措施:

  1. 编辑 /etc/sysctl.conf文件,加入以下字段
net.ipv6.conf.ens3.accept_ra = 2
# 注意,这里的ens3是你的网卡名称,可以使用`ip addr`等命令进行查看,看情况进行修改
  1. sudo sysctl -p 使设置生效

之后再尝试ping6,查看主机的ipv6是否恢复

最后

此时你的docker应该可以无感的进行ipv6分配了,我们测试一下:

docker run --rm -it busybox /bin/sh

ping6 byr.pt

PING byr.pt(2001:da8:215:4078:250:56ff:fe97:654d (2001:da8:215:4078:250:56ff:fe97:654d)) 56 data bytes
64 bytes from 2001:da8:215:4078:250:56ff:fe97:654d 

结语

这里只是记录了我的折腾过程,由于docker的ipv6不完善,可能会出现更多奇奇怪怪的问题。

暂时能用就行……