У меня есть два физических сервера, подключенных друг к другу в локальной сети. Сервер A запускает Docker с контейнером Ubuntu. Сервер B работает с базой данных MySQL (без каких-либо дополнительных действий).
Теперь мне нужно получить доступ к базе данных MySQL на сервере B из docker-контейнера на сервере A.
Сервер B имеет только ipv6-адрес.
Когда я запускаю ping6 <ipv6_server_b>
на хосте А, это работает. Эта же команда из docker-контейнера на хосте A дает мне unknown host
.
Я думаю, что мне нужно создать докерский мост к ipv6-подсети Сервера B. Все мои усилия привели к той же самой ошибке unknown host
. И я не хочу использовать --network=host
.
Общедоступный Интернет подключен по интерфейсу хостов ens16
, пока Сервер B находится в локальной зоне безопасности, подключенной по интерфейсу ens17
Подробное описание
Я включил ipv6 в опциях докера, как это:
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --ipv6 --fixed-cidr-v6=2001:db8:1::/64 "
1. Я пытался создать мостовую сеть для подсети ipv6 зоны безопасности
docker network create --driver bridge --ipv6 --subnet=fcfc:0:0:1::/64 db-link
2. Это команда, которую я использую для запуска контейнера и назначения сети
docker run -it --network=db-link nicolaka/netshoot
(nicolaka / netshoot содержит много полезных диагностических материалов)
3. Попытка пропинговать адрес Сервера B из контейнера:
ping6 fcfc::1:24fc:25ff:fe25:c903
PING fcfc::1:24fc:25ff:fe25:c903(fcfc::1:24fc:25ff:fe25:c903) 56 data bytes
From fcfc:0:0:1::2: icmp_seq=1 Destination unreachable: Address unreachable
From fcfc:0:0:1::2: icmp_seq=2 Destination unreachable: Address unreachable
From fcfc:0:0:1::2: icmp_seq=3 Destination unreachable: Address unreachable
ping google.com
PING google.com (172.217.18.14) 56(84) bytes of data.
64 bytes from fra02s19-in-f14.1e100.net (172.217.18.14): icmp_seq=1 ttl=56 time=0.787 ms
64 bytes from fra02s19-in-f14.1e100.net (172.217.18.14): icmp_seq=2 ttl=56 time=0.631 ms
4. Это вывод ip
-команд в контейнере
ip -6 route show
fcfc:0:0:1::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via fcfc:0:0:1::1 dev eth0 metric 1024 pref medium
ip route show
default via 172.21.0.1 dev eth0
172.21.0.0/16 dev eth0 proto kernel scope link src 172.21.0.2
5. Я пытался создать macvlan
сеть
docker network create --driver macvlan --ipv6 --subnet=fcfc:0:0:1::/64 -o parent=ens17 db-link
Теперь я могу пропинговать IP-адрес Сервера B fcfc::1:24fc:25ff:fe25:c903
, но, поскольку macvlan ограничивает доступ к отдельному интерфейсу, я не могу подключиться к общедоступному Интернету.
6. Заключение
- Мостовая сеть создана, но я не получаю соединение / маршрут к отправке ipv6 Сервера B - Почему?
- Сеть macvlan позволяет контейнеру пропинговать сервер B, но невозможно подключиться к общедоступному Интернету.