العودة إلى التحديثات
New releaseAug 18, 2026

gotatun v0.9.0

تنفيذ WireGuard® في مساحة المستخدم بلغة Rust

مشاركة

GotaTun

تنفيذ WireGuard® في مساحة المستخدم، ومتفرع من BoringTun.

الترخيص

جميع الكودات المصدرية في هذا المستودع تخضع لشروط رخصة موزيلا العامة، الإصدار 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 على لينكس إذا كان لديك وحدة نواة wireguard مثبتة.

الاختبار

اختبار هذا المشروع يتطلب بعض المتطلبات:

  • sudo: مطلوب لإنشاء الأنفاق. عند تشغيل cargo test سيُطلب منك كلمة المرور.
  • Docker: يمكنك تثبيته هنا. إذا كنت على Ubuntu/Debian يمكنك تشغيل apt-get install docker.io.

المنصات المدعومة

ثلاثية الهدفثنائيمكتبة
x86_64-unknown-linux-gnu
aarch64-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.

الفئات