RKNHardering Help

مسیرهای قدیمی و غیراستاندارد IPv4 روی رابط VPN

شناسه: VPN_POLICY_RULES دسته: مسیرها و پشتهٔ شبکه وضعیت در RKNHardering 2.10.0: بررسی فعال نقش در حکم نهایی: بالا

این صفحه پیاده‌سازی واقعی RKNHardering 2.10.0 را توضیح می‌دهد. در آن مشخص شده است چه اقدام‌هایی بدون روت ممکن‌اند، چه چیزهایی به روت نیاز دارند و کدام راهکار فقط یک سیگنال را کاهش می‌دهد، بی‌آن‌که VPN را به‌طور کامل پنهان کند.

چه چیزی بررسی می‌شود و چرا

هنگام خواندن /proc/net/route، هر ردیف روی رابط ثابت VPN که مقصدش نه 0 و نه FFFFFFFF باشد، vpn_policy_rules|iface=... dest=<hex> تولید می‌کند. نوع قدیمی اطمینان بالا دارد.

شرط دقیق فعال‌شدن

یک مسیر IPv4 غیرپیش‌فرض و غیر FFFFFFFF از طریق tun0، tun1، utun0، ppp0، wg0 یا wg1 وجود داشته باشد.

معنای نتیجه

سیگنال مسیرهای split یا policy از میان تونل را نشان می‌دهد، اما نام تاریخی آن از پیاده‌سازی گسترده‌تر است: این‌ها ردیف‌های عادی route هستند، نه ورودی‌های ip rule.

تأثیر این خط بر گزارش: این خط detected=true را تنظیم می‌کند و به‌عنوان یک نشانهٔ محلی با اطمینان بالا در نظر گرفته می‌شود.

محدودیت‌ها و مثبت‌های کاذب احتمالی

فقط procfs مربوط به IPv4 و نام‌های ثابت پوشش داده می‌شوند. قواعد واقعی policy در netlink جداگانه بررسی می‌شوند.

این خط باید همراه با سیگنال‌های مجاور ارزیابی شود. پاک‌بودن نتیجهٔ یک API به‌تنهایی Java Binder، libc، netlink خام/فراخوانی مستقیم سامانه، procfs/sysfs، سوکت‌های محلی و نشانه‌های سمت سرور را هم‌زمان پوشش نمی‌دهد.

توصیه‌ها برای این بردار

بدون روت

بدون روت، طراحی مسیریابی را اصلاح کنید، نه نحوهٔ نمایش جدول را. برای تلفنی پاک از دروازهٔ خارجی استفاده کنید. اگر VPN در VpnService باقی می‌ماند، split routing را طوری تنظیم کنید که برنامهٔ تحت آزمون واقعاً از شبکهٔ فیزیکی مورد انتظار خارج شود؛ اما این را پنهان‌سازی مسیرهای محلی ندانید، زیرا رابط و قواعد policy ممکن است قابل مشاهده بمانند. روی دستگاه در حال استفاده مسیرها را با ip route حذف نکنید؛ Android و سرویس VPN آن‌ها را دوباره می‌سازند و ممکن است اتصال قطع شود.

با روت

روی دستگاه روت‌شده، پس‌زمینه باید منبع داده را فیلتر کند، نه فقط libc را. در VPNHide بالادستی، پس‌زمینه‌های هسته برای ioctl، netlink و برخی بردارهای route/procfs طراحی شده‌اند و Zygisk یک گزینهٔ مشروط باقی می‌ماند. kmod و KPM را هم‌زمان نصب نکنید، زیرا ممکن است همان توابع هسته را رهگیری کنند. VPNHide Next پوشش گسترده‌تری برای PMTU/MSS/qdisc/BPF ادعا می‌کند، اما این ادعای بیرونی باید روی همان هسته بازتولید شود.

روش راستی‌آزمایی نتیجه

adb shell cat /proc/net/route 2>&1
adb shell ip -4 route show table all

مقصد در procfs به‌صورت hexadecimal با ترتیب little-endian نمایش داده می‌شود.

پس از هر تغییر، RKNHardering و سرویس‌گیرندهٔ VPN را به‌اجبار متوقف کنید، هر دو را دوباره اجرا کنید و اسکن کامل را تکرار کنید. Zygisk، Xposed و ماژول‌های هسته معمولاً به راه‌اندازی مجدد دستگاه نیاز دارند. فقط همین خط را مقایسه نکنید؛ سیگنال‌های مجاور را نیز بررسی کنید، زیرا یک هوک ناقص اغلب میان APIها ناسازگاری ایجاد می‌کند.

مجوزهای لازم و خطرها

خود پروب با مجوزهای معمول برنامه اجرا می‌شود و روت درخواست نمی‌کند. دستورهای ADB زیر فقط برای جهت‌یابی تشخیصی‌اند: adb shell با UID دیگری اجرا می‌شود و ممکن است نسبت به فرایند برنامه اطلاعات بیشتر یا کمتری ببیند. آزمون تعیین‌کننده، اجرای دوبارهٔ بررسی درون برنامه پس از توقف اجباری است.

خطرها

حذف split route ممکن است ترافیک شبکهٔ خصوصی را به مسیر اشتباه بفرستد یا دسترسی را کاملاً قطع کند.

بازگردانی

آخرین تغییر را برگردانید: ماژول یا قاعدهٔ افزوده‌شده را با مدیر معمول خودش غیرفعال کنید، دستگاه را دوباره راه‌اندازی کنید و اسکن خط مبنا را تکرار کنید. روی وضعیتی ناشناخته هوک دیگری لایه نکنید.

سطح شواهد

بالا. با شروط مقصد و نام‌های ثابت VPN راستی‌آزمایی شده است؛ اطمینان بالای قدیمی.

وضعیت یک راهکار شخص ثالث خودبه‌خود به این دستگاه تعمیم پیدا نمی‌کند. ادعای سازندهٔ ماژول فقط فرضیهٔ آغازین است؛ تأیید واقعی به نتیجه‌ای تکرارپذیر از RKNHardering روی همان نسخهٔ Android، میان‌افزار و هسته نیاز دارد.

منابع و تاریخ آخرین راستی‌آزمایی

سیگنال‌های مرتبط: vpn-policy-rules-netlink, route-vpn-interface, route-table.

بازگشت به مرجع بررسی‌های بومی