
أداة سطر أوامر لنظام Linux تقوم بتوجيه جميع حركة مرور النظام بشكل شفاف عبر شبكة Tor باستخدام nftables. تتيح تدويراً سريعاً لعناوين IP وتبديلاً سهلاً لإعدادات الوكيل الشاملة لمهام الخصوصية.
الميزات • المتطلبات • التثبيت • الاستخدام • كيف يعمل • التحقق • المساهمة
لا حاجة لإعداد لكل تطبيق على حدة - فقط sudo ttp start وكل اتصال يمر عبر Tor.
[!CAUTION] TTP أداة مصممة للمساعدة في الخصوصية عبر توجيه حركة المرور من خلال Tor. ومع ذلك، لا يمكن لأي أداة ضمان إخفاء الهوية بنسبة 100%. تعتمد سلامتك أيضًا على سلوكك (مثل استخدام متصفح عادي مقابل متصفح Tor، أو تسجيل الدخول إلى الحسابات، إلخ). استخدم TTP دائمًا كجزء من استراتيجية أمنية متعددة الطبقات.
[!WARNING] إذا كنت مُبلّغًا عن مخالفات أو تمارس أنشطة عالية المخاطر، فلا تستخدم TTP. بدلاً من ذلك، استخدم أدوات موثوقة ومُدقّقة رسميًا مثل TailsOS أو متصفح Tor مباشرة. لا يتحمل مؤلفو TTP والمساهمون فيها أي مسؤولية عن سلامتك أو عواقب استخدام هذا البرنامج.
تكتب نصوص الوكيل الشفاف القديمة (TorGhost، Anonsurf) فوق ملفات الإعداد وتبني مجموعات قواعد iptables تفشل مفتوحة: عندما تتعطل، تخرج حركة المرور بنص صريح. تم بناء TTP بالطريقة المعاكسة - فهو يفشل مغلقًا، ولا يحتفظ بشيء على القرص.
transitions) يراقب Tor، وسلاسل nftables، وتراكب DNS عبر
مراقبة inotify مزدوجة تلتقط تبديل هدف الروابط الرمزية. يُصلح مرة واحدة،
ثم يطبّق مفتاح إيقاف طارئ.--bypass-user،
--bypass-group) مع مطابقة UID/GID الأصلية في nftables، أو تشغيل أمر
واحد خارج Tor باستخدام ttp bypass <cmd> عبر شريحة cgroups v2.torrc.ttp-tor.service المتطايرة الخاصة به
على منافذ غير قياسية، تاركًا نسخة Tor الموجودة دون مساس.اختر الطريقة التي تناسب احتياجاتك بشكل أفضل. يُنصح بشدة بالحزم الأصلية لاستقرار النظام والأمان وإلغاء التثبيت النظيف.
يضمن التثبيت عبر الحزم الأصلية أن جميع تبعيات النظام (tor، nftables) وتحسينات مستوى النواة (SELinux) تُدار بواسطة مدير حزم نظام التشغيل لديك.
نزّل ملف .deb أو .rpm للإصدار الذي تريده من أحدث إصدار - الحزم هي أصول الإصدار وليست مُدرجة في المستودع - ثم ثبّتها:
sudo apt install ./transparent-tor-proxy_0.4.9_all.debsudo dnf install ./transparent-tor-proxy-0.4.9-1.noarch.rpmcd packaging && makepkg -siللحصول على تعليمات حول كيفية التحقق من سلامة وأصالة أصول الإصدار، راجع دليل التحقق من الإصدار.
إذا كنت مطورًا أو تريد التثبيت من المستودع:
git clone https://github.com/onyks-os/TransparentTorProxy.git
cd TransparentTorProxy
sudo ./scripts/install.sh
[!TIP] لماذا استخدام
./install.sh؟
على عكس مثبّتات Python القياسية، هذا النص "ذكي". على الأنظمة المبنية على Red Hat، يكتشف ما إذا كان SELinux في وضع Enforcing ويجمّع ديناميكيًا وحدة سياسة مخصصة (منttp_tor_policy.te) للسماح لـ Tor بالارتباط بالمنافذ غير القياسية التي يتطلبها TTP (9041، 9054). لا يمكن لـpipإجراء هذا التحسين على مستوى النواة.
لتثبيت TTP عبر مديري الحزم الخاصين بـ Python (pipx أو pip مع البيئات الافتراضية)، راجع مرجع طرق التثبيت البديلة.
TTP مصمم ليكون بسيطًا وخفيفًا. للحصول على القائمة الكاملة لأوامر CLI والخيارات وأكواد الخروج والمواصفات التقنية، راجع مرجع الواجهات الخارجية.
معظم الأوامر التي تعدّل الشبكة تتطلب صلاحيات الجذر (sudo):
بدء الوكيل:
sudo ttp start
إيقاف الوكيل:
sudo ttp stop
التحقق من حالة الجلسة الحالية:
ttp status
التحقق من توجيه Tor وزمن الاستجابة:
ttp check
طلب عنوان IP خروج جديد (تدوير الدوائر):
sudo ttp refresh
للإعدادات الأكثر تقدمًا وملفات تعريف التحايل، راجع مرجع ملفات تعريف الأمان والاستخدام المتقدمة أو استشر مرجع الواجهات الخارجية.
للتأكد من أن النفق يعمل بشكل صحيح ولا توجد تسريبات:
التحقق من عنوان IP لخروج Tor:
curl -s https://check.torproject.org/api/ip
التحقق من توجيه DNS:
# Should return a valid IP via Tor's DNSPort
dig +short A check.torproject.org
اختبار تسريب DNS (الطرفية):
# This TXT query SHOULD return an EMPTY output
dig +short TXT whoami.ipv4.akahelp.net
ملاحظة: الإخراج الفارغ هو السلوك المتوقع تحت Tor. محلل Tor الشفاف لا يدعم سجلات TXT؛ إذا أعاد هذا الأمر عنوان IP الخاص بمزود خدمة الإنترنت الحقيقي الخاص بك، فلديك تسريب DNS.
التحقق عبر الويب: قم دائمًا بإجراء اختبارات إضافية على dnsleaktest.com وipleak.net.
لإزالة TTP بالكامل من النظام:
sudo ./scripts/uninstall.sh
يقوم TTP بتوجيه جميع حركة الشبكة بشكل شفاف من خلال تنسيق أنظمة نواة Linux القياسية وأدوات النظام وواجهات التحكم في Tor:
flowchart LR
App["Application"] --> Local["Local Network"]
Local --> DNS["systemd-resolved (Intercepted)"]
DNS --> NFT["nftables (inet ttp table)"]
NFT --> Tor["Tor Daemon"]
Tor --> Internet["Internet"]inet ttp بشكل ذري لاعتراض حركة TCP وDNS، وإعادة توجيهها إلى Tor مع منع تسريبات IPv6 وDoT/DoH./etc/resolv.conf بإعداد مدعوم بالذاكرة العشوائية المتطايرة عبر ربط على مستوى النواة لضمان حل استدعاءات DNS بواسطة Tor.للحصول على شرح تفصيلي لتدفقات التنفيذ وخطافات النظام وحدود الأمان والمكونات المعيارية، يرجى الرجوع إلى:
TTP مصمم لاستعادة شبكتك دائمًا، حتى في الحالات الحدية:
[!WARNING]
- متصفح Tor: التطبيقات التي تستخدم وكيل SOCKS5 صريحًا ستُنشئ قفزة Tor مزدوجة. استخدم متصفحًا عاديًا بدلاً من ذلك أثناء تنشيط TTP.
- DNS-over-HTTPS (DoH): قد تستخدم المتصفحات العادية (Firefox، Chrome، Brave، Edge) DoH، متجاوزةً DNS النظام. يخفف TTP من DoH عبر دفاع من 3 طبقات: (1) يتم إعادة توجيه جميع حركة TCP الصادرة (بما في ذلك DoH) إلى Tor TransPort؛ (2) يتم تعيين نطاقات الكناري الشائعة لـ DoH إلى
0.0.0.0فيtorrc؛ (3) يتم حظر محللات IP العامة لـ DoH على منفذ TCP/UDP 443 (حظر HTTP/3 QUIC DoH). لأقصى درجات الأمان، عطّل DoH / "DNS الآمن" في إعدادات متصفحك.- IPv6: مدعوم بالكامل عند توفره. يكتشف TTP ديناميكيًا loopback IPv6 ويوجّه حركة IPv6 عبر Tor. إذا كان المضيف يفتقر إلى دعم loopback IPv6 أو إذا تم تمرير خيار
--no-ipv6، يُسقط TTP جميع حركة IPv6 الصادرة لمنع التسريبات.- تنوع IP الخروج: قد تُظهر اتصالات مختلفة عناوين IP خروج مختلفة بسبب عزل تدفق Tor.
للحصول على تفصيل كامل للمخاطر المتبقية وحدود الثقة المعمارية ونموذج تهديد STRIDE، راجع:
يستخدم TTP Makefile لأتمتة وتوحيد خط أنابيب الاختبار. يضمن ذلك التحقق من كل تغيير مقابل اختبارات الوحدة والتكامل قبل الالتزام به.
[!IMPORTANT] شغّل دائمًا
make verifyقبل دفع الكود. إذا فشل هذا الأمر، فالكود غير جاهز للإنتاج.
ادعاء TTP بعدم التسريب مُقاس، وليس مُدّعى. يقوم
محرك صندوق الرمل الشبكي ببناء
مساحة أسماء شبكة معزولة، ويحمّل مجموعة القواعد المُولّدة الفعلية لـ TTP فيها،
ويولّد حركة المرور التي قد يتكون منها التسريب، ويراقب واجهة veth الحدودية
باستخدام مقتفي Scapy.
كل اختبار احتواء يُشغّل مرتين. assert no leaks يكون صحيحًا أيضًا عندما لا يبدأ
المقتفي، أو عندما يكون اسم الواجهة خاطئًا، أو عندما لا تغادر حركة المرور العملية أبدًا،
لذا يشغّل كل اختبار أولاً نفس المحفز مع مجموعة القواعد المفرّغة ويتطلب رؤية الحزمة.
عندها فقط يؤكد أن مجموعة قواعد TTP توقفها. أداة اختبار لا تستطيع ملاحظة تسريب
تفشل في الاختبار بدلاً من اجتيازه.
المغطى: DNS العادي (UDP وTCP)، TCP العادي، DoT على 853، QUIC DoH على UDP/443، ICMP، UDP التعسفي، IPv6 — بالإضافة إلى الاتجاه الآخر، وهو أن UID متجاوزًا يمكنه لا يزال الوصول إلى الشبكة المحلية. جدار ناري يحظر كل شيء سيجتاز الاختبارات السبعة الأولى ويفشل في الثامن.
# libpcap is required: the sniffer compiles a BPF filter, and Scapy dlopen()s
# the unversioned libpcap.so that only the -devel/-dev package ships.
sudo apt install nftables iproute2 conntrack libpcap0.8 libpcap-dev # Debian/Ubuntu
sudo dnf install nftables iproute2 conntrack libpcap libpcap-devel # Fedora/RHEL
pip install -e ".[nse]"
make test-nse # runs as root; TTP_REQUIRE_NSE=1 so it cannot skip itself
يعمل هذا في CI عند كل دفع (مهمة التحقق من مجموعة قواعد عدم التسريب) وكخطوة
في scripts/verify.sh قبل الإصدار.
بينما تكون اختبارات تكامل Docker سريعة وذرية، فإنها لا تلتقط 100% من تفاصيل النواة/systemd الدقيقة. للتغييرات الحرجة، يُنصح بشدة بالاختبار في آلة QEMU افتراضية حقيقية:
# Start a specific VM (e.g., arch)
./scripts/vm/start.sh arch
# Sync current code to the VM
./scripts/vm/send.sh
# Snapshot management for easy rollbacks
./scripts/vm/snapshot.sh arch save before-risky-test
إذا حدث خطأ ما، شغّل أمر التشخيص:
sudo ttp diagnose
├── pyproject.toml # Package metadata and dependencies
├── README.md
├── CONTRIBUTING.md # Contribution guidelines
├── SECURITY.md # Security policy
├── scripts/ # Installation, verification, and VM management scripts
├── assets/ # Branding and demo assets
├── packaging/ # Packaging configurations (.deb, .rpm, Arch PKGBUILD)
├── ttp/ # Main Python source package
│ └── resources/ # Internal package resources (SELinux policies, etc.)
├── tests/ # Unit, integration, and leak testing suites
└── docs/ # Technical documentation, threat models, and ADRs
المساهمات مرحب بها، والمجالات التي تكون فيها المساعدة أكثر أهمية ضيقة ومحددة:
ابدأ بـ CONTRIBUTING.md، الذي يوثّق القاعدتين التي بُني عليهما قاعدة الكود هذه: لا تُصلح خطأً أبدًا دون إضافة الفحص الذي كان سيلتقطه، والاختبار الذي يؤكد غيابًا يجب أن يثبت أولاً أنه قادر على اكتشاف وجود.
يُصان هذا المشروع في وقت الفراغ. نجمة تساعد الآخرين في العثور عليه؛ الرعاية تساعد في استمراره.
MIT. راجع LICENSE لمزيد من المعلومات.
| الفشل المغلق بالتصميم | جدول nftables معزول باسم inet ttp مع رفض شامل وpolicy drop على إعادة التوجيه. عند حدوث انهيار، أو تشغيل مراقب، أو خروج غير نظيف، تكون حركة المرور إما موجّهة عبر Tor أو محظورة - ولا تُطلق أبدًا. |
| لا شيء يبقى | حالة الجلسة، وtorrc، وملف القفل، والسجلات توجد فقط في tmpfs (/run/ttp/، /run/tor/ttp/). إعادة التشغيل لا تترك أي بقايا ولا قفلًا قديمًا. |
| لا إعداد لكل تطبيق | يتم اعتراض TCP وDNS على مستوى الشبكة. لا إعدادات SOCKS5، ولا متغيرات بيئة للوكيل، ولا حاجة لدعم التطبيقات. |
| DNS دون إعادة كتابة نظامك | تراكب mount --bind على /etc/resolv.conf بدلاً من التعديل، بالإضافة إلى drop-in متطاير يُبطل systemd-resolved، مدعومًا بإسقاط على مستوى النواة لأي حركة مرور لمحلل غير loopback. |
| ادعاء التسريب مُقاس | يتم اختبار كل قاعدة احتواء في مساحة أسماء شبكة معزولة مقابل مجموعة القواعد المُولّدة الفعلية، ويثبت كل اختبار أولاً أنه قادر على رؤية التسريب قبل أن يؤكد عدم وجوده. راجع التحقق. |
| السيناريو | ما يحدث |
|---|
ttp stop | تنظيف بدون تسريب: يطبّق قفل التفكيك، ويُغلق Tor بلطف، وينفّذ إبادة المقابس النشطة، وينتظر 1.5 ثانية، ويفرّغ تتبع الاتصالات، ويستعيد الجدار الناري وDNS (عبر تفريغ الجدول وحذفه)، ويحذف ملف القفل |
Ctrl+C / kill | يلتقط معالج الإشارات SIGINT/SIGTERM ويشغّل التنظيف العادي قبل الخروج |
kill -9 / انقطاع الكهرباء | يكتشف ttp start التالي ملف القفل اليتيم، ويمسح أي مكدسات ربط قديمة، ويستعيد تلقائيًا |
| الطوارئ اليدوية | شغّل sudo ./scripts/restore-network.sh لتفريغ جميع قواعد nftables، وإعادة تعيين DNS، وحذف ملف القفل |
| الأمر | الهدف |
|---|
make test | يشغّل اختبارات الوحدة السريعة محليًا (لا حاجة للجذر، مُحاكاة بالكامل). |
make integration-debian | يشغّل اختبارات النظام الكاملة داخل حاوية Docker ذات صلاحيات (Debian). |
make integration-all | يشغّل اختبارات التكامل لجميع التوزيعات المدعومة (Debian، Fedora، Arch). |
make verify | يشغّل اختبارات الوحدة + جميع اختبارات التكامل. |
make build | يُولّد حزم .deb و.rpm الأصلية. |
make clean | يزيل جميع مخرجات البناء والذاكرات المؤقتة والملفات المؤقتة. |
| الأخطاء وطلبات الميزات | GitHub Issues |
| الثغرات الأمنية | SECURITY.md - يرجى عدم فتح مشكلة عامة |
| دعم الإصدارات ونهاية العمر | SUPPORT.md |
| الإصدارات والحزم | GitHub Releases · PyPI |