
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.