ฉันกำลังพยายามตั้งค่า Ubuntu 17.10 VM ให้ใช้การเชื่อมต่อ VPN หลายรายการและเพื่อโหลดการเชื่อมต่อที่สมดุลระหว่างสิ่งเหล่านั้น ฉันพยายามทำเช่นนั้นโดยการเรียกใช้ไคลเอนต์ openvpn หลายตัวและพยายามทำเครื่องหมายการเชื่อมต่อด้วย iptables / connmark และใช้โหมดสุ่มเพื่อทำเครื่องหมายการเชื่อมต่อที่แตกต่างด้วยค่าต่าง ๆ จากนั้นจับคู่เหล่านี้กับตารางเส้นทาง VPN ที่แตกต่างกัน อย่างไรก็ตามฉันไม่ประสบความสำเร็จดังนั้นฉันจึงพยายามทำให้สถานการณ์ง่ายขึ้นเพื่อพยายามทำความเข้าใจกับสิ่งที่เกิดขึ้น
ฉันลดสถานการณ์ลงเป็นการเชื่อมต่อ VPN เดียวโดยใช้ตรรกะการเราต์ทั้งหมดในตารางการเราต์เฉพาะและพยายามทำเครื่องหมายแพ็คเก็ตทั้งหมดเพื่อใช้ตารางเส้นทางนั้น
ถ้าฉันบังคับให้ทราฟฟิกทั้งหมดใช้ตารางนั้นมันก็ใช้ได้ หากฉันพยายามทำเครื่องหมายแพ็คเก็ตทั้งหมดแล้วจับคู่เครื่องหมายนั้นเพื่อใช้ตารางมันจะไม่ทำงาน
นี่คือกฎที่ใช้งานได้:
0: จากการค้นหาในท้องถิ่นทั้งหมด 10: จากการค้นหา VPN2 ทั้งหมด 32766: จากการค้นหาหลักทั้งหมด 32767: จากค่าเริ่มต้นของการค้นหาทั้งหมด
และนี่คือกฎที่ใช้งานไม่ได้:
0: จากการค้นหาในท้องถิ่นทั้งหมด 10: จากทุกการค้นหา fwmark 0x14 VPN2 32766: จากการค้นหาหลักทั้งหมด 32767: จากค่าเริ่มต้นของการค้นหาทั้งหมด
และนี่คือตาราง mangle iptables ของฉันที่ควรทำเครื่องหมายทุกอย่าง:
# iptables -nvL -t mangle การเตรียมโซ่ (นโยบายการยอมรับ 6785 แพ็คเก็ต 464K ไบต์) pkts ไบต์เป้าหมาย prot เลือกไม่ใช้ในปลายทางปลายทาง 8013 545K CONNMARK ทั้งหมด - * * 0.0.0.0/0 0.0.0.0/0 CONNMARK เรียกคืน 7981 543K MARK ทั้งหมด - * * 0.0.0.0/0 0.0.0.0/0 เครื่องหมายตั้งค่า 0x14 7958 541K CONNMARK ทั้งหมด - * * 0.0.0.0/0 0.0.0.0/0 CONNMARK บันทึก Chain INPUT (แพ็คเก็ตนโยบายยอมรับ 6773, 463K ไบต์) pkts ไบต์เป้าหมาย prot เลือกไม่ใช้ในปลายทางปลายทาง Chain FORWARD (นโยบายยอมรับ 0 แพ็กเก็ต 0 ไบต์) pkts ไบต์เป้าหมาย prot เลือกไม่ใช้ในปลายทางปลายทาง Chain OUTPUT (แพ็คเก็ตนโยบายยอมรับ 4382, 1132K ไบต์) pkts ไบต์เป้าหมาย prot เลือกไม่ใช้ในปลายทางปลายทาง 4636 1159K CONNMARK ทั้งหมด - * * 0.0.0.0/0 0.0.0.0/0 CONNMARK เรียกคืน 4516 1146K MARK all - * * 0.0.0.0/0 0.0.0.0/0 MARK ตั้งค่า 0x14 4382 1132K CONNMARK ทั้งหมด - * * 0.0.0.0/0 0.0.0.0/0 CONNMARK บันทึก การโพสต์ลูกโซ่ (นโยบายการยอมรับ 4151 แพ็คเก็ต, 1116K ไบต์) pkts ไบต์เป้าหมาย prot เลือกไม่ใช้ในปลายทางปลายทาง
ฉันเข้าใจว่ากฎของฉันนั้นไร้ประโยชน์นิดหน่อยที่นี่ (การคืนค่าก่อนที่จะทำเครื่องหมายต่อไป) แต่ฉันเพิ่งพยายามทำให้เสร็จเพื่อทำเครื่องหมายทุกอย่างเพื่อให้เข้าใจว่าปัญหาอยู่ตรงไหน
อย่างที่ฉันพูดถ้าฉันมีทุกอย่างใช้ตารางเส้นทาง VPN2 มันใช้งานได้ดีและฉันสามารถเห็นการเชื่อมต่อที่มีเครื่องหมาย20
( 0x14
) โดยใช้conntrack -L
แต่ถ้าผมพยายามที่จะมีการกำหนดเส้นทางบนพื้นฐานของเครื่องหมายก็ไม่ได้ทำงานและความพยายามในการเชื่อมต่อไม่ได้มองเห็นได้ในconntrack -L
แม้ว่าฉันดูสถานะSYN_SENT
netstat
ฉันเห็นด้วยว่า IP ต้นทางไม่ใช่อินเทอร์เฟซ VPN tun ของฉันดังนั้นจึงไม่มีการใช้ตาราง
คำแนะนำในการแก้ไขข้อบกพร่องนี้ชื่นชมอย่างมาก
ขอบคุณมาก