Сопровождающий SMCRoute здесь. Это определенно должно сработать. Мы используем именно этот подход, хотя и с реальным аппаратным обеспечением, а не сетевыми пространствами имен, для различных клиентов на работе.
Очень похожая проблема описана в Трекер проблем SMCRoute, единственное отличие от вас в том, что они не используют NAT 1: 1 с сетевой картой (пока).
я на скорую руку прецедент для этого при подготовке к следующему выпуску (v2.5). Я запускаю все тесты локально и в GitHub Actions (облако Azure), используя:
компакт-диск тест/
unshare -mrun ./multi.sh
В тесте используются два отдельных маршрутизатора (R1 и R2) в выделенных сетевых пространствах имен с общим сегментом локальной сети между ними (192.168.0.0/24). За каждым маршрутизатором находится частная локальная сеть (10.0.0.0/24), которая одинакова для обоих маршрутизаторов. Дополнительный (фиктивный) интерфейс eth1 используется для маршрутизации многоадресной рассылки из общей локальной сети (eth0). Правило NETMAP использует цепочку PREROUTING и POSTROUTING. Преобразование частной локальной сети R1 в 192.168.10.0/24 и частной локальной сети R2 в 192.168.20.0/24. Как вы можете видеть ниже, многоадресные маршруты, установленные в ядре, используют сопоставленные 1:1 (глобальные) адреса.
>> Запуск эмиттеров...
R1[2811708]: новые многоадресные данные от 192.168.10.1 до группы 225.1.2.3 на VIF 1.
R1[2811708]: добавить 192.168.10.1 -> 225.1.2.3 из VIF 1
R2[2811709]: Новые многоадресные данные от 192.168.10.1 до группы 225.1.2.3 на VIF 0
R2[2811709]: добавить 192.168.10.1 -> 225.1.2.3 из VIF 0
R2[2811709]: новые многоадресные данные от 192.168.20.1 до группы 225.1.2.3 на VIF 1.
R2[2811709]: добавить 192.168.20.1 -> 225.1.2.3 из VIF 1
R1[2811708]: Новые многоадресные данные от 192.168.20.1 до группы 225.1.2.3 на VIF 0
R1[2811708]: добавить 192.168.20.1 -> 225.1.2.3 из VIF 0
>> Многоадресные маршруты R1 и NAT 1:1...
(192.168.10.1,225.1.2.3) Iif: eth1 Oifs: eth0 Состояние: разрешено
(192.168.20.1,225.1.2.3) Iif: eth0 Oifs: eth1 Состояние: разрешено
Цепочка PREROUTING (политика ACCEPT 5 пакетов, 244 байта)
pkts bytes target prot opt in out source target
0 0 NETMAP все -- любой любой везде 192.168.10.0/24 to:10.0.0.0/24
Цепочка INPUT (политика ACCEPT 1 пакетов, 84 байта)
pkts bytes target prot opt in out source target
Цепочка OUTPUT (политика ACCEPT 4 пакета, 248 байт)
pkts bytes target prot opt in out source target
Цепочка POSTROUTING (политика ACCEPT 2 пакета, 124 байта)
pkts bytes target prot opt in out source target
2 124 NETMAP все -- любой любой 10.0.0.0/24 куда угодно до:192.168.10.0/24
>> Многоадресные маршруты R2 и NAT 1:1...
(192.168.10.1,225.1.2.3) Iif: eth0 Oifs: eth1 Состояние: разрешено
(192.168.20.1,225.1.2.3) Iif: eth1 Oifs: eth0 Состояние: разрешено
Цепочка PREROUTING (политика ACCEPT 4 пакета, 204 байта)
pkts bytes target prot opt in out source target
1 84 NETMAP все -- любой любой любой 192.168.20.0/24 to:10.0.0.0/24
Цепочка INPUT (политика ACCEPT 2 пакета, 168 байт)
pkts bytes target prot opt in out source target
Цепочка OUTPUT (политика ACCEPT 3 пакета, 164 байта)
pkts bytes target prot opt in out source target
Цепочка POSTROUTING (политика ACCEPT 1 пакета, 40 байт)
pkts bytes target prot opt in out source target
2 124 NETMAP все -- любой любой 10.0.0.0/24 куда угодно до:192.168.20.0/24
>> Анализ...
1 0,000000000 0,000000000 192.168.10.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe769, seq=1/256, ttl=2
2 1.000105261 1.000105261 192.168.10.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe769, seq=2/512, ttl=2
3 1.000957268 0.000852007 192.168.20.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe76b, seq=1/256, ttl=2
4 2.024216212 1.023258944 192.168.10.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe769, seq=3/768, ttl=2
5 2.024216229 0.000000017 192.168.20.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe76b, seq=2/512, ttl=2
6 3.048426868 1.024210639 192.168.10.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe769, seq=4/1024, ttl=2
7 3.048426842 -0.000000026 192.168.20.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe76b, seq=3/768, ttl=2
8 4.072270331 1.023843489 192.168.10.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe769, seq=5/1280, ttl=2
9 4.072270458 0.000000127 192.168.20.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe76b, seq=4/1024, ttl=2
10 5.096430449 1.024159991 192.168.20.1 – 225.1.2.3 ICMP 98 Эхо-запрос (ping) id=0xe76b, seq=5/1280, ttl=2
=> 10 для группы ff04::114, ожидается >= 8
Это может быть немного сложно читать, вам, возможно, придется проконсультироваться с тестовым примером для деталей. В любом случае, я получаю стабильные результаты при переводе, за который, кстати, отвечает Linux, а не SMCRoute, так что у вас может быть ошибка ядра или что-то в этом роде. Может ли персональная рабочая станция иметь Linux Mint с ядром 5.11.0, а внутренние серверы для GitHub Actions работают под управлением Ubuntu 20.04 LTS, ядро 5.8.0, ядра обоих дистрибутивов с довольно исправленными исправлениями, но, может быть, это основа для начала?