我在运行 docker 的客户服务器上有一个 IPv6 IP
301b:e0d0:401:0348:lk19:7:0:2
配置在/etc/resolv.conf
domain my.domain
nameserver ::1
nameserver 301b:e0d0:401:0348:505:7:0:2
nameserver 301b:e0d0:401:0348:506:7:0:2
如何获取其子网?我们可以更改从右侧开始的第四个值。但保持其他值不变。
我尝试在我的网络中为其设置子网。在我的 docker-compose.yml 文件中进行设置
networks:
default:
driver: bridge
enable_ipv6: true
ipam:
config:
- subnet: 301b:e0d0:401:0348::/64
services:
ipv6nat:
container_name: ipv6nat
restart: always
image: robbertkl/ipv6nat
privileged: true
network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /lib/modules:/lib/modules:ro
但不起作用。无法在这种格式的容器中使用 ping6 到其他网络
# ping6 301b:e0d0:401:0348:[DIFFERENT_VALUE_HERE]:7:0:2
unreachable
答案1
如何获取在 Docker 中使用的 IPv6 子网?
向您的提供商、ISP 或任何其他机构请求地址空间的委派。如果您只有一个,则地址空间/64
不够。理想情况下,您应该能够请求一个/48
,但如果他们吝啬,他们可能会给您一个类似的东西/56
。
我们可以将第四个值从右侧开始改变
不可以。您的网络是/64
,这意味着一半的位用于主机地址。Docker 主机和您在该组合中创建的网络必须位于单独的子网中。
但你们两个网络都在同一个子网上。
301b:e0d0:401:0348:[DIFFERENT_VALUE_HERE]:7:0:2
地址的这一301b:e0d0:401:0348::
部分定义了之后的所有内容的子网/64
,我仅将其用于同一子网上的主机。