
Rust में यूज़रस्पेस WireGuard® कार्यान्वयन
यह एक उपयोगकर्ता-स्थान WireGuard® कार्यान्वयन है, और BoringTun का एक फोर्क है।
इस रिपॉज़िटरी का सभी स्रोत कोड, जब तक अन्यथा न कहा गया हो, Mozilla Public License, संस्करण 2.0 की शर्तों के अधीन है। इस लाइसेंस की एक प्रति फ़ाइल "LICENSE" या https://www.mozilla.org/MPL/2.0/ पर पाई जा सकती है।
5 मार्च, 2026 से पहले किए गए योगदान पुराने BSD 3-क्लॉज़ लाइसेंस के अंतर्गत लाइसेंस प्राप्त हैं। इस लाइसेंस की एक प्रति फ़ाइल "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_USERSPACE_IMPLEMENTATION को gotatun पर सेट करके wg-quick के साथ भी उपयोग करना संभव है। उदाहरण के लिए:
sudo WG_QUICK_USERSPACE_IMPLEMENTATION=gotatun WG_SUDO=1 wg-quick up CONFIGURATION
कृपया ध्यान दें कि यदि आपके पास wireguard कर्नेल मॉड्यूल स्थापित है तो Linux पर wg-quick WG_QUICK_USERSPACE_IMPLEMENTATION को अनदेखा कर देगा।
इस प्रोजेक्ट का परीक्षण करने के लिए कुछ आवश्यकताएँ हैं:
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 परिभाषित है, तो कर्नेल द्वारा चुने गए इंटरफ़ेस का वास्तविक नाम उस चर द्वारा निर्दिष्ट फ़ाइल में लिखा जाता है।
wg कॉन्फ़िगरेशन प्रोटोकॉल के एक्सटेंशन के लिए UAPI देखें।
प्रोजेक्ट पर स्वतंत्र सुरक्षा ऑडिट किए गए हैं। audit निर्देशिका देखें।
WireGuard जेसन ए. डोननफेल्ड का एक पंजीकृत ट्रेडमार्क है। GotaTun को जेसन ए. डोननफेल्ड द्वारा प्रायोजित या समर्थित नहीं किया गया है।
| Target triple | Binary | Library |
|---|
| 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 | ✓ |