
gotatun v0.9.2
تنفيذ WireGuard® في مساحة المستخدم بلغة Rust
GotaTun
تطبيق WireGuard® في مساحة المستخدم، وهو تفرّع من BoringTun.
الترخيص
جميع الشيفرة المصدرية في هذا المستودع تخضع لشروط رخصة Mozilla العمومية، الإصدار 2.0 ما لم يُذكر خلاف ذلك. يمكن العثور على نسخة من هذه الرخصة في الملف "LICENSE" أو على https://www.mozilla.org/MPL/2.0/.
المساهمات المقدَّمة قبل 5 مارس 2026 مرخَّصة بموجب رخصة BSD ثلاثية البنود القديمة. يمكن العثور على نسخة من هذه الرخصة في الملف "LICENSE-CLOUDFLARE".
المساهمة
ما لم تنص صراحةً على خلاف ذلك، فإن أي مساهمة تقدّمها عمدًا لإدراجها في العمل، كما هو معرَّف في رخصة MPL-2.0، ستكون مرخَّصة كما هو مذكور أعلاه، دون أي شروط أو أحكام إضافية.
البناء
- المكتبة فقط:
cargo build --lib --no-default-features --release [--target $(TARGET_TRIPLE)] - الملف التنفيذي:
cargo build --bin gotatun --release [--target $(TARGET_TRIPLE)]
التثبيت
افتراضيًا يُوضع الملف التنفيذي في مجلد ./target/release. يمكنك نسخه إلى الموقع المطلوب يدويًا، أو تثبيته باستخدام cargo install --bin gotatun --path ..
Nix
لبناء الملف التنفيذي، ما عليك سوى تشغيل nix build .#gotatun. سيكون الملف الثنائي النهائي في result/bin/gotatun.
التشغيل
وفقًا للمواصفات، لبدء نفق استخدم:
gotatun [-f/--foreground] INTERFACE-NAME
يمكن بعد ذلك تهيئة النفق باستخدام wg، كنفق WireGuard عادي، أو أي أداة أخرى.
من الممكن أيضًا استخدامه مع wg-quick عن طريق تعيين متغير البيئة WG_QUICK_USERSPACE_IMPLEMENTATION إلى gotatun. على سبيل المثال:
sudo WG_QUICK_USERSPACE_IMPLEMENTATION=gotatun WG_SUDO=1 wg-quick up CONFIGURATION
يُرجى ملاحظة أن wg-quick سيتجاهل WG_QUICK_USERSPACE_IMPLEMENTATION على Linux إذا كانت وحدة نواة wireguard مثبَّتة لديك.
الاختبار
يتطلب اختبار هذا المشروع بعض المتطلبات:
sudo: مطلوب لإنشاء الأنفاق. عند تشغيلcargo testستُطلب منك كلمة المرور.- Docker: يمكنك تثبيته هنا. إذا كنت تستخدم Ubuntu/Debian يمكنك تشغيل
apt-get install docker.io.
المنصات المدعومة
| Target triple | Binary | Library |
|---|---|---|
| x86_64-unknown-linux-gnu | ✓ | ✓ |
| aarch64-unknown-linux-gnu | ✓ | ✓ |
| riscv64gc-unknown-linux-gnu | ✓ | ✓ |
| aarch64-apple-darwin | ✓ | ✓ |
| x86_64-pc-windows-msvc | ✓ | ✓ |
| x86_64-pc-windows-gnullvm | ✓ | ✓ |
| aarch64-pc-windows-msvc | ✓ | ✓ |
| aarch64-pc-windows-gnullvm | ✓ | ✓ |
| x86_64-linux-android | ✓ | |
| aarch64-linux-android | ✓ | |
| aarch64-apple-ios | ✓ |
قد تعمل أهداف أخرى، لكننا نختبر هذه فقط
Linux
معماريتا x86-64 وaarch64 مدعومتان. يجب أن يكون السلوك مطابقًا لسلوك wireguard-go، مع الفرق التالي:
سيُسقط gotatun الامتيازات عند بدء التشغيل. عند إسقاط الامتيازات لا يكون من الممكن تعيين fwmark. إذا كان fwmark مطلوبًا، كما هو الحال عند استخدام wg-quick، فشغّله مع --disable-drop-privileges أو عيّن متغير البيئة WG_SUDO=1.
ستحتاج إلى منح الملف التنفيذي قدرة CAP_NET_ADMIN باستخدام: sudo setcap cap_net_admin+epi gotatun. لا حاجة إلى sudo.
macOS
السلوك مشابه لسلوك wireguard-go. على وجه التحديد، يجب أن يكون اسم الواجهة utun[0-9]+ لاسم واجهة صريح أو utun لكي تختار النواة أقل اسم متاح. إذا اخترت utun كاسم للواجهة، وكان متغير البيئة WG_TUN_NAME_FILE معرَّفًا، فسيُكتب الاسم الفعلي للواجهة الذي اختارته النواة في الملف المحدد بذلك المتغير.
امتدادات UAPI
راجع UAPI للاطلاع على الامتدادات الخاصة ببروتوكول إعداد wg.
عمليات التدقيق
أُجريت عمليات تدقيق أمنية مستقلة على المشروع. راجع دليل audit.
WireGuard علامة تجارية مسجلة لـ Jason A. Donenfeld. GotaTun غير مدعوم أو مُعتمد من Jason A. Donenfeld.