अपडेट पर वापस जाएँ
New releaseAug 8, 2026

radmin-vpn-linux v1.0.0

Radmin VPN को Linux पर Wine के माध्यम से चलाएँ — कस्टम ड्राइवर, TAP ब्रिज, शून्य पैकेट हानि

साझा करें

लिनक्स के लिए Radmin VPN

Wine के माध्यम से लिनक्स पर Radmin VPN चलाएँ। VPN नेटवर्क से जुड़ें, पीयर देखें, गेम खेलें — यह सब बिना Windows VM के।

मैंने इसे इसलिए नहीं बनाया क्योंकि यह VM से आसान था। मैंने इसे बनाया क्योंकि मुझे लगा कि यह VM से आसान है।

AI-सहायता प्राप्त कोड। एक मानव और Claude (Anthropic) के बीच सहयोग से निर्मित। ड्राइवर, हुक और ब्रिज Ghidra का उपयोग करके Radmin VPN के अप्रलेखित ड्राइवर प्रोटोकॉल के व्यापक AI-सहायता प्राप्त रिवर्स इंजीनियरिंग के साथ लिखे गए थे। यह काम करता है, लेकिन कोई गारंटी नहीं देता। Famatech से संबद्ध नहीं है। Radmin VPN स्वामित्व सॉफ़्टवेयर है — इसे radmin-vpn.com से स्वयं डाउनलोड करें। अपने जोखिम पर उपयोग करें।

यह कैसे काम करता है

Radmin VPN की Windows सेवा अपने वर्चुअल नेटवर्क एडेप्टर के लिए NDIS मिनिपोर्ट ड्राइवर से बात करती है। Wine NDIS का समर्थन नहीं करता, इसलिए हम ड्राइवर को अपने स्वयं के कार्यान्वयन से बदल देते हैं जो Linux TAP डिवाइस से ब्रिज करता है। एक हुक DLL Wine संगतता समस्याओं (एडेप्टर नामकरण, रजिस्ट्री अनुमतियाँ) को संभालता है। परिणाम Wine के अंतर्गत मूल रूप से चलने वाला एक पूर्ण कार्यात्मक Radmin VPN क्लाइंट है।

Linux app ← TAP (radminvpn0) ← tap_bridge ← FIFO ← rvpnnetmp.sys (Wine driver) ← RvControlSvc.exe

त्वरित आरंभ (AppImage, अनुशंसित)

RadminVPN-Linux-x86_64.AppImage को नवीनतम रिलीज़ से प्राप्त करें। कुछ भी इंस्टॉल करने की आवश्यकता नहीं — Wine बंडल किया गया है।

रिलीज़ कैंडिडेट (जैसे v1.0.0-rc1) GitHub प्री-रिलीज़ के रूप में प्रकाशित किए जाते हैं। उपरोक्त latest लिंक हमेशा नवीनतम स्थिर बिल्ड की ओर इशारा करता है, इसलिए प्री-रिलीज़ वहाँ दिखाई नहीं देंगी — उन्हें पूर्ण रिलीज़ सूची से प्राप्त करें।

chmod +x RadminVPN-Linux-x86_64.AppImage
./RadminVPN-Linux-x86_64.AppImage

पहली लॉन्च पर यह Radmin VPN इंस्टॉलर के लिए संकेत देगा (पहले radmin-vpn.com से Radmin_VPN_*.exe डाउनलोड करें)। प्रगति के साथ एक टर्मिनल खुलता है, और TAP सेटअप के लिए एक sudo पासवर्ड प्रॉम्प्ट की आवश्यकता होती है।

स्थायी स्थिति (wineprefix, MAC, लॉग) ~/.local/share/radmin-vpn-linux/ में रहती है।

पूर्वापेक्षाएँ (सोर्स बिल्ड / गैर-AppImage)

  • Wine >= 11.0 (Wine 11.5 Arch Linux और Wine 11.6 Ubuntu 24.04 पर परीक्षण किया गया)
  • mingw-w64 क्रॉस-कंपाइलर (i686-w64-mingw32-gcc, x86_64-w64-mingw32-gcc) — सोर्स से बिल्ड करने के लिए
  • iconv (glibc) — सेवा लॉग पार्सिंग के लिए
  • sudo एक्सेस — TAP डिवाइस निर्माण और रूटिंग के लिए
  • TUN/TAP कर्नेल समर्थन — आमतौर पर अंतर्निहित, modprobe tun से जाँचें
  • Radmin VPN इंस्टॉलरradmin-vpn.com से डाउनलोड करें। 2.0.x बिल्ड होना चाहिए (2.0.4899.9 के विरुद्ध विकसित)। Radmin VPN 1.4 समर्थित नहीं है — यह एडेप्टर को पंजीकृत और खोलता है लेकिन Wine शिम के अंतर्गत कनेक्ट करना कभी पूरा नहीं करता, GUI को "Connecting..." पर अटका छोड़ देता है।

Arch Linux

sudo pacman -S wine mingw-w64-gcc

Ubuntu/Debian

sudo apt install wine64 wine32 gcc-mingw-w64

सोर्स त्वरित आरंभ

git clone https://github.com/baptisterajaut/radmin-vpn-linux.git
cd radmin-vpn-linux

# Option A: download pre-built binaries from GitHub Releases
mkdir -p build
TAG=$(curl -sI https://github.com/baptisterajaut/radmin-vpn-linux/releases/latest | grep -i location | grep -oP 'v[\d.]+')
curl -sL "https://github.com/baptisterajaut/radmin-vpn-linux/releases/download/${TAG}/radmin-vpn-linux-${TAG}.tar.gz" \
  | tar xz -C build/

# Option B: build from source
make

# Download Radmin VPN installer from https://www.radmin-vpn.com/
./run.sh --installer ~/Downloads/Radmin_VPN_*.exe

बाद के रनों पर, बस:

./run.sh

कमांड-लाइन फ़्लैग

फ़्लैगविवरण
--installer <path>Radmin_VPN_*.exe इंस्टॉलर का पथ (केवल पहले रन पर)।
--no-uiRadmin GUI लॉन्च किए बिना सेवा चलाएँ।
--no-broadcast-routesब्रॉडकास्ट/मल्टीकास्ट → TAP रूट न जोड़ें।
--filter-uiवैकल्पिक GTK4 पैकेट-फ़िल्टर UI लॉन्च करें (डिफ़ॉल्ट रूप से बंद)।
--fix-chatWine के अंतर्गत चैट-विंडो क्रैश ठीक करने के लिए Qt की qwindows.dll को पैच करें (डिफ़ॉल्ट रूप से बंद)।

--filter-ui और --fix-chat दोनों वैकल्पिक हैं। फ़िल्टर UI को rvpn_filter_ui बाइनरी की आवश्यकता होती है (make द्वारा निर्मित); चैट फिक्स को patch_qwindows_font.py और Python 3 इंटरप्रेटर की आवश्यकता होती है।

हेडलेस / सर्वर मोड

दो अतिरिक्त लॉन्चर Radmin VPN को स्थानीय डेस्कटॉप के बिना चलाते हैं — VPS या डेटासेंटर होस्ट के लिए। दोनों बिल्कुल run.sh की तरह इंस्टॉल और कॉन्फ़िगर करते हैं (समान wineprefix, समान --installer पहले-रन प्रवाह, समान TAP ब्रिज); वे केवल GUI तक पहुँचने के तरीके में भिन्न होते हैं।

run_datacenter.sh — ब्राउज़र पर GUI

वास्तविक Radmin GUI को वर्चुअल डिस्प्ले (Xvfb) पर चलाता है और इसे VNC + noVNC के माध्यम से प्रस्तुत करता है, ताकि आप अपने नेटवर्क को ब्राउज़र से कॉन्फ़िगर कर सकें और फिर इसे चालू छोड़ सकें।

sudo apt install -y xvfb x11vnc websockify novnc   # or: make install-datacenter-deps
./run_datacenter.sh --installer ~/Downloads/Radmin_VPN_*.exe
फ़्लैगडिफ़ॉल्टविवरण
--vnc-port <n>5900x11vnc सर्वर के लिए पोर्ट।
--web-port <n>6080noVNC वेब एंडपॉइंट के लिए पोर्ट।
--vnc-password <pw>(कोई नहीं)VNC / वेब सत्र के लिए पासवर्ड।
--web-bind <addr>127.0.0.1वह पता जिस पर noVNC सुनता है।

डिफ़ॉल्ट रूप से noVNC 127.0.0.1 से बाइंड होता है, इसलिए यह केवल SSH टनल के माध्यम से पहुँच योग्य है:

ssh -L 6080:localhost:6080 your-vps    # then open http://localhost:6080/vnc.html

इसे सार्वजनिक रूप से उजागर करने के लिए, --web-bind 0.0.0.0 को --vnc-password के साथ पास करें — अन्यथा वेब पोर्ट तक पहुँचने वाला कोई भी व्यक्ति एक अप्रमाणित, root-क्षमता वाले डेस्कटॉप पर पहुँच जाता है। यदि आप बिना पासवर्ड के सार्वजनिक रूप से बाइंड करते हैं तो स्क्रिप्ट एक स्पष्ट चेतावनी प्रिंट करती है।

run_vps.sh — केवल सेवा, निश्चित GUID

सेवा को हार्डकोडेड TAP GUID (कोई Wine WMI आवश्यक नहीं) और बिल्कुल GUI के बिना हेडलेस रूप से प्रारंभ करता है। यदि एक कस्टम नेटवर्क एन्यूमरेटर (rv_net_enum.exe, इस रिपो में शामिल नहीं) एक निर्देशिका ऊपर मौजूद है, तो इसे लॉन्च किया जाता है; अन्यथा सेवा तब तक चलती रहती है जब तक आप Ctrl+C नहीं दबाते। केवल --installer स्वीकार किया जाता है।

./run_vps.sh --installer ~/Downloads/Radmin_VPN_*.exe

सोर्स से बिल्ड करना

mingw-w64 क्रॉस-कंपाइलर की आवश्यकता होती है। यदि आप mingw इंस्टॉल नहीं करना चाहते हैं तो प्री-बिल्ट बाइनरी Releases से उपलब्ध हैं (प्रत्येक टैग किए गए संस्करण पर CI द्वारा निर्मित)।

make          # build everything to build/
make clean    # remove build artifacts

निर्माण करता है:

  • build/rvpnnetmp.sys — Wine कर्नेल ड्राइवर (64-बिट PE)
  • build/adapter_hook.dll — हुक DLL (32-बिट PE)
  • build/rvpn_launcher.exe — DLL इंजेक्टर (32-बिट PE)
  • build/netsh.exe — netsh प्रतिस्थापन (32-बिट PE, SysWOW64 में इंस्टॉल)
  • build/netsh64.exe — netsh प्रतिस्थापन (64-बिट PE, System32 में इंस्टॉल)
  • build/drvinst.exe — no-op स्टब जो Radmin के वास्तविक NDIS ड्राइवर इंस्टॉलर की जगह लेता है (issue #12)
  • build/tap_bridge — मूल Linux TAP ब्रिज
  • build/rvpn_dnsfix.so — मूल LD_PRELOAD शिम, केवल सेवा में प्रीलोड किया गया
  • build/rvpn_filter_ui — वैकल्पिक GTK4 पैकेट-फ़िल्टर UI (--filter-ui)

AppImage बिल्ड करना

make
./packaging/build-appimage.sh       # → packaging/dist/RadminVPN-Linux-x86_64.AppImage

पहले रन पर Kron4ek Wine-Staging amd64-wow64 बिल्ड (~100 MB) और appimagetool डाउनलोड करता है, दोनों को packaging/dist/ में कैश करता है। curl और ImageMagick (convert) की आवश्यकता होती है।

run.sh क्या करता है

  1. पहला रन: Wine के माध्यम से Radmin VPN इंस्टॉल करता है (/VERYSILENT), वास्तविक NDIS ड्राइवर को हटाता है (Wine के साथ असंगत), हमारे कस्टम ड्राइवर को पंजीकृत करता है
  2. हर रन: एक TAP डिवाइस बनाता है, TAP-to-FIFO ब्रिज शुरू करता है, Wine रजिस्ट्री कॉन्फ़िगर करता है (एडेप्टर GUID, ड्राइवर सेवा), Radmin VPN सेवा और GUI लॉन्च करता है
  3. बाहर निकलने पर (Ctrl+C या GUI बंद करना): Wine को बंद करता है, TAP डिवाइस हटाता है, सफाई करता है

wineprefix ./wineprefix/ (सोर्स रन) या ~/.local/share/radmin-vpn-linux/wineprefix/ (AppImage) में संग्रहीत होता है। एक स्थायी MAC पता पहले रन पर उत्पन्न होता है और wineprefix में सहेजा जाता है।

आर्किटेक्चर

घटकविवरण
rvpnnetmp.sysWine कर्नेल ड्राइवर। Radmin NDIS मिनिपोर्ट का अनुकरण करता है। IOCTL (VERSION, STATUS, SETUP, PEERMAC), TLV फ्रेम एन्कोडिंग/डिकोडिंग, ओवरलैप्ड I/O के लिए IRP कतार, मल्टी-पीयर समर्थन के लिए MAC-आधारित फ्रेम रूटिंग संभालता है।
adapter_hook.dllRvControlSvc.exe के साथ लोड की गई साथी DLL। IAT हुक: Radmin के अपेक्षित नाम से मेल खाने के लिए TAP एडेप्टर का नाम बदलता है, Wine SCM बग के आसपास काम करने के लिए RegSetKeySecurity को no-op करता है जहाँ सेवाओं में SYSTEM SID का अभाव होता है।
tap_bridgeमूल Linux बाइनरी। TAP डिवाइस और नामित पाइप (FIFO) के बीच ईथरनेट फ्रेम रिले करता है जिन्हें Wine ड्राइवर पढ़ता/लिखता है।
netsh.exe / netsh64.exeWine के netsh स्टब की जगह लेता है (SysWOW64 में 32-बिट, System32 में 64-बिट)। फ़ाइल-आधारित रिले के माध्यम से Windows netsh interface ip कमांड को Linux ip addr/ip link कमांड में अनुवादित करता है, रूट रिले तक पहुँचने से पहले पते को सत्यापित करता है।
rvpn_launcher.exeCreateRemoteThread + LoadLibrary के माध्यम से adapter_hook.dll को Radmin सेवा प्रक्रिया में इंजेक्ट करता है।
drvinst.exeNo-op स्टब जो Radmin के वास्तविक NDIS ड्राइवर इंस्टॉलर की जगह लेता है। Radmin इसे रनटाइम पर NetMP60_1_1_64.sys लोड करने के लिए चलाता है, जो NdisInitializeReadWriteLock के माध्यम से Wine 11.x को समाप्त कर देता है (issue #12); चूँकि हमारा ड्राइवर पहले से ही उस एडेप्टर की जगह ले चुका है, वास्तविक ड्राइवर कभी लोड नहीं होना चाहिए।
rvpn_dnsfix.soमूल LD_PRELOAD शिम, केवल सेवा लॉन्च में इंजेक्ट किया गया। glibc परत पर निजी IPv4/IPv6 के रिवर्स DNS (getnameinfo/gethostbyaddr) को शॉर्ट-सर्किट करता है। Radmin अपने द्वारा एकत्र किए गए प्रत्येक स्थानीय उम्मीदवार पते का PTR-रिज़ॉल्यूशन करता है; ऐसे होस्ट पर जिसका रिज़ॉल्वर RFC1918 PTR क्वेरी को ब्लैक-होल करता है, यह मिनटों के लिए रुक जाता है और सेवा पंजीकृत हो जाती है लेकिन कभी तैयार नहीं होती (issue #16)। लुकअप Wine के Unix पक्ष द्वारा जारी किया जाता है, जो adapter_hook.dll के अंदर किसी भी हुक की पहुँच से बाहर है।
rvpn_filter_uiब्रिज पार करने वाले पैकेटों का निरीक्षण और फ़िल्टर करने के लिए वैकल्पिक GTK4 UI। डिफ़ॉल्ट रूप से बंद; --filter-ui के साथ लॉन्च करें।

समस्या निवारण

GUI "Waiting for adapter" पर अटका हुआ: ड्राइवर लोड नहीं हो रहा है। जाँचें कि /tmp/radmin_driver.log मौजूद है और उसमें सामग्री है। यदि खाली है, तो ड्राइवर सेवा पंजीकरण गायब हो सकता है — wineprefix हटाएँ और फिर से चलाएँ।

पंजीकृत लेकिन कभी "ready" नहीं: सेवा Registered as #… तक पहुँचती है और वहीं रुक जाती है। दो ज्ञात कारण, दोनों टाइमआउट पर मुद्रित डायग्नोस्टिक्स ब्लॉक द्वारा रिपोर्ट किए गए हैं। (a) एक ट्रांसपेरेंट प्रॉक्सी या टनल जिसकी अपनी रूटिंग नीति है (sing-box, clash/mihomo, v2ray…) आउटबाउंड कनेक्शन को इंटरसेप्ट कर रही है — ऐसे स्टैक TCP हैंडशेक का स्थानीय रूप से उत्तर देते हैं, इसलिए सॉकेट ESTABLISHED पढ़ता है जबकि कुछ भी रिले नहीं होता। 26.0.0.0/8 को इसकी रूट से बाहर करें, और *.radminte.com को भी यदि आप उन तक सीधे पहुँच सकते हैं। (b) एक रिज़ॉल्वर जो निजी पतों के रिवर्स लुकअप को ब्लैक-होल करता है (172.17.0.1 पर एक docker0 सामान्य ट्रिगर है)। rvpn_dnsfix.so इसे संभालता है, लेकिन यह एक 64-बिट शिम है: old-wow64 के रूप में निर्मित सिस्टम Wine इसे अनदेखा करता है। वहाँ काम का तरीका — पते के लिए /etc/hosts में एक पंक्ति जोड़ें, या contrib/run-in-netns.sh का उपयोग करें (जो सेवा को "ready" तक पहुँचाता है लेकिन VPN को नेमस्पेस के अंदर रखता है: होस्ट अनुप्रयोग 26.0.0.0/8 तक नहीं पहुँच सकते, इसके हेडर में चेतावनी पढ़ें)।

सेवा तुरंत मर जाती है: Wine त्रुटियों के लिए /tmp/radmin_service.log जाँचें। सामान्य कारण: किसी भिन्न Wine संस्करण का पुराना wineprefix। ./wineprefix/ हटाएँ और फिर से चलाएँ।

एक पीयर के साथ 0% पैकेट हानि, कई के साथ उच्च हानि: यह मूल बग था — ड्राइवर में MAC-आधारित फ्रेम रूटिंग द्वारा ठीक किया गया। सुनिश्चित करें कि आप नवीनतम बिल्ड का उपयोग कर रहे हैं।

पहला पिंग धीमा है (~1s): नवीनतम संस्करण ड्राइवर द्वारा देखे गए प्रत्येक IP पैकेट के लिए MAC पते कैश करता है। यदि लक्ष्य IP ने ड्राइवर चलने के दौरान कम से कम एक पैकेट भेजा है, तो MAC पहले से कैश है और शून्य ARP विलंब होता है। केवल पूरी तरह से मौन पीयर (जिन्होंने कभी पैकेट नहीं भेजा) को प्रारंभिक ARP रिज़ॉल्यूशन की आवश्यकता होती है, जो ~1 सेकंड जोड़ता है।

LAN गेम अन्य पीयर नहीं देखते / "ऑटो-डिस्कवरी" टूटी हुई: अधिकांश LAN गेम ब्रॉडकास्ट प्रोब (UDP से 255.255.255.255) या मल्टीकास्ट (224.0.0.0/4) के साथ एक-दूसरे की खोज करते हैं। Windows पर Radmin TAP ड्राइवर उन फ्लो के लिए स्वयं को पसंदीदा इंटरफ़ेस के रूप में विज्ञापित करता है; Linux पर आपको कर्नेल को स्पष्ट रूप से बताना होगा। run.sh अब VPN आने पर दो अतिरिक्त रूट इंस्टॉल करता है:

ip route append 255.255.255.255/32 dev radminvpn0 metric 0
ip route append 224.0.0.0/4        dev radminvpn0 metric 0

दुष्प्रभाव: आपके भौतिक LAN पर mDNS / Bonjour / SSDP (Chromecast, AirPrint, Sonos, स्मार्ट TV, ...) VPN चालू रहने पर उसी के माध्यम से जाएँगे। यदि आपको स्थानीय-LAN डिस्कवरी और Radmin को समानांतर चाहिए, तो --no-broadcast-routes के साथ चलाएँ:

./run.sh --no-broadcast-routes

रूट TAP डिवाइस तक सीमित हैं, इसलिए run.sh बाहर निकलने पर डिवाइस को हटाते समय वे स्वतः हटा दिए जाते हैं।

ज्ञात सीमाएँ

  • एक समय में केवल एक इंस्टेंस चल सकता है (/tmp/ में साझा FIFO)
  • 26.0.0.0/8 ऑन-लिंक रूट चलने के दौरान पूरे सिस्टम को प्रभावित करता है (बाहर निकलने पर साफ किया जाता है)
  • डिफ़ॉल्ट ब्रॉडकास्ट (255.255.255.255/32) और मल्टीकास्ट (224.0.0.0/4) रूट VPN की ओर मोड़ दिए जाते हैं — यदि आपको समानांतर स्थानीय-LAN mDNS / SSDP चाहिए तो --no-broadcast-routes से अक्षम करें
  • पुराने Wine संस्करणों (< 11.0) में अलग ओवरलैप्ड I/O व्यवहार हो सकता है जो ड्राइवर को तोड़ देता है

नोट्स

Wine बग वर्कअराउंड। RegSetKeySecurity हुक एक ज्ञात Wine सीमा के आसपास काम करता है जहाँ सेवाओं को SYSTEM SID (S-1-5-18) प्राप्त नहीं होता। यह भविष्य के Wine रिलीज़ में अपस्ट्रीम ठीक किया जा सकता है।

श्रेय

रिवर्स इंजीनियरिंग और Wine शिम: @baptisterajaut

  • @ayozetr — "पंजीकृत लेकिन कभी तैयार नहीं" हैंग को होस्ट रिज़ॉल्वर द्वारा ब्लैक-होल किए गए निजी पते के रिवर्स-DNS लुकअप तक ट्रैक किया, चार गलत सिद्धांतों को खारिज करने के बाद (मेरा भी शामिल) बेयर-लिबक रीप्रो के साथ इसे साबित किया, और src/rvpn_dnsfix.c तथा contrib/run-in-netns.sh का मूल लिखा।
  • @gringoestrangeiro — Linux स्थिरता कार्य: पैकेट फ़िल्टर, ARP कैश, क्रैश रिकवरी, हेडलेस और डेटासेंटर मोड।
  • @yuxiaole-bili — पाया कि Wine का SCM एक दूसरा, अनहुक्ड सेवा इंस्टेंस स्वतः प्रारंभ करता है जो एडेप्टर के लिए इंजेक्ट किए गए इंस्टेंस से लड़ता है।
  • @D1spell-tech, @Milkiway13 और वे सभी जिन्होंने पूर्ण डायग्नोस्टिक्स ब्लॉक चिपकाया — दो स्वतंत्र होस्ट ही बग को खोजने योग्य बनाते हैं।

लाइसेंस

GPL-3.0। LICENSE देखें।

भावना में, यह कोड पब्लिक डोमेन है — इसके साथ जो चाहें करें। GPL यहाँ एक कानूनी सुरक्षा जाल के रूप में है: यह इंटरऑपरेबिलिटी के लिए रिवर्स इंजीनियरिंग की स्पष्ट रूप से रक्षा करता है, जो इस परियोजना का कार्य है। दोहरी सुरक्षा।

Radmin VPN Famatech Corp. का स्वामित्व सॉफ़्टवेयर है। यह परियोजना केवल इंटरऑपरेबिलिटी उपकरण प्रदान करती है — कोई Famatech कोड शामिल या वितरित नहीं किया गया है।

श्रेणियाँ