Menţinător al SMCRoute Aici. Acest lucru ar trebui să funcționeze cu siguranță. Folosim această abordare exactă, deși cu HW real și nu cu spații de nume de rețea, pentru diverși clienți la locul de muncă.
Există o problemă foarte similară raportată în Urmăritorul problemelor SMCRoute, singura diferență față de tine este că nu folosesc NAT 1:1 cu netmap (încă).
Am adunat un caz de testare pentru aceasta în pregătirea următoarei versiuni (v2.5). Rulez toate testele local și în GitHub Actions (Azure cloud) folosind:
test cd/
unshare -mrun ./multi.sh
Testul are două routere separate (R1 și R2) în spații de nume de rețea dedicate, cu un segment LAN partajat între ele (192.168.0.0/24). În spatele fiecărui router este un LAN privat (10.0.0.0/24), care este același pentru ambele routere. O interfață suplimentară (fictivă) eth1 este utilizată pentru a ruta multicast de la LAN partajat (eth0). Regula NETMAP folosește lanțul PREROUTING și POSTROUTING. Traducerea LAN-ului privat R1 la 192.168.10.0/24 și a LAN-ului privat R2 la 192.168.20.0/24. După cum puteți vedea mai jos, rutele multicast instalate în nucleu folosesc adresele mapate 1:1 (globale).
>> Pornirea emițătorilor...
R1[2811708]: noi date multicast de la 192.168.10.1 la grupul 225.1.2.3 pe VIF 1
R1[2811708]: Adăugați 192.168.10.1 -> 225.1.2.3 din VIF 1
R2[2811709]: noi date multicast de la 192.168.10.1 la grupul 225.1.2.3 pe VIF 0
R2[2811709]: Adăugați 192.168.10.1 -> 225.1.2.3 din VIF 0
R2[2811709]: noi date multicast de la 192.168.20.1 la grupul 225.1.2.3 pe VIF 1
R2[2811709]: Adăugați 192.168.20.1 -> 225.1.2.3 din VIF 1
R1[2811708]: noi date multicast de la 192.168.20.1 la grupul 225.1.2.3 pe VIF 0
R1[2811708]: Adăugați 192.168.20.1 -> 225.1.2.3 din VIF 0
>> Rute multicast R1 și NAT 1:1...
(192.168.10.1,225.1.2.3) Iif: eth1 Oifs: eth0 Stare: rezolvat
(192.168.20.1,225.1.2.3) Iif: eth0 Oifs: eth1 Stare: rezolvat
PRERUUTARE în lanț (politica ACCEPTĂ 5 pachete, 244 de octeți)
pkts bytes target prot opt in out source destination
0 0 NETMAP toate -- orice oriunde oriunde 192.168.10.0/24 la:10.0.0.0/24
INTRARE în lanț (politica ACCEPTĂ 1 pachet, 84 de octeți)
pkts bytes target prot opt in out source destination
IEȘIRE în lanț (politica ACCEPTĂ 4 pachete, 248 octeți)
pkts bytes target prot opt in out source destination
POSTROUTING în lanț (politica ACCEPTĂ 2 pachete, 124 de octeți)
pkts bytes target prot opt in out source destination
2 124 NETMAP toate -- orice orice 10.0.0.0/24 oriunde la:192.168.10.0/24
>> Rute multicast R2 și NAT 1:1...
(192.168.10.1,225.1.2.3) Iif: eth0 Oifs: eth1 Stare: rezolvat
(192.168.20.1,225.1.2.3) Iif: eth1 Oifs: eth0 Stare: rezolvat
PRERUUTARE în lanț (politica ACCEPTĂ 4 pachete, 204 octeți)
pkts bytes target prot opt in out source destination
1 84 NETMAP toate -- orice oriunde oriunde 192.168.20.0/24 la:10.0.0.0/24
INTRARE în lanț (politica ACCEPTĂ 2 pachete, 168 octeți)
pkts bytes target prot opt in out source destination
IEȘIRE în lanț (politica ACCEPTĂ 3 pachete, 164 de octeți)
pkts bytes target prot opt in out source destination
POSTROUTING în lanț (politica ACCEPTĂ 1 pachet, 40 de octeți)
pkts bytes target prot opt in out source destination
2 124 NETMAP toate -- orice orice 10.0.0.0/24 oriunde la:192.168.20.0/24
>> Se analizează...
1 0,000000000 0,000000000 192.168.10.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe769, seq=1/256, ttl=2
2 1.000105261 1.000105261 192.168.10.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe769, seq=2/512, ttl=2
3 1.000957268 0.000852007 192.168.20.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe76b, seq=1/256, ttl=2
4 2.024216212 1.023258944 192.168.10.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe769, seq=3/768, ttl=2
5 2.024216229 0.000000017 192.168.20.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe76b, seq=2/512, ttl=2
6 3.048426868 1.024210639 192.168.10.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe769, seq=4/1024, ttl=2
7 3.048426842 -0.000000026 192.168.20.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe76b, seq=3/768, ttl=2
8 4.072270331 1.023843489 192.168.10.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe769, seq=5/1280, ttl=2
9 4.072270458 0.000000127 192.168.20.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe76b, seq=4/1024, ttl=2
10 5.096430449 1.024159991 192.168.20.1 â 225.1.2.3 ICMP 98 Echo (ping) cerere id=0xe76b, seq=5/1280, ttl=2
=> 10 pentru grupul ff04::114, așteptat >= 8
Poate că este puțin greu de citit, poate fi necesar să consultați cazul de testare pentru detalii. Oricum, obțin rezultate consistente în traducere, care, de altfel, este responsabilitatea Linuxului, nu a SMCRoute, așa că este posibil să aveți o eroare de kernel sau ceva de genul. Stația de lucru personală poate să aibă Linux Mint cu kernel 5.11.0, iar serverele backend pentru GitHub Actions rulează Ubuntu 20.04 LTS, kernel 5.8.0, ambele nuclee de distribuție destul de corectate, dar poate o bază de la care să începeți?