ผู้ดูแล SMCRoute ที่นี่. สิ่งนี้ควรใช้งานได้อย่างแน่นอน เราใช้วิธีที่ถูกต้องนี้ แม้ว่าจะใช้ HW จริงและไม่ใช่เนมสเปซเครือข่าย สำหรับลูกค้าต่างๆ ในที่ทำงาน
มีรายงานปัญหาที่คล้ายกันมากใน ตัวติดตามปัญหา SMCRouteสิ่งเดียวที่แตกต่างจากคุณคือพวกเขาไม่ได้ใช้ 1:1 NAT กับ netmap (ยัง)
ฉันได้ตีขึ้น กรณีทดสอบ เพื่อเตรียมพร้อมสำหรับรุ่นต่อไป (v2.5) ฉันทำการทดสอบทั้งหมดภายในเครื่องและใน GitHub Actions (Azure cloud) โดยใช้:
ทดสอบซีดี/
เลิกแชร์ -mrun ./multi.sh
การทดสอบมีเราเตอร์สองตัวแยกกัน (R1 และ R2) ในเนมสเปซเครือข่ายเฉพาะ โดยมีส่วน LAN ที่ใช้ร่วมกันระหว่างกัน (192.168.0.0/24) ด้านหลังเราเตอร์แต่ละตัวคือ LAN ส่วนตัว (10.0.0.0/24) ซึ่งเหมือนกันสำหรับเราเตอร์ทั้งสอง อินเทอร์เฟซพิเศษ (จำลอง) eth1 ใช้เพื่อกำหนดเส้นทางมัลติคาสต์จากไปยัง LAN ที่ใช้ร่วมกัน (eth0) กฎ NETMAP ใช้โซ่ PREROUTING และ POSTROUTING แปล R1 private LAN เป็น 192.168.10.0/24 และ R2 private LAN เป็น 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 และ 1:1 NAT ...
(192.168.10.1,225.1.2.3) Iif: eth1 Oifs: eth0 State: แก้ไขแล้ว
(192.168.20.1,225.1.2.3) Iif: eth0 Oifs: eth1 State: แก้ไขแล้ว
CHAIN PREROUTING (นโยบายยอมรับ 5 แพ็คเก็ต, 244 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
0 0 NETMAP ทั้งหมด -- ทุกที่ 192.168.10.0/24 ถึง:10.0.0.0/24
Chain INPUT (นโยบายยอมรับ 1 แพ็กเก็ต 84 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
Chain OUTPUT (นโยบายยอมรับ 4 แพ็กเก็ต 248 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
Chain POSTROUTING (นโยบายยอมรับ 2 แพ็กเก็ต 124 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
2 124 NETMAP ทั้งหมด -- ใดๆ 10.0.0.0/24 ใดก็ได้ไปที่: 192.168.10.0/24
>> เส้นทางมัลติคาสต์ R2 และ 1:1 NAT ...
(192.168.10.1,225.1.2.3) Iif: eth0 Oifs: eth1 State: แก้ไขแล้ว
(192.168.20.1,225.1.2.3) Iif: eth1 Oifs: eth0 State: แก้ไขแล้ว
CHAIN PREROUTING (นโยบายยอมรับ 4 แพ็คเก็ต, 204 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
1 84 NETMAP ทั้งหมด -- อะไรก็ได้ 192.168.20.0/24 ถึง:10.0.0.0/24
Chain INPUT (นโยบายยอมรับ 2 แพ็คเก็ต, 168 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
Chain OUTPUT (นโยบายยอมรับ 3 แพ็กเก็ต 164 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
Chain POSTROUTING (นโยบายยอมรับ 1 แพ็กเก็ต 40 ไบต์)
pkts bytes target prot เลือกใช้ปลายทางต้นทาง
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 คำขอ Echo (ping) id=0xe769, seq=1/256, ttl=2
2 1.000105261 1.000105261 192.168.10.1 â 225.1.2.3 ICMP 98 คำขอ Echo (ping) id=0xe769, seq=2/512, ttl=2
3 1.000957268 0.000852007 192.168.20.1 â 225.1.2.3 ICMP 98 คำขอ Echo (ping) id=0xe76b, seq=1/256, ttl=2
4 2.024216212 1.023258944 192.168.10.1 â 225.1.2.3 ICMP 98 คำขอ Echo (ping) id=0xe769, seq=3/768, ttl=2
5 2.024216229 0.000000017 192.168.20.1 â 225.1.2.3 ICMP 98 คำขอ Echo (ping) id=0xe76b, seq=2/512, ttl=2
6 3.048426868 1.024210639 192.168.10.1 â 225.1.2.3 ICMP 98 คำขอ Echo (ping) id=0xe769, seq=4/1024, ttl=2
7 3.048426842 -0.000000026 192.168.20.1 â 225.1.2.3 ICMP 98 คำขอ Echo (ping) id=0xe76b, seq=3/768, ttl=2
8 4.072270331 1.023843489 192.168.10.1 â 225.1.2.3 ICMP 98 คำขอ Echo (ping) id=0xe769, seq=5/1280, ttl=2
9 4.072270458 0.000000127 192.168.20.1 â 225.1.2.3 ICMP 98 คำขอ Echo (ping) id=0xe76b, seq=4/1024, ttl=2
10 5.096430449 1.024159991 192.168.20.1 â 225.1.2.3 ICMP 98 คำขอ Echo (ping) id=0xe76b, seq=5/1280, ttl=2
=> 10 สำหรับกลุ่ม ff04::114 คาดว่า >= 8
อาจอ่านยากสักหน่อย คุณอาจต้องศึกษากรณีทดสอบเพื่อดูรายละเอียด อย่างไรก็ตาม ฉันได้รับผลลัพธ์ที่สอดคล้องกันในการแปล ซึ่ง btw เป็นความรับผิดชอบของ Linux ไม่ใช่ SMCRoute ดังนั้นคุณอาจมีข้อบกพร่องของเคอร์เนลหรือบางอย่าง เวิร์กสเตชันส่วนบุคคลอาจมี Linux Mint พร้อมเคอร์เนล 5.11.0 และเซิร์ฟเวอร์แบ็กเอนด์สำหรับ GitHub Actions เรียกใช้ Ubuntu 20.04 LTS, เคอร์เนล 5.8.0, เคอร์เนล distro ที่ได้รับการแพตช์ค่อนข้างดี แต่อาจเป็นพื้นฐานในการเริ่มต้น