Постановка задачи
В приведенной ниже конфигурации создается пара veth между пространством имен default/main net и сетью с именем netns ns1
.
Конфиг также создает вторую пару veth: veth2 находится в netns ns1
а veth3 находится в netns нс2
, это присоединяется ns1
к нс2
создание цепочки: по умолчанию netns-veth0 <-> veth1-ns1-veth2 <-> veth3-ns2
.
sudo ip link add veth0 type veth имя однорангового узла veth1
sudo ip -6 addr add CCFF::0/127 peer CCFF::1/127 dev veth0
sudo ip link setup dev veth0
sudo ip netns добавить ns1
sudo ip link set veth1 netns ns1
sudo ip -n ns1 -6 addr add CCFF::1/127 peer CCFF::0/127 dev veth1
sudo ip -n ns1 настройка ссылки dev veth1
sudo ip -n ns1 -6 маршрут добавить по умолчанию через CCFF::0
sudo ip link добавить тип veth2 имя узла veth veth3
sudo ip link set veth2 netns ns1
sudo ip -n ns1 -6 addr add CCFF::2/127 peer CCFF::3/127 dev veth2
sudo ip -n ns1 настройка ссылки dev veth2
sudo ip -n ns1 -6 добавить маршрут CCFF::/64 через CCFF::3
sudo ip netns добавить ns2
sudo ip link set veth3 netns ns2
sudo ip -n ns2 -6 addr add CCFF::3/127 peer CCFF::2/127 dev veth3
sudo ip -n ns2 настройка ссылки dev veth3
sudo ip -n ns2 -6 маршрут добавить по умолчанию через CCFF::2
sudo ip -6 r добавить CCFF::/64 через CCFF::1
Из netns по умолчанию я могу пропинговать veth0, который находится в том же netns.
Из сети по умолчанию я могу пропинговать veth1 и veth2, которые находятся в ns1
.
Из дефолтного netns не могу пиннуть veth3 который в нс2
.
Если я продолжу изменение следующим образом, добавив veth4 в нс2
и veth5 в нс3
У меня та же проблема. Я могу пинговать с любого интерфейса в ns1
к любому интерфейсу в нс2
, но не может связаться ни с одним интерфейсом в нс3
.
sudo ip link add veth4 type veth имя однорангового узла veth5
sudo ip link set veth4 netns ns2
sudo ip netns exec ns2 ip -6 addr add CCFF::4/127 peer CCFF::5/127 dev veth4
sudo ip netns exec ns2 настройка IP-ссылки dev veth4
sudo ip netns exec ns2 ip -6 маршрут добавить CCFF::/64 через CCFF::5
sudo ip netns добавить ns3
sudo ip link set veth5 netns ns3
sudo ip netns exec ns3 ip -6 addr add CCFF::5/127 peer CCFF::4/127 dev veth5
sudo ip netns exec ns3 настройка IP-ссылки dev veth5
sudo ip netns exec ns3 ip -6 маршрут добавить по умолчанию через CCFF::4
Кажется, я могу только пинговать интерфейс в «соседнем» / «подключенном» netns только к тому, с которого я пингую. Я не могу пропинговать цепочку сетевых пространств имен. Вся маршрутизация действительна; по умолчанию netns может пинговать любой интерфейс в ns1
но ничего более, интерфейсы в ns1
может пинговать любой интерфейс в netns по умолчанию или нс2
но ничего в нс3
, и нс3
может пинговать что угодно в нс2
но ничего сверх в ns1
или netns по умолчанию.
Является ли это ограничением сетевых пространств имен?
Исправление проблем
Переадресация IPv6 включена, ip6tables просто настроен на «разрешить все», я не уверен, что еще проверить.
$ip -6 р
ccff::1 dev veth0 протоядерная метрика 256 pref средний
ccff::/127 dev veth0 метрика протоядра 256 pref средний
ccff::/64 через ccff::1 dev veth0 metric 1024 pref средний
fe80::/64 dev veth0 протоядерная метрика 256 pref средний
$sudo ip -n ns1 -6 р
ccff:: dev veth1 proto kernel metric 256 pref medium
ccff::/127 dev veth1 протоядерная метрика 256 pref средний
ccff::3 dev veth2 proto kernel metric 256 pref средний
ccff::2/127 dev veth2 proto kernel metric 256 pref средний
ccff::/64 через ccff::3 dev veth2 metric 1024 pref средний
fe80::/64 dev veth1 proto kernel metric 256 pref средний
fe80::/64 dev veth2 протоядерная метрика 256 pref средний
по умолчанию через ccff::dev veth1 metric 1024 pref medium
$sudo ip -n ns2 -6 р
ccff::2 dev veth3 proto kernel metric 256 pref средний
ccff::2/127 dev veth3 proto kernel metric 256 pref средний
ccff::5 dev veth4 proto kernel metric 256 pref средний
ccff::4/127 dev veth4 proto kernel metric 256 pref средний
ccff::/64 через ccff::5 dev veth4 metric 1024 pref средний
fe80::/64 dev veth3 proto kernel metric 256 pref средний
fe80::/64 dev veth4 proto kernel metric 256 pref средний
по умолчанию через ccff::2 dev veth3 metric 1024 pref medium
$sudo ip -n ns3 -6 р
ccff::4/127 dev veth5 proto kernel metric 256 linkdown pref medium
по умолчанию через ccff::4 dev veth5 metric 1024 linkdown pref medium
$cat /proc/sys/net/ipv6/conf/all/форвардинг
1
$cat /proc/sys/net/ipv6/conf/по умолчанию/пересылка
1
$ sudo ip6tables-сохранить
# Сгенерировано ip6tables-save v1.8.4 в среду, 17 ноября, 22:02:48 2021
*фильтр
:ВВОД ПРИНЯТЬ [76565:173401906]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТ [50440:6536664]
СОВЕРШИТЬ
# Завершено в среду, 17 ноября, 22:02:48 2021 г.
$lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Ubuntu
Описание: Ubuntu 20.04.3 LTS
Релиз: 20.04
Кодовое название: фокальный
$унаме -а
Linux l13-ubuntu 5.11.0-40-generic #44~20.04.2-Ubuntu SMP Вт, 26 октября, 18:07:44 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux