
تنفيذ WireGuard® في مساحة المستخدم بلغة Rust
تنفيذ 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 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 سيُطلب منك كلمة المرور.apt-get install docker.io.قد تعمل أهداف أخرى، لكننا نختبر فقط هذه
البنيات 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.
السلوك مشابه لسلوك wireguard-go. على وجه التحديد، يجب أن يكون اسم الواجهة utun[0-9]+ لاسم واجهة صريح أو utun ليجعل النواة تختار أقل واجهة متاحة. إذا اخترت utun كاسم واجهة، وتم تعريف متغير البيئة WG_TUN_NAME_FILE، فسيتم كتابة الاسم الفعلي للواجهة الذي اختارته النواة إلى الملف المحدد بواسطة ذلك المتغير.
انظر UAPI للحصول على إضافات لبروتوكول تهيئة wg.
تم إجراء تدقيقات أمنية مستقلة على المشروع. انظر دليل audit.
WireGuard هي علامة تجارية مسجلة لـ Jason A. Donenfeld. GotaTun ليست برعاية أو تأييد من Jason A. Donenfeld.
| ثلاثية الهدف | ثنائي | مكتبة |
|---|
| 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 | ✓ |