ฉันมีสองเครื่องบนเครือข่ายย่อยที่แตกต่างกัน พูดอย่างหนึ่งคือ 1.1.1.1/8 ในขณะที่อีกอันคือ 2.2.2.2/8 ทั้งสองสามารถพูดคุยผ่านเราเตอร์ทั่วไปได้
เครื่อง 2.2.2.2 มีอินเทอร์เฟซภายในบนเครือข่ายท้องถิ่นที่สาม 176.16.1.1/24 แอปพลิเคชันกำลังฟังบนอินเทอร์เฟซนี้ เราเตอร์ไม่รู้จักซับเน็ต 176.16.x.x
ใน 1.1.1.1 ฉันต้องการส่งข้อมูลไปยังอินเทอร์เฟซ 176.16.1.1
ฉันต้องการให้ 1.1.1.1 สร้างแพ็กเก็ต IP ด้วย source=1.1.1.1 และปลายทาง=2.2.2.2 แพ็กเก็ตควรห่อหุ้มอีกแพ็กเก็ตที่มีต้นทาง 1.1.1.1 และปลายทาง 172.16.1.1
ฉันคาดว่าเครื่อง 2.2.2.2 จะถอดรหัสแพ็กเก็ตและส่งแพ็กเก็ต 1.1.1.1->172.16.1.1 ภายในไปยังแอปพลิเคชัน เนื่องจาก 1.1.1.1 เป็น IP ที่กำหนดเส้นทางได้ แอปจึงสามารถตอบสนองด้วยแพ็กเก็ต IP มาตรฐานที่ไม่ห่อหุ้ม
คำแนะนำใด ๆ เกี่ยวกับวิธีการทำเช่นนั้นจะได้รับการชื่นชมอย่างมาก ขอบคุณ!
แก้ไข
ใน 1.1.1.1 ฉันใช้สิ่งต่อไปนี้
อุโมงค์ ip เพิ่มโหมด ipiptun1 ipip ท้องถิ่น 1.1.1.1 ระยะไกล 2.2.2.2
ip link ตั้ง ipiptun1 ขึ้นมา
ip addr เพิ่ม 172.16.0.0/16 dev ipiptun1
ข้างต้นยังสร้างรายการตารางเส้นทาง
172.16.0.0/16 dev ipiptun1 โปรโตเคอร์เนลขอบเขตลิงก์ src 172.16.0.0
และแพ็กเก็ตที่ห่อหุ้มจะมาถึง 2.2.2.2 โดยที่แพ็กเก็ตด้านในคือ 172.16.0.0 -> 172.16.1.1
อย่างไรก็ตาม แม้ว่า 2.2.2.2 จะมีอินเทอร์เฟซ eth0:103 พร้อมที่อยู่ 172.16.1.1 ข้อมูลก็ไม่มาถึงแอปพลิเคชัน ICMP ที่ไม่สามารถเข้าถึงได้จะถูกส่งกลับไปที่ 1.1.1.1 แทน