Điểm:3

Điều gì có thể gây ra 'Mạng không thể truy cập được' khi liên kết được kết nối, tuyến đường ở đó và mặt nạ mạng là chính xác?

lá cờ cn

Điều gì có thể gây ra điều này?

$ sudo ip lộ trình                                                                                                                                
Liên kết phạm vi 192.168.100.0/24 dev usb0                                                                                          
$ sudo ip addr hiển thị usb0 
85: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> trạng thái mtu 1500 qdisc pfifo_fast
Nhóm mặc định UNKNOWN qlen 1000
liên kết/ether 16:3d:0a:3f:3b:e6 brd ff:ff:ff:ff:ff:ff                                                                                                                    
inet 192.168.100.86/24 brd 192.168.100.255 phạm vi toàn cầu usb0                                                                                                             
hợp lệ_lft mãi mãi ưa thích_lft mãi mãi                                                                                                                            
liên kết phạm vi inet6 fe80::143d:aff:fe3f:3be6/64                                                                                                                             
hợp lệ_lft mãi mãi ưa thích_lft mãi mãi                                                                                                                        
$ Sudo ip định tuyến nhận 192.168.100.2
RTNETLINK trả lời: Không thể truy cập mạng

Đây là trên thiết bị chủ của tôi, chạy Android trên nhân Linux 4.4. Tôi đã cắm tiện ích usb của mình (thiết bị Linux Mendel). Giao diện usb0 xuất hiện; Tôi đã nâng nó lên và chạy udhcpc trên đó. Tiện ích đã chỉ định cho tôi 192.168.100.86/24 và tự quảng cáo trên mDNS là 192.168.100.2, vì vậy tôi biết liên kết đang hoạt động. Tôi đã gỡ xuống tất cả các giao diện máy chủ khác để đảm bảo rằng chúng không đánh cắp tuyến đường. Nhưng nếu tôi cố gắng ping hoặc ssh tới nó, tôi nhận được thông báo 'Mạng không thể truy cập được'.

Khi tôi thực hiện các bước tương tự trên một máy chủ khác, không phải Android, nó hoạt động tốt. Tôi biết rằng Android có một số quy tắc iptables thú vị (ví dụ: để theo dõi mức sử dụng dữ liệu theo uid) nhưng tôi không nghĩ rằng điều đó sẽ ảnh hưởng đến bảng định tuyến (và việc xóa tất cả chúng dường như không giúp ích gì). Ngoài ra còn có SElinux, nhưng tôi nghĩ đó chỉ là một thứ hệ thống tập tin. Tính năng linux khó hiểu nào khác (đối với tôi) có thể chặn tôi ở đây?

Chỉnh sửa để thêm, theo yêu cầu:

quy tắc $ ip
0: từ tất cả tra cứu cục bộ
999: từ tất cả tra cứu fwmark 0xa/0xffff 2454
10000: từ tất cả tra cứu fwmark 0xc0000/0xd0000 99
10500: từ tất cả tra cứu iif lo oif ccmni1 uidrange 0-0 1003
13000: từ tất cả fwmark 0x10063/0x1ffff iif lo tra cứu 97
13000: từ tất cả fwmark 0xd006c/0xdffff iif lo tra cứu 1003
14000: từ tất cả fwmark 0xc0000/0xc0000 iif lo oif ccmni1 tra cứu 1003
15000: từ tất cả tra cứu fwmark 0x0/0x10000 99
16000: từ tất cả tra cứu fwmark 0x0/0x10000 98
17000: từ tất cả tra cứu fwmark 0x0/0x10000 97
32000: từ tất cả không thể truy cập
$ ip route hiển thị bảng cục bộ
phát 127.0.0.0 dev lo liên kết phạm vi kernel proto src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel phạm vi máy chủ src 127.0.0.1
local 127.0.0.1 dev lo proto kernel phạm vi máy chủ src 127.0.0.1
phát 127.255.255.255 dev lo liên kết phạm vi kernel proto src 127.0.0.1
phát 192.168.100.0 dev usb0 liên kết phạm vi kernel proto src 192.168.100.86
local 192.168.100.86 dev usb0 proto kernel phạm vi máy chủ src 192.168.100.86
phát 192.168.100.255 liên kết phạm vi dev usb0 proto kernel src 192.168.100.86
$ ip hiển thị bảng 2454
dev mặc định ccmni1 proto tĩnh
$ip route hiện bảng 99
$ ip lộ trình bảng 1003
$ip route hiện bảng 97
$ip route hiện bảng 99
$ip route hiện bảng 98
$
A.B avatar
lá cờ cl
A.B
Thêm kết quả của `ip rule` vào câu hỏi của bạn. Và đối với mọi mục ngoại trừ những mục có tùy chọn 0, 32766 và 32767 nếu chúng tham chiếu bảng định tuyến (tra cứu từ khóa), hãy thêm bảng định tuyến này (`bảng hiển thị lộ trình ip xxx`).
Điểm:2
lá cờ cl
A.B

Android sử dụng rất nhiều quy tắc và bảng định tuyến, có thể là một bảng cho mỗi ứng dụng.

Như có thể thấy, nếu không thêm quy tắc như vậy và có thể là fwmark tương ứng của nó, một gói sẽ gặp quy tắc định tuyến 32000: không thể truy cập.

Sẽ hơi yếu khi thực hiện một số thao tác thủ công trên cơ chế này. Cụ thể, quy tắc định tuyến 10500 cho phép (chỉ) root sử dụng giao diện gửi đi ccmni1, nhưng oif không phải là cho phép một gói được chọn vào giao diện này, mà là cho phép một gói từ một ổ cắm ràng buộc với giao diện này (dùng SO_BINDTODEVICE) được chọn (oif không phải là một tương đương trực tiếp của nếu được sử dụng cho các gói được định tuyến và tôi nếu lo cũng là trường hợp đặc biệt đối với các gói không được định tuyến).

Nhiều quy tắc nhận được dấu tường lửa có thể được đặt bởi phức tạp tương đương iptables quy tắc để chọn quy tắc định tuyến cụ thể cho mỗi ứng dụng (và cả UID cụ thể của nó). Tôi đoán có các API Android cụ thể để đăng ký các quy tắc như vậy khi ứng dụng được cài đặt.

Nếu bạn muốn cho phép root sử dụng bảng định tuyến chính trước, do đó tránh không thể truy cập số phận, trong số nhiều lựa chọn có thể:

quy tắc ip add pref 998 tra cứu uidrange 0-0 chính

Hoặc nếu bạn không quan tâm rằng bất kỳ người dùng nào thì bất kỳ ứng dụng nào cũng có thể sử dụng usb0 đơn giản:

quy tắc ip thêm tra cứu trước 998 chính

Điều này có thể sẽ không tích hợp tốt với hệ thống Android, điều này có thể xáo trộn các quy tắc xung quanh khi các ứng dụng được cài đặt hoặc khởi động và người ta không thể biết những gì còn lại với iptables/nftables (hoặc thậm chí dọc theo SELinux, tc v.v.) về việc chặn truy cập.Ngay cả việc liên kết với ổ cắm cũng có thể bị hạn chế bởi cơ chế bổ sung (xem ví dụ: CONFIG_ANDROID_PARANOID_NETWORK).

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.