Score:0

เหตุใดการตั้งค่าการกำหนดเส้นทางนโยบายของฉันจึงไม่ทำงาน

ธง br

ฉันมีเครื่อง EC2 ที่ใช้ Ubuntu 20.04 พร้อม 2 อินเทอร์เฟซอีเธอร์เน็ต ทั้งคู่เชื่อมต่อกับเครือข่ายย่อยเดียวกันและสามารถเข้าถึงได้จากภายนอก ฉันได้สร้างตารางเส้นทางที่กำหนดเอง 2 ตาราง หนึ่งตารางสำหรับแต่ละอินเทอร์เฟซ และทั้งสองมีเพียงรายการเส้นทางสำหรับเครื่องเอง ซับเน็ตทันทีและเกตเวย์เริ่มต้นผ่านอินเทอร์เฟซที่เกี่ยวข้อง ฉันสามารถเพิ่มกฎสำหรับการรับส่งข้อมูลทั้งหมดเพื่อใช้ตารางเส้นทางที่กำหนดเองอย่างใดอย่างหนึ่งและใช้งานได้: เครื่องจะใช้อินเทอร์เฟซที่ระบุและที่อยู่ IP ที่สอดคล้องกันสำหรับการสื่อสารขาออก อย่างไรก็ตาม หากฉันเพิ่มกฎเพื่อใช้ตารางเส้นทางที่กำหนดเองตามการทำเครื่องหมายแพ็คเก็ตที่ฉันใช้ผ่าน iptables ทุกอย่างจะหยุดทำงานและไม่มีการรับส่งข้อมูลออกจากเครื่องของฉัน

นี่คือบิตหลักของการกำหนดค่าที่เกี่ยวข้อง:

เส้นทาง $ sudo ip
10.0.11.0/24 dev ens6 ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.0.11.52
10.0.11.0/24 dev ens5 ลิงก์ขอบเขตเคอร์เนลโปรโต src 10.0.11.201

ตารางแสดงเส้นทาง $ sudo ip if1
ค่าเริ่มต้นผ่าน 10.0.11.1 dev ens5 proto static metric 100
10.0.11.0/24 dev ens5 ลิงก์ขอบเขตโปรโตสแตติก src 10.0.11.52
10.0.11.201 dev ens5 proto static scope link metric ตัวชี้วัด 100

ตารางแสดงเส้นทาง $ sudo ip if2
ค่าเริ่มต้นผ่าน 10.0.11.1 dev ens6 proto static metric 200
10.0.11.0/24 dev ens6 ลิงก์ขอบเขตโปรโตสแตติก src 10.0.11.201
10.0.11.52 dev ens6 โปรโตสแตติกขอบเขตลิงก์เมตริก 200

กฎ $ ip
0: จากการค้นหาทั้งหมดในท้องถิ่น
46: จากการค้นหา fwmark 0x3 ทั้งหมด if1
47: จากทั้งหมด fwmark 0x2 ค้นหา if2
50: จาก 10.0.11.201 ค้นหา if1
100: จาก 10.0.11.52 ค้นหา if2
32766: จากหลักการค้นหาทั้งหมด
32767: จากค่าเริ่มต้นการค้นหาทั้งหมด

$ sudo iptables -S -t พังก์
-P PREROUTING ยอมรับ
-P อินพุตยอมรับ
-P ยอมรับไปข้างหน้า
-P เอาต์พุตยอมรับ
-P หลังยอมรับ
-A OUTPUT -m เจ้าของ --uid เจ้าของ 1002 -j MARK --set-xmark 0x3/0xffffffff
-A OUTPUT -m เจ้าของ --uid-เจ้าของ 1003 -j MARK --set-xmark 0x2/0xffffffff

เป้าหมายของฉันคือกำหนดเส้นทางทราฟฟิกจากผู้ใช้ที่มี uid 1002 ผ่านอินเทอร์เฟซ ens5 (if1) และทราฟฟิกจากผู้ใช้ที่มี uid 1003 ผ่าน ens6 (if2) แต่ฉันทำอะไรผิดที่ไหนสักแห่งและทำให้ฉันแทบบ้า.... ฉันเห็นว่าแพ็กเก็ตที่ทำเครื่องหมายไว้ได้รับการปฏิบัติที่ต่างออกไป ดังนั้นจึงมีบางอย่างเกิดขึ้น ถ้าฉันกำหนดเส้นทางเริ่มต้นให้กับตารางเส้นทางหลัก แล้วทำเครื่องหมายทราฟฟิกสำหรับ uid 1002 ผู้ใช้ทุกคนสามารถทำการเชื่อมต่อขาออกได้ ยกเว้น uid 1002 ดังนั้นฉันจึงรู้ว่าการทำเครื่องหมายนั้นใช้ได้ ฉันรู้ว่าแพ็กเก็ตที่ทำเครื่องหมายไว้จะได้รับการกำหนดเส้นทางที่แตกต่างกัน และฉันรู้ว่าฉันกำหนดเอง ตารางเส้นทางใช้งานได้ แต่บางแห่งในกลุ่มดาวนี้มีข้อผิดพลาดและฉันหาไม่พบ ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก ณ จุดนี้!

--แก้ไข--

ฉันมาถึงสิ่งนี้โดยอิงตามการตั้งค่าของฉันตามแนวทางที่ร่างไว้ที่นี่: พยายามกำหนดเส้นทางคำขอ HTTP ขาออกผ่าน VPN บน Ubuntu Server 12.04 และการปรับแต่งบางอย่างเนื่องจากฉันไม่ต้องการกำหนดเส้นทางการรับส่งข้อมูลตามพอร์ตเฉพาะ แต่มาจาก uid

br flag
ฉันพบวิธีแก้ไขปัญหาของฉันโดยทำอย่างอื่น แทนที่จะทำเครื่องหมายแพ็กเก็ตด้วย iptables แล้วใช้กฎ ip เพื่อเปิดใช้งานตารางเส้นทางต่างๆ ตามที่อธิบายไว้ข้างต้น ฉันทิ้ง iptables ทั้งหมดและใส่ข้อความนี้ลงในกฎ ip: `` sudo ip rule เพิ่ม uidrange 1,000-1,000 ค้นหา if1`` และ `` sudo ip rule เพิ่ม uidrange 1001-1004 ค้นหา if2`` ทำงานเหมือนจับใจ! :) ฉันยังคงสนใจที่จะค้นหาสาเหตุที่ตัวอย่างก่อนหน้าของฉันใช้ไม่ได้...

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา