Score:3

อะไรทำให้ 'เครือข่ายไม่สามารถเข้าถึงได้' เมื่อลิงก์ขึ้น เส้นทางอยู่ที่นั่น และเน็ตมาสก์ถูกต้อง

ธง cn

สิ่งนี้สามารถทำให้เกิดอะไรได้บ้าง?

แสดงเส้นทาง $ sudo ip                                                                                                                                
ลิงก์ขอบเขต 192.168.100.0/24 dev usb0                                                                                          
$ sudo ip addr แสดง usb0 
85: usb0: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 สถานะ qdisc pfifo_fast
UNKNOWN กลุ่มเริ่มต้น qlen 1000
ลิงค์/อีเธอร์ 16:3d:0a:3f:3b:e6 brd ff:ff:ff:ff:ff:ff                                                                                                                    
inet 192.168.100.86/24 brd 192.168.100.255 ขอบเขต global usb0                                                                                                             
valid_lft ตลอดไป reserved_lft ตลอดไป                                                                                                                            
ลิงค์ขอบเขต inet6 fe80::143d:aff:fe3f:3be6/64                                                                                                                             
valid_lft ตลอดไป reserved_lft ตลอดไป                                                                                                                        
เส้นทาง $ sudo ip รับ 192.168.100.2
คำตอบ RTNETLINK: ไม่สามารถเข้าถึงเครือข่ายได้

สิ่งนี้อยู่ในอุปกรณ์โฮสต์ของฉันซึ่งใช้ Android บนเคอร์เนล Linux 4.4 ฉันได้เสียบอุปกรณ์ usb ของฉันแล้ว (อุปกรณ์ Mendel linux) อินเทอร์เฟซ usb0 ปรากฏขึ้น ฉันยกมันขึ้นและรัน udhcpc บนมัน แกดเจ็ตกำหนด 192.168.100.86/24 ให้ฉัน และโฆษณาตัวเองผ่าน mDNS เป็น 192.168.100.2 ดังนั้นฉันจึงรู้ว่าลิงก์นี้ใช้งานได้ ฉันปิดอินเทอร์เฟซโฮสต์อื่นทั้งหมดเพื่อให้แน่ใจว่าไม่ได้ขโมยเส้นทาง แต่ถ้าฉันพยายาม ping หรือ ssh ฉันจะได้รับ 'เครือข่ายไม่สามารถเข้าถึงได้'

เมื่อฉันทำตามขั้นตอนเดียวกันกับโฮสต์อื่นที่ไม่ใช่ Android มันใช้งานได้ดี ฉันรู้ว่า android มีกฎ iptables ที่ขี้ขลาด (เช่นสำหรับการติดตามการใช้ข้อมูลต่อ uid) แต่ฉันไม่คิดว่าจะส่งผลกระทบต่อตารางเส้นทาง (และการล้างข้อมูลทั้งหมดดูเหมือนจะไม่ช่วยอะไร) นอกจากนี้ยังมี SElinux แต่ฉันคิดว่านั่นเป็นเพียงระบบไฟล์ ฟีเจอร์ลินุกซ์อื่น ๆ ที่คลุมเครือ (สำหรับฉัน) อื่น ๆ ที่สามารถบล็อกฉันได้ที่นี่?

แก้ไขเพื่อเพิ่มตามคำขอ:

$ กฎไอพี
0: จากการค้นหาทั้งหมดในท้องถิ่น
999: จากการค้นหา fwmark 0xa/0xffff ทั้งหมด 2454
10,000: จาก fwmark ทั้งหมด 0xc0000/0xd0000 ค้นหา 99
10500: จากทั้งหมด iif lo oif ccmni1 uidrange 0-0 ค้นหา 1003
13000: จาก fwmark ทั้งหมด 0x10063/0x1ffff iif lo ค้นหา 97
13000: จาก fwmark ทั้งหมด 0xd006c/0xdffff iif lo ค้นหา 1003
14000: จาก fwmark ทั้งหมด 0xc0000/0xc0000 iif lo oif ccmni1 ค้นหา 1003
15000: จาก fwmark ทั้งหมด 0x0/0x10000 ค้นหา 99
16000: จากการค้นหา fwmark 0x0/0x10000 ทั้งหมด 98
17000: จากการค้นหา fwmark 0x0/0x10000 ทั้งหมด 97
32000: จากทั้งหมดที่ไม่สามารถเข้าถึงได้
ตารางแสดงเส้นทาง $ip ในพื้นที่
ออกอากาศ 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
ท้องถิ่น 127.0.0.0/8 dev จริง ขอบเขตเคอร์เนลโปรโต โฮสต์ src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
ออกอากาศ 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
ออกอากาศ 192.168.100.0 dev usb0 proto kernel ขอบเขตลิงค์ src 192.168.100.86
ท้องถิ่น 192.168.100.86 dev usb0 proto เคอร์เนลขอบเขตโฮสต์ src 192.168.100.86
ออกอากาศ 192.168.100.255 dev usb0 proto kernel ขอบเขตลิงค์ src 192.168.100.86
ตารางแสดงเส้นทาง $ip 2454
เริ่มต้น dev ccmni1 โปรโตสแตติก
ตารางแสดงเส้นทาง $ip 99
ตารางแสดงเส้นทาง $ ip 1003
ตารางแสดงเส้นทาง $ip 97
ตารางแสดงเส้นทาง $ip 99
ตารางแสดงเส้นทาง $ip 98
$
A.B avatar
cl flag
A.B
เพิ่มผลลัพธ์ของ `ip rule` ในคำถามของคุณ และสำหรับทุกรายการยกเว้นรายการที่มีค่ากำหนด 0, 32766 และ 32767 หากอ้างอิงตารางเส้นทาง (การค้นหาคีย์เวิร์ด) ให้เพิ่มตารางเส้นทางนี้ด้วย (`ตารางแสดงเส้นทาง ip xxx`)
Score:2
ธง cl
A.B

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).

โพสต์คำตอบ

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