ฉันได้ตั้งค่า ARP Proxy บน VPS ของฉันแล้ว ด้วยการตั้งค่านี้ ฉันสามารถกำหนดเส้นทางทราฟฟิกขาเข้าบน IP ที่สองของ VPS ผ่าน WireGuard สิ่งนี้ควรอนุญาตให้ Raspberry Pi ที่บ้านใช้ IP สาธารณะที่สอง
ฉันได้ทำงานประเภทนี้ Ping ที่เข้ามาจะถูกส่งต่อผ่าน WireGuard Tunnel ไปยัง Pi แต่ Pi ก็พยายามตอบ Ping ผ่าน eth0 มีวิธีแก้ไขหรือไม่ ดังนั้นมันจึงส่งแพ็กเก็ตตอบกลับผ่าน WireGuard Interface ด้วย
เพื่อแสดงปัญหานี้ (ทั้งบน Raspberry Pi)
อินเตอร์เฟส WireGuard:
# tcpdump -i wg_pub
tcpdump: เอาต์พุต verbose ถูกระงับ ใช้ -v หรือ -vv สำหรับการถอดรหัสโปรโตคอลแบบเต็ม
กำลังฟังบน wg_pub, RAW ประเภทลิงก์ (Raw IP), ขนาดการจับภาพ 262144 ไบต์
01:35:02.796522 IP <Public ip of ping PC> > <VPS IP ที่สอง>: ICMP echo request, id 14, seq 1, length 64
01:35:03.795359 IP <Public ip of ping PC> > <VPS IP ที่สอง>: ICMP echo request, id 14, seq 2, length 64
01:35:04.810613 IP <Public ip of ping PC> > <VPS IP ที่สอง>: ICMP echo request, id 14, seq 3, length 64
อินเทอร์เฟซอีเทอร์เน็ต:
# tcpdump -i eth0 icmp
tcpdump: เอาต์พุต verbose ถูกระงับ ใช้ -v หรือ -vv สำหรับการถอดรหัสโปรโตคอลแบบเต็ม
กำลังฟัง eth0, ประเภทลิงก์ EN10MB (Ethernet), ขนาดการดักจับ 262144 ไบต์
01:37:11.477589 IP <Second VPS IP> > <Public ip of ping PC>: ICMP echo reply, id 14, seq 128, length 64
01:37:12.491045 IP <VPS IP ที่สอง> > <IP สาธารณะของ ping PC>: ICMP echo reply, id 14, seq 129, length 64
01:37:13.505965 IP <Second VPS IP> > <Public ip of ping PC>: ICMP echo reply, id 14, seq 130, length 64
ฉันต้องการป้องกันไม่ให้ใช้ Subnet ส่วนตัวบน WireGuard Tunnel
วิธีหนึ่งที่ฉันได้ผลคือเพิ่มเส้นทางแบบคงที่
เส้นทาง ip เพิ่ม <First VPS IP>/32 dev eth0
แล้วเขียนทับเส้นทางเริ่มต้น
เส้นทาง ip เพิ่ม 0.0.0.0/0 dev wg_pub
แต่มีข้อเสียตรงที่การกำหนดเส้นทาง Internet Traffic ทั้งหมดผ่าน VPS นั่นเอง