今天人多,再次请问一下 docker 容器如何支持 ipv6,并正常访问外网

2020-01-30 17:02:27 +08:00
 Jays

目前: 本地的 PC 和 docker 宿主机都可以正常访问 ipv6 访问 ipv6 网络。

但是容器内可以获取到 ipv6 地址(外网),但是通过控制台 ping6 ipv6.baidu.com 都无法访问。

操作的是: { "ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64" }

2001:db8:1 替换成了路由获取到的地址。

参考教程: https://www.itdaan.com/blog/2018/06/01/9c40958f838af908faabb21639ddc2d8.html

5190 次点击
所在节点    问与答
21 条回复
yhkang
2020-01-30 20:22:55 +08:00
每个容器都可以有公网 ipv6 地址?看起来不错,过完年回去我也要试一试
Jays
2020-01-30 20:37:56 +08:00
@yhkang 期待你能成功。我目前是 容器 获取到了 ipv6 地址。但无法访问 ipv6 网络。不知道哪里的问题
aru
2020-01-30 20:51:06 +08:00
这段 IPv6/64 已经分配到主机了,你需要给 docker 另外一段 ipv6/64
Jays
2020-01-30 21:01:55 +08:00
@aru 宿主机和 PC 端,都是这个网段的。

另外一个网段是自己设置嘛? 还是从哪里获取?
aru
2020-01-30 21:11:41 +08:00
@Jays
自己指定就好了,你的 isp 给你分配的 ipv6 应该是 /48 或 /56 吧,在这个范围内随便指定一段
Jays
2020-01-30 21:23:14 +08:00
@aru 以下为路由器的信息。

IPv6 地址: WAN: 2408:822a:4c01:XXXX:b97a:1e4c:1d3b:c98/64
IPv6 地址: LAN: 2408:822a:4c1f:XXX:767d:24ff:fe95:6487/60

PC:

IPv6 地址 . . . . . . . . . . . . : 2408:822a:4c1f:XXX:3556:a962:2de0:efa8(首选)
临时 IPv6 地址. . . . . . . . . . : 2408:822a:4c1f:XXX:144f:8b20:9205:c75c(首选)

该使用哪段?
aru
2020-01-30 22:23:31 +08:00
IPv6 地址: LAN: 2408:822a:4c1f:XXX:767d:24ff:fe95:6487/60
这里面取
由于你 隐藏了完整地址,所以自己取吧
和你 pc 的差不多的
aru
2020-01-30 22:28:59 +08:00
2408:822a:4c1f:XXX::/64
xxx 和和你已有机器的都不同
Buges
2020-01-30 22:35:52 +08:00
这个我也不太明白,因为家宽的地址段经常变化,不知道变了之后这个配置需不需要改。
我的做法是 docker 的 ipv6 地址前缀填私网地址把 ipv6 启用起来,然后用 macvlan 把容器桥接出来自然得就通过 slaac 获取到地址了。
Jays
2020-01-31 12:09:33 +08:00
@Buges 具体操作 命令能发一下嘛? 我也是家用宽带 ip 经常变化
Buges
2020-01-31 12:21:10 +08:00
Jays
2020-01-31 15:02:09 +08:00
@aru

"fixed-cidr-v6": "2408:822a:4c1f:f01::/64"

容器获取到的 ip 信息如下。

"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.4",
"IPPrefixLen": 16,
"IPv6Gateway": "2408:822a:4c1f:f01::1",
"GlobalIPv6Address": "2408:822a:4c1f:f01:0:242:ac11:4",
"GlobalIPv6PrefixLen": 64,
"MacAddress": "02:42:ac:11:00:04",

"IPv6Gateway": "2408:822a:4c1f:f01::1", 会不会获取到的 ipv6 网关地址不对,局域网可以 ping 通容器,但是容器 ping ipv6.baidu.com 还是无法 ping。

PC 的网关是 :fe80::767d:24ff:fe95:6487%13
aru
2020-01-31 15:32:20 +08:00
@Jays
ping6 2400:da00:2::29
能够 ping 通就对了
如果不能够 ping 通,是不是你的路由器 ipv6 前缀又变了?
Venk666
2020-01-31 18:35:01 +08:00
ipv6nat
Jays
2020-01-31 19:25:45 +08:00
@aru 前缀没变。ping 不通外网。

感觉貌似比较麻烦,最后我采用 host 模式重建了容器。
reece
2020-02-02 17:19:19 +08:00
ipv6 地址还是无法上外网
simon261
2020-05-27 06:28:48 +08:00
@aru
你好,请教一下 ipv6 的问题
我的路由 lan 口是 a:a:a:480::1/60
那么掩码就是覆盖 a:a:a:48,对嘛?
然后路由的 lan 口 ip 是 a:a:a:480::1
docker 里设置的
"fixed-cidr-v6": "a:a:a:481::/64"
docker0 网关的 ip"a:a:a:481::1
容器的 ip 是"a:a:a:481:c:d:e:2
现在容器和寄主机器可以互 ping 通,寄主和路由都能平通 ipv6 的外网。
但是路由 ping a:a:a:481::1 说网络不可达。

"fixed-cidr-v6": "a:a:a:481::/64" 这样设置对嘛?
在 a:a:a:480::/60 子网里下面两个应该是同一个网段的吧?
a:a:a:481::/64
a:a:a:480::/64
路由为什么说不可达呢?
不知道是不是理解错了。
aru
2020-05-27 07:30:24 +08:00
@simon261
路由器看 一下获得的 /60 ip, 如: a:a:a:480::1/60
可以给 docker 分配这个 ip: a:a:a:480:111::/64
然后就可以了,重启 docker,建立一个测试容器吧
aru
2020-05-27 07:31:30 +08:00
电信分配的 ipv6 也是动态的,每次换了你还得改,建议在家庭拨号环境不要设 ipv6 docker 。
secondpaul
2020-09-07 17:53:43 +08:00
@Buges 前辈,请问“用 macvlan 桥接出来”的 macvlan 是创建一个前缀为光猫获取前缀的 macvlan 吗,那不就没有通过 slaac 自动配置了吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/641022

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX