Android ใช้กฎและตารางการกำหนดเส้นทางจำนวนมาก อาจเป็นหนึ่งรายการต่อหนึ่งแอปพลิเคชัน
อย่างที่คุณเห็น หากไม่มีการเพิ่มกฎดังกล่าวและอาจเป็นไปได้ว่า fwmark สอดคล้องกัน แพ็กเก็ตจะเข้าสู่กฎการกำหนดเส้นทาง 32000: ไม่สามารถเข้าถึงได้.
ค่อนข้างอ่อนแอที่จะทำบางสิ่งด้วยตนเองผ่านกลไกนี้ โดยเฉพาะอย่างยิ่ง กฎการกำหนดเส้นทาง 10500 อนุญาตให้ (เท่านั้น) รูทใช้อินเทอร์เฟซขาออก ccmni1
, แต่ อ๊อฟ
ไม่ได้เกี่ยวกับการอนุญาตให้เลือกแพ็กเก็ตไปยังอินเทอร์เฟซนี้ แต่เกี่ยวกับการอนุญาตแพ็กเก็ตจากซ็อกเก็ต ผูกพันกับอินเทอร์เฟซนี้ (โดยใช้ SO_BINDTODEVICE
) ที่จะเลือก (อ๊อฟ
ไม่เทียบเท่าโดยตรงของ ไอฟ
ซึ่งใช้สำหรับแพ็กเก็ตที่กำหนดเส้นทางและ ไอฟ โล
เป็นกรณีพิเศษสำหรับแพ็กเก็ตที่ไม่ได้กำหนดเส้นทางด้วย)
กฎหลายข้อได้รับเครื่องหมายไฟร์วอลล์ซึ่งอาจกำหนดโดยคอมเพล็กซ์ที่เทียบเท่า iptables กฎเพื่อเลือกกฎการกำหนดเส้นทางเฉพาะต่อแอปพลิเคชัน (และ UID เฉพาะของมันด้วย) ฉันเดาว่ามี Android API เฉพาะเพื่อลงทะเบียนกฎดังกล่าวเมื่อติดตั้งแอปพลิเคชัน
หากคุณต้องการอนุญาตให้รูทใช้ตารางเส้นทางหลักก่อนจึงหลีกเลี่ยง ไม่สามารถเข้าถึงได้ โชคชะตาท่ามกลางตัวเลือกที่เป็นไปได้หลายทาง:
กฎ ip เพิ่ม pref 998 uidrange 0-0 ค้นหาหลัก
หรือหากคุณไม่สนใจว่าผู้ใช้รายใดจึงสามารถใช้แอปพลิเคชันใดก็ได้ usb0 อย่างง่าย:
กฎ ip เพิ่มหลักการค้นหา pref 998
การดำเนินการนี้อาจทำงานร่วมกับระบบ Android ได้ไม่ดีนัก ซึ่งอาจมีการสลับกฎเมื่อติดตั้งหรือเริ่มแอปพลิเคชัน และไม่สามารถบอกได้ว่ามีอะไรเหลืออยู่ iptables/nftable (หรือแม้แต่กับ SELinux ทีซี ฯลฯ) เกี่ยวกับการปิดกั้นการเข้าถึงแม้แต่การเชื่อมต่อกับซ็อกเก็ตก็อาจถูกจำกัดด้วยกลไกเพิ่มเติม (ดูตัวอย่าง: CONFIG_ANDROID_PARANOID_NETWORK
).