ฉันกำลังพยายามตั้งค่าการเลือกเส้นทางของทราฟฟิกที่กรองตามที่อยู่ IP ผ่าน OpenVPN บนเราเตอร์ OpenWRT ของฉัน
ฉันมีโปรไฟล์ OpenVPN และทำงานกับตัวเลือก route-nopull เพื่อปิดใช้งานการตั้งค่าเกตเวย์เริ่มต้น
คำสั่งต่อไปนี้หมายถึงการกำหนดเป้าหมายแพ็กเก็ตไปยังชุดของที่อยู่ IP และทำเครื่องหมายด้วยเครื่องหมาย 0x1 ในส่วนการกำหนดเส้นทาง mangle:
nft เพิ่ม set inet fw4 marker { พิมพ์ ipv4_addr \;}
nft เพิ่มองค์ประกอบ inet fw4 marker {40.81.94.43}
nft แทรกกฎ inet fw4 mangle_prerouting ip daddr @marker counter ชุดเครื่องหมายเมตา 0x1
จากนั้นฉันมีการตั้งค่าตารางเส้นทาง ip เพื่อกำหนดเส้นทางแพ็กเก็ตที่ทำเครื่องหมายไว้ผ่านเกตเวย์ VPN:
กฎ ip เพิ่ม fwmark 1 ตาราง VPN
เส้นทาง ip เพิ่มค่าเริ่มต้นผ่าน 10.211.1.118 dev tun_vpn table vpn
การตั้งค่านี้ใช้ไม่ได้ด้วยเหตุผลบางประการ: การรับส่งข้อมูลต้องผ่านเกตเวย์ WAN ที่เป็นค่าเริ่มต้น แม้ว่าตัวนับ nft จะแสดงแพ็กเก็ตที่เข้าสู่กฎการทำเครื่องหมาย
อย่างไรก็ตาม หากฉันตั้งค่าตารางเส้นทางอย่างชัดเจนเพื่อใช้สำหรับที่อยู่ IP มันจะทำงานตามที่คาดไว้:
กฎ ip เพิ่มใน 40.81.94.43 table vpn
นำการรับส่งข้อมูลไปที่ 40.81.94.43 ผ่านเกตเวย์ VPN ตามที่ตั้งใจไว้
ดูเหมือนว่า nft จะไม่ทำเครื่องหมายแพ็คเก็ตด้วยเครื่องหมาย 0x1 หรือ กฎ ip เพิ่ม fwmark 1
ไม่สามารถจับได้ด้วยเหตุผลบางประการ
ฉันพลาดอะไรไป