博主的NAS是用debian搭建的,在里面安装了docker,准备把一些常用的应用迁移到docker里来,但是之前一直没有搞定docker里的ipv6,所以一直搁浅中,今天花了点时间研究,终于全部解决。写下这个教程,给新手避个坑。

环境如下:

  • debian 11
  • docker 20.10.18

准备工作:

  • 保证路由器能正常获取ipv6地址----博主的路由器是OpenWRT,电信有给ipv6
  • 去路由器里找到FD开头的ipv6地址,这种即是本地的ipv6
  • 保证debian能正常获取ipv6地址----如果没有,请在/etc/network/interfaces的文档最后面,加上iface ens224 inet6 dhcp,注意ens224换成你自己的网卡的标识,然后重启一下debian
  • 保证debian里的ipv6能正常访问----查看ipv6的网关:ip -6 route show,如果有:default via fe80::20c:29ff:fe0f:3032 dev ens224 metric 1 pref medium,类似这样的出现,说明ipv6一切正常。如果没有ipv6的网关,手动增加:route -A inet6 add default gw fe80::20c:29ff:fe0f:3032 dev ens224,如果不知道ipv6的网关是什么,用命令:ip -6 route show dev ens224查看

如果下次开机这个默认路由消失了,可以在/etc/network/interfaces的最后,添加一行

up route -A inet6 add default gw fe80::20c:29ff:fe0f:3032 dev ens224

这样开机时,自动启用这条路由。

Docker的ipv6配置:

一,用ssh登录debian,添加一个docker的ipv6配置

nano /etc/docker/daemon.json

内容为

{
  "ipv6": true,
  "fixed-cidr-v6": "fd58:66:88::/48",
  "experimental": true,
  "ip6tables": true
}

注意第二行,即是路由器里的本地ipv6地址前缀

二,重启docker

systemctl restart docker

docker应用配置

为了能让应用使用ipv6,所以尽量选择host的网络。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注