У меня есть IP-адрес IPv6 на гостевом сервере, на котором работает докер.
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
Как настроить подсеть IPv6 для использования в Docker?
Спросите своего провайдера, интернет-провайдера или кого-либо еще о делегировании адресного пространства. Если у вас есть только /64
вам не хватает. В идеале вы должны иметь возможность запросить /48
, хотя, если они будут скупы, они могут дать вам что-то вроде /56
.
Мы можем изменить четвертое значение, начиная с правой стороны
Нет, не можешь. Ваша сеть - это /64
, что означает, что половина битов используется для адреса хоста. Хост Docker и сеть, которую вы создаете в этой композиции, должны находиться в разных подсетях.
Но вы обе сети в одной подсети.
301b:e0d0:401:0348:[DIFFERENT_VALUE_HERE]:7:0:2
В 301b:e0d0:401:0348::
часть адреса определяет подсеть для /64
все после этого я использовал только для хостов в той же подсети.