Рейтинг:1

контейнер docker/podman с общедоступным IPv6

флаг br

У меня есть сервер с IPv4-адресом и подсетью IPv6/64 (скажем, 2001:db8::/64), оба общедоступные. Сам сервер имеет следующий IPv6-адрес: 2001:db8::1/64. Шлюз fe80::1 (что вызывает проблемы с докером/подманом, потому что он не в той же подсети).

Моя цель - создать контейнер docker/podman (например, WWW-сервер) с собственным общедоступным IPv6 (скажем, 2001: db8:: 2/64). Насколько я понимаю, для такой настройки нужна сеть macvlan. Таким образом, установка будет выглядеть следующим образом:

картина1

Мне удалось частично выполнить эту настройку, используя мостовую сеть и следующую команду:
сеть sudo podman создать --subnet 2001:db8::/64 --ipv6 mynet
Контейнер в этой сети был доступен из Интернета по правильному IP (2001: дб8:: 2), но его публичный IP-адрес (для http, ping и т. д.) был неправильным — он был 2001: дб8:: 1, что совершенно понятно при использовании мостовой сети.

Все усложнилось, когда я попытался использовать macvlan, первой проблемой был шлюз, который нужно установить на fe80::1. докер отказался создавать такую ​​сеть с ошибкой "нет подходящей подсети для шлюза fe80::1". подман успешно создать сеть с помощью следующей команды:
sudo podman network create -d macvlan --subnet 2001:db8::/64 --gateway fe80::1 --ipv6 -o parent=eth0 mynet
К сожалению, контейнер внутри этой сети не имеет возможности подключения ни в каком направлении, хотя для него указаны правильные IP-адрес и шлюз.

Сервер работает на Ubuntu, с включенной IP-маршрутизацией в ядре.

Любые идеи, как эта установка может быть сделана, будут высоко оценены. Спасибо.

user1686 avatar
флаг fr
[..что вызывает проблемы с docker/podman, потому что он не находится в той же подсети] - Он не обязательно должен быть в _той же_ подсети, если он находится в _любой_ из ваших подсетей (и каждый хост находится в fe80 ::/64 подсеть), поэтому docker/podman должен его принять. [..что совершенно понятно при использовании мостовой сети] На самом деле это звучит _не похоже на мостовую сеть вообще_ для меня. Я не знаю, что означает «мост» в мире Docker, но обычные мосты работают иначе; они не предназначены для NAT IP-пакетов.
user1686 avatar
флаг fr
В любом случае: 1) Может ли ваш сетевой провайдер назначить вам префикс маршрутизации, например. /56 направляется на ваш хост? 2) Docker&podman требует /64, или вы могли бы настроить контейнерную сеть с более длинным префиксом (например, /96)? Вместо macvlan Proxy-NDP с использованием ndpresponder мог бы заставить это работать в целом, но я не знаю, с чего начать с контейнерными инструментами.
Рейтинг:0
флаг br

Решено. Кажется, что размер префикса был ключом. Я использовал /64, но когда я перешел на более длинные, такие как /112, все заработало. Кроме того, мне не нужно было использовать macvlan, только простой мост.

Ron Maupin avatar
флаг us
Использование размеров сети, отличных от `/64`, может вызвать проблемы с IPv6. Да, вы должны просто подключиться, потому что все устройства находятся в одной сети.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.