
gotatun v0.9.2
Rust में यूज़रस्पेस WireGuard® कार्यान्वयन
GotaTun
एक userspace WireGuard® कार्यान्वयन, और BoringTun का एक फ़ोर्क।
लाइसेंस
इस रिपॉज़िटरी में सभी स्रोत कोड, जब तक अन्यथा न कहा गया हो, Mozilla Public License, संस्करण 2.0 की शर्तों के अधीन हैं। इस लाइसेंस की एक प्रति "LICENSE" फ़ाइल में या https://www.mozilla.org/MPL/2.0/ पर पाई जा सकती है।
5 मार्च, 2026 से पहले किए गए योगदान पुराने BSD 3-clause लाइसेंस के अंतर्गत लाइसेंस प्राप्त हैं। इस लाइसेंस की एक प्रति "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_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चलाएँगे तो आपसे आपका पासवर्ड माँगा जाएगा।- 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 एक्सटेंशन
wg कॉन्फ़िगरेशन प्रोटोकॉल के एक्सटेंशन के लिए UAPI देखें।
ऑडिट
परियोजना पर स्वतंत्र सुरक्षा ऑडिट किए गए हैं। audit निर्देशिका देखें।
WireGuard, Jason A. Donenfeld का एक पंजीकृत ट्रेडमार्क है। GotaTun को Jason A. Donenfeld द्वारा प्रायोजित या समर्थित नहीं किया गया है।