Zurück zu den Updates
New releaseJul 24, 2026

radmin-vpn-linux v1.0.0-rc8

Radmin VPN unter Linux mit Wine ausführen — eigener Treiber, TAP-Brücke, null Paketverlust

Teilen

Radmin VPN für Linux

Führen Sie Radmin VPN unter Linux über Wine aus. Treten Sie VPN-Netzwerken bei, sehen Sie Peers, spielen Sie Spiele – ganz ohne Windows-VM.

Ich habe das nicht gebaut, weil es einfacher als eine VM war. Ich habe es gebaut, weil ich dachte, es sei einfacher als eine VM.

KI-gestützter Code. Gemeinsam von einem Menschen und Claude (Anthropic) entwickelt. Der Treiber, die Hooks und die Brücke wurden mit umfangreicher KI-gestützter Reverse Engineering des undokumentierten Treiberprotokolls von Radmin VPN unter Verwendung von Ghidra geschrieben. Das funktioniert, kommt aber ohne Garantien. Nicht mit Famatech verbunden. Radmin VPN ist proprietär – laden Sie es selbst von radmin-vpn.com herunter. Nutzung auf eigene Gefahr.

So funktioniert es

Der Windows-Dienst von Radmin VPN kommuniziert mit einem NDIS-Miniport-Treiber für seinen virtuellen Netzwerkadapter. Wine unterstützt kein NDIS, daher ersetzen wir den Treiber durch unsere eigene Implementierung, die eine Brücke zu einem Linux-TAP-Gerät herstellt. Eine Hook-DLL behebt Wine-Kompatibilitätsprobleme (Adapterbenennung, Registrierungsberechtigungen). Das Ergebnis ist ein voll funktionsfähiger Radmin-VPN-Client, der nativ unter Wine läuft.

Linux-App ← TAP (radminvpn0) ← tap_bridge ← FIFO ← rvpnnetmp.sys (Wine-Treiber) ← RvControlSvc.exe

Schnellstart (AppImage, empfohlen)

Holen Sie sich RadminVPN-Linux-x86_64.AppImage vom neuesten Release. Nichts zu installieren – Wine ist enthalten.

Release-Kandidaten (z. B. v1.0.0-rc1) werden als GitHub-Pre-Releases veröffentlicht. Der latest-Link oben zeigt immer auf den neuesten stabilen Build, daher erscheinen Pre-Releases dort nicht – holen Sie diese aus der vollständigen Release-Liste.

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

Beim ersten Start wird das Radmin-VPN-Installationsprogramm heruntergeladen, gegen das es validiert wurde (oder übergeben Sie Ihr eigenes mit --installer). Ein Terminal öffnet sich mit Fortschrittsanzeige, und eine sudo-Passwortabfrage ist für die TAP-Einrichtung erforderlich.

Der dauerhafte Zustand (wineprefix, MAC, Logs) befindet sich in ~/.local/share/radmin-vpn-linux/.

Radmin schließt sich von selbst? Sein eigener Updater installiert einen neueren Build im laufenden Prefix. Führen Sie das Upgrade stattdessen kontrolliert durch – es behält Ihr Prefix und Ihre Radmin-ID:

./RadminVPN-Linux-x86_64.AppImage --update

Deaktivieren Sie dann „Automatische Updates" in den Radmin-Einstellungen, damit es nicht erneut versucht. Details in Radmins eigenem Auto-Updater.

Voraussetzungen (Quellcode-Build / Nicht-AppImage)

  • Wine >= 11.0 (getestet mit Wine 11.5 auf Arch Linux und Wine 11.6 auf Ubuntu 24.04)
  • mingw-w64-Cross-Compiler (i686-w64-mingw32-gcc, x86_64-w64-mingw32-gcc) – für den Build aus dem Quellcode
  • iconv (glibc) – für die Dienst-Log-Analyse
  • sudo-Zugriff – für die TAP-Geräteerstellung und das Routing
  • TUN/TAP-Kernelunterstützung – normalerweise integriert, prüfen Sie mit modprobe tun
  • Radmin-VPN-Installationsprogramm – wird automatisch heruntergeladen, falls nicht vorhanden. Die Version, gegen die dieses Projekt validiert wird, ist an einer Stelle festgelegt: RADMIN_VERSION in lib.sh (derzeit 2.1.4951.1; 2.0.4899.9 funktioniert ebenfalls). Radmin VPN 1.4 wird nicht unterstützt – es registriert und öffnet den Adapter, schließt die Verbindung unter dem Wine-Shim jedoch nie ab, sodass die GUI bei „Verbinden..." hängen bleibt.

Arch Linux

sudo pacman -S wine mingw-w64-gcc

Ubuntu/Debian

sudo apt install wine64 wine32 gcc-mingw-w64

Schnellstart aus dem Quellcode

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

# Option A: Vorgefertigte Binärdateien von GitHub Releases herunterladen
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: Aus dem Quellcode bauen
make

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

Bei späteren Ausführungen einfach:

./run.sh

Befehlszeilenoptionen

FlagBeschreibung
--installer <path>Pfad zum Radmin_VPN_*.exe-Installationsprogramm (nur beim ersten Lauf).
--no-uiDienst ohne Start der Radmin-GUI ausführen.
--updateRadmin an Ort und Stelle auf die festgelegte Version aktualisieren. Behält das Prefix, sodass die bei Famatech registrierte RID erhalten bleibt.
--no-broadcast-routesDie Broadcast/Multicast-→-TAP-Routen nicht hinzufügen.
--filter-uiDie optionale GTK4-Paketfilter-Oberfläche starten (standardmäßig deaktiviert).
--fix-chatqwindows.dll von Qt patchen, um den Chat-Fenster-Absturz unter Wine zu beheben (standardmäßig deaktiviert).

Radmins eigener Auto-Updater

Die Radmin-GUI kann einen neueren Build herunterladen und sein Installationsprogramm im laufenden Prefix ausführen, was die GUI beendet und den laufenden Dienst zum Absturz bringt (das GUI-Log zeigt dann ein Installationsprogramm unter AppData\\Local\\Temp). Zwei Verteidigungslinien: Der Launcher liefert den aktuell validierten Build, sodass der Updater nichts zu pushen hat, und eine GUI, die stirbt, nimmt den Tunnel nicht mehr mit – sie wird einmal neu gestartet, dann läuft das VPN headless weiter. Für ein bewusstes Upgrade verwenden Sie ./run.sh --update, das zuerst alles stoppt. Das Deaktivieren von „Automatische Updates" in den GUI-Einstellungen vermeidet das Wettrennen vollständig.

Sowohl --filter-ui als auch --fix-chat sind optional. Die Filter-Oberfläche benötigt die rvpn_filter_ui-Binärdatei (von make erstellt); der Chat-Fix benötigt patch_qwindows_font.py und einen Python-3-Interpreter.

Headless-/Server-Modi

Zwei zusätzliche Launcher führen Radmin VPN ohne lokalen Desktop aus – für einen VPS oder einen Rechenzentrums-Host. Beide installieren und konfigurieren genau wie run.sh (gleiches wineprefix, gleicher --installer-Erstlauf-Ablauf, gleiche TAP-Brücke); sie unterscheiden sich nur darin, wie die GUI erreicht wird.

run_datacenter.sh – GUI über den Browser

Führt die echte Radmin-GUI auf einem virtuellen Display (Xvfb) aus und stellt sie über VNC + noVNC bereit, sodass Sie Ihre Netzwerke über einen Browser konfigurieren und dann laufen lassen können.

sudo apt install -y xvfb x11vnc websockify novnc   # oder: make install-datacenter-deps
./run_datacenter.sh --installer ~/Downloads/Radmin_VPN_*.exe
FlagStandardBeschreibung
--vnc-port <n>5900Port für den x11vnc-Server.
--web-port <n>6080Port für den noVNC-Web-Endpunkt.
--vnc-password <pw>(keiner)Passwort für die VNC-/Web-Sitzung.
--web-bind <addr>127.0.0.1Adresse, auf der noVNC lauscht.

Standardmäßig bindet noVNC an 127.0.0.1, ist also nur über einen SSH-Tunnel erreichbar:

ssh -L 6080:localhost:6080 your-vps    # dann http://localhost:6080/vnc.html öffnen

Um es öffentlich zugänglich zu machen, übergeben Sie --web-bind 0.0.0.0 zusammen mit --vnc-password – andernfalls landet jeder, der den Web-Port erreicht, auf einem unauthentifizierten, root-fähigen Desktop. Das Skript gibt eine deutliche Warnung aus, wenn Sie öffentlich ohne Passwort binden.

run_vps.sh – nur Dienst, feste GUID

Startet den Dienst headless mit einer fest codierten TAP-GUID (kein Wine-WMI erforderlich) und überhaupt keiner GUI. Wenn ein benutzerdefinierter Netzwerk-Enumerator (rv_net_enum.exe, nicht in diesem Repository enthalten) ein Verzeichnis höher vorhanden ist, wird er gestartet; andernfalls läuft der Dienst einfach, bis Sie Strg+C drücken. Nur --installer wird akzeptiert.

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

Build aus dem Quellcode

Erfordert mingw-w64-Cross-Compiler. Vorgefertigte Binärdateien sind von Releases verfügbar (von CI bei jeder getaggten Version erstellt), falls Sie mingw nicht installieren möchten.

make          # alles nach build/ bauen
make clean    # Build-Artefakte entfernen

Erzeugt:

  • build/rvpnnetmp.sys – Wine-Kernel-Treiber (64-Bit-PE)
  • build/adapter_hook.dll – Hook-DLL (32-Bit-PE)
  • build/rvpn_launcher.exe – DLL-Injektor (32-Bit-PE)
  • build/netsh.exe – netsh-Ersatz (32-Bit-PE, installiert nach SysWOW64)
  • build/netsh64.exe – netsh-Ersatz (64-Bit-PE, installiert nach System32)
  • build/drvinst.exe – No-op-Stub, der Radmins echten NDIS-Treiberinstaller ersetzt (Issue #12)
  • build/tap_bridge – native Linux-TAP-Brücke
  • build/rvpn_dnsfix.so – nativer LD_PRELOAD-Shim, nur in den Dienst vorgeladen
  • build/rvpn_reuseport.so – nativer LD_PRELOAD-Shim, in wineserver vorgeladen
  • build/rvpn_filter_ui – optionale GTK4-Paketfilter-Oberfläche (--filter-ui)

AppImage bauen

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

Lädt den Kron4ek-Wine-Staging-amd64-wow64-Build (~100 MB) und appimagetool beim ersten Lauf herunter und cached beide in packaging/dist/. Erfordert curl und ImageMagick (convert).

Was run.sh tut

  1. Erster Lauf: Installiert Radmin VPN über Wine (/VERYSILENT), entfernt den echten NDIS-Treiber (mit Wine inkompatibel), registriert unseren benutzerdefinierten Treiber
  2. Jeder Lauf: Erstellt ein TAP-Gerät, startet die TAP-zu-FIFO-Brücke, konfiguriert die Wine-Registrierung (Adapter-GUID, Treiberdienst), startet den Radmin-VPN-Dienst und die GUI
  3. Beim Beenden (Strg+C oder GUI schließen): Beendet Wine, entfernt das TAP-Gerät, räumt auf

Das wineprefix wird in ./wineprefix/ (Quellcode-Lauf) oder ~/.local/share/radmin-vpn-linux/wineprefix/ (AppImage) gespeichert. Eine dauerhafte MAC-Adresse wird beim ersten Lauf generiert und im wineprefix gespeichert.

Architektur

KomponenteBeschreibung
rvpnnetmp.sysWine-Kernel-Treiber. Emuliert den Radmin-NDIS-Miniport. Behandelt IOCTLs (VERSION, STATUS, SETUP, PEERMAC), TLV-Frame-Kodierung/-Dekodierung, IRP-Warteschlange für überlappende E/A, MAC-basiertes Frame-Routing für Multi-Peer-Unterstützung.
adapter_hook.dllBegleit-DLL, die zusammen mit RvControlSvc.exe geladen wird. IAT-Hooks: Benennt den TAP-Adapter um, damit er Radmins erwartetem Namen entspricht, setzt RegSetKeySecurity auf No-op, um einen Wine-SCM-Fehler zu umgehen, bei dem Diensten die SYSTEM-SID fehlt, und beantwortet die vier Perf{Increment,Decrement}ULong{,Long}CounterValue-Lookups, die Wines advapi32 nicht exportiert. Letzteres ist nicht kosmetisch: Radmin 2.1 löst sieben perflib-Einstiegspunkte in einer Alles-oder-nichts-Kaskade auf und übergibt dann das resultierende Per-Peer-Counter-Objekt als Nutzlast des Peer-Handshakes – vier fehlende Telemetrie-Exporte legen also den gesamten Datenpfad lahm (Issue #24, docs/wine-perflib.md).
tap_bridgeNatives Linux-Binärprogramm. Leitet Ethernet-Frames zwischen dem TAP-Gerät und benannten Pipes (FIFOs) weiter, die der Wine-Treiber liest/schreibt.
netsh.exe / netsh64.exeErsetzt Wines netsh-Stub (32-Bit in SysWOW64, 64-Bit in System32). Übersetzt Windows-netsh interface ip-Befehle in Linux-ip addr/ip link-Befehle über ein dateibasiertes Relay und validiert die Adresse, bevor sie das Root-Relay erreicht.
rvpn_launcher.exeInjiziert adapter_hook.dll in den Radmin-Dienstprozess über CreateRemoteThread + LoadLibrary.
drvinst.exeNo-op-Stub, der Radmins echten NDIS-Treiberinstaller ersetzt. Radmin führt ihn zur Laufzeit aus, um NetMP60_1_1_64.sys zu laden, das Wine 11.x über NdisInitializeReadWriteLock abbricht (Issue #12); da unser Treiber diesen Adapter bereits ersetzt, darf der echte niemals geladen werden.
rvpn_dnsfix.soNativer LD_PRELOAD-Shim, nur in den Dienststart injiziert. Kurzschließt Reverse-DNS (getnameinfo/gethostbyaddr) privater IPv4/IPv6 auf der glibc-Ebene. Radmin führt PTR-Auflösungen für jede gesammelte lokale Kandidatenadresse durch; auf einem Host, dessen Resolver RFC1918-PTR-Abfragen blockiert, dauert das Minuten und der Dienst registriert sich, wird aber nie bereit (Issue #16). Die Abfrage wird von Wines Unix-Seite ausgeführt und ist für jeden Hook innerhalb von adapter_hook.dll unerreichbar.
rvpn_reuseport.soNativer LD_PRELOAD-Shim, in wineserver vorgeladen (nicht in den Dienst – die Unix-Sockets gehören wineserver). Setzt SO_REUSEPORT auf jedem TCP-Socket bei der Erstellung. Radmin 2.1 führt TCP-Port-Reuse-NAT-Traversal durch: Es bindet einen Listener an uplink:PORT, bewirbt diese Zuordnung und bindet dann seine ausgehenden Peer-Sockets mit SO_REUSEADDR an denselben lokalen Port, was Windows erlaubt. Wine übersetzt diese Anfrage in keine Unix-Ebene-Option für TCP (server/sock.c, SO_REUSEPORT ist nur für __APPLE__ kompiliert), sodass der Kernel die zweite Bindung verweigert und der Client bei jeder Peer-Verbindung WSAEACCES sieht (Issue #24). Wineservers eigene Konfliktbuchhaltung läuft weiterhin, sodass Bindungen, die Windows verweigern würde, weiterhin verweigert werden.
rvpn_filter_uiOptionale GTK4-Oberfläche zum Inspizieren und Filtern der Pakete, die die Brücke überqueren. Standardmäßig deaktiviert; Start mit --filter-ui.

Fehlerbehebung

GUI hängt bei „Warten auf Adapter": Der Treiber lädt nicht. Prüfen Sie, ob /tmp/radmin_driver.log existiert und Inhalt hat. Wenn leer, fehlt möglicherweise die Treiberdienstregistrierung – löschen Sie das wineprefix und führen Sie es erneut aus.

Registriert, aber nie „bereit": Der Dienst erreicht Registered as #… und stoppt dort. Zwei bekannte Ursachen, beide vom Diagnoseblock gemeldet, der bei Timeout gedruckt wird. (a) Ein transparenter Proxy oder Tunnel mit eigener Routing-Policy (sing-box, clash/mihomo, v2ray…), der die ausgehende Verbindung abfängt – solche Stacks beantworten den TCP-Handshake lokal, sodass der Socket ESTABLISHED liest, während nichts weitergeleitet wird. Schließen Sie 26.0.0.0/8 von seinen Routen aus und auch *.radminte.com, falls Sie diese direkt erreichen können. (b) Ein Resolver, der Reverse-Lookups privater Adressen blockiert (ein docker0 bei 172.17.0.1 ist der übliche Auslöser). rvpn_dnsfix.so behandelt dies, aber es ist ein 64-Bit-Shim: Ein System-Wine, das als old-wow64 gebaut wurde, ignoriert ihn. Workaround dort – fügen Sie eine Zeile für die Adresse zu /etc/hosts hinzu oder verwenden Sie contrib/run-in-netns.sh (das den Dienst zu „bereit" bringt, aber das VPN in einem Namespace hält: Host-Anwendungen können 26.0.0.0/8 nicht erreichen, lesen Sie die Warnung in seinem Header).

Ihre anderen Wine-Apps sind nach der Ausführung von Radmin kaputt (unimplemented function ndis.sys.NdisInitializeReadWriteLock): Versionen bis 1.0.0 ließen Wines winemenubuilder.exe laufen, das die Windows-Dateizuordnungen des Hosts (.exe, .msi, .lnk, .reg, .chm, …) neu schreibt, sodass sie in unserem Prefix geöffnet werden. Andere Windows-Programme starten dann im Radmin-Prefix, und wenn Radmins echter NDIS-Miniport (RvNetMP60) dort noch registriert ist, bricht jedes von ihnen an diesem ndis-Stub ab. 1.0.1 deaktiviert winemenubuilder überall, entfernt die Einträge, die es für ein Radmin-Prefix geschrieben hat, und entfernt RvNetMP60 offline aus system.reg – führen Sie 1.0.1 einfach einmal aus und beide werden repariert. Beachten Sie, dass echo $WINEPREFIX in dieser Situation nichts anzeigt: Die Entführung lebt in ~/.local/share/applications/*.desktop, nicht in Ihrer Umgebung. Manuelle Bereinigung, falls bevorzugt:

grep -rl 'WINEPREFIX=[^"]*radmin' ~/.local/share/applications --include='*.desktop' | xargs -r rm
rm -rf ~/.local/share/applications/wine/Programs/"Radmin VPN"
update-desktop-database ~/.local/share/applications

Online und in Ihren Netzwerken, aber kein Peer verbindet sich jemals (error: 0x700000000): Das ist Radmin 2.1 auf einem Build älter als 1.1.0. Das Dienst-Log sieht bis zu den Peer-Verbindungen gesund aus, die dann in einer Schleife mit diesem Code fehlschlagen und schließlich mit node offline aufgeben. Zwei unabhängige Wine-Lücken, beide in 1.1.0 behoben und beide oben in den Zeilen rvpn_reuseport.so und adapter_hook.dll erklärt: Wine setzt keine Unix-Ebene-Option für ein TCP-SO_REUSEADDR, sodass 2.1s Port-Reuse-NAT-Traversal bei jeder Peer-Verbindung WSAEACCES erhält; und Wines advapi32 fehlen vier perflib-Exporte, ohne die 2.1 eine Null-Nutzlast als Peer-Handshake sendet. Beachten Sie, dass der Code selbst keine Informationen trägt – es ist das generische Aufgeben am Ende der Fehlerkaskade, also versuchen Sie nicht, ein Subsystem daraus abzuleiten. Die Lösung besteht darin, dieses Projekt auf 1.1.0 zu aktualisieren; auf der Radmin-Seite muss nichts geändert werden.

Dienst stirbt sofort: Prüfen Sie /tmp/radmin_service.log auf Wine-Fehler. Häufige Ursache: altes wineprefix von einer anderen Wine-Version. Löschen Sie ./wineprefix/ und führen Sie es erneut aus.

0 % Paketverlust mit einem Peer, hoher Verlust mit vielen: Das war der ursprüngliche Fehler – behoben durch MAC-basiertes Frame-Routing im Treiber. Stellen Sie sicher, dass Sie den neuesten Build verwenden.

Erster Ping ist langsam (~1s): Die neueste Version cached MAC-Adressen für jedes IP-Paket, das der Treiber sieht. Wenn die Ziel-IP mindestens ein Paket gesendet hat, während der Treiber lief, ist die MAC bereits gecacht und es gibt keine ARP-Verzögerung. Nur völlig stille Peers (die nie ein Paket gesendet haben) erfordern die anfängliche ARP-Auflösung, die ~1 Sekunde hinzufügt.

LAN-Spiele sehen andere Peers nicht / „Auto-Discovery" kaputt: Die meisten LAN-Spiele finden sich über Broadcast-Probes (UDP an 255.255.255.255) oder Multicast (224.0.0.0/4). Unter Windows bewirbt sich der Radmin-TAP-Treiber als bevorzugte Schnittstelle für diese Flows; unter Linux müssen Sie dem Kernel dies explizit mitteilen. run.sh installiert jetzt zwei zusätzliche Routen, wenn das VPN hochkommt:

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

Nebeneffekt: mDNS / Bonjour / SSDP in Ihrem physischen LAN (Chromecast, AirPrint, Sonos, Smart-TVs, ...) laufen durch das VPN, solange es aktiv ist. Wenn Sie lokale LAN-Erkennung und Radmin parallel benötigen, führen Sie mit --no-broadcast-routes aus:

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

Die Routen sind auf das TAP-Gerät beschränkt und werden daher automatisch entfernt, wenn run.sh das Gerät beim Beenden abbaut.

Bekannte Einschränkungen

  • Es kann nur eine Instanz gleichzeitig laufen (gemeinsame FIFOs in /tmp/)
  • Die 26.0.0.0/8-On-Link-Route betrifft das gesamte System während der Ausführung (wird beim Beenden bereinigt)
  • Standard-Broadcast- (255.255.255.255/32) und Multicast-Routen (224.0.0.0/4) werden zum VPN geleitet – mit --no-broadcast-routes deaktivieren, wenn Sie lokales LAN-mDNS / SSDP parallel benötigen
  • Ältere Wine-Versionen (< 11.0) können ein anderes überlappendes E/A-Verhalten aufweisen, das den Treiber bricht

Hinweise

Wine-Fehler-Workaround. Der RegSetKeySecurity-Hook umgeht eine bekannte Wine-Einschränkung, bei der Dienste die SYSTEM-SID (S-1-5-18) nicht erhalten. Dies könnte in einer zukünftigen Wine-Version upstream behoben werden.

Danksagungen

Reverse Engineering und der Wine-Shim: @baptisterajaut.

  • @ayozetr – hat den „registriert, aber nie bereit"-Hänger auf eine Reverse-DNS-Abfrage einer privaten Adresse zurückgeführt, die vom Host-Resolver blockiert wurde, hat es mit einem Bare-libc-Repro bewiesen, nachdem vier falsche Theorien verworfen worden waren (meine eingeschlossen), und hat das Original von src/rvpn_dnsfix.c und contrib/run-in-netns.sh geschrieben.
  • @gringoestrangeiro – Linux-Stabilitätsarbeit: Paketfilter, ARP-Cache, Crash-Recovery, Headless- und Rechenzentrumsmodi.
  • @yuxiaole-bili – hat herausgefunden, dass Wines SCM automatisch eine zweite, ungehookte Dienstinstanz startet, die mit der injizierten um den Adapter kämpft.
  • @D1spell-tech, @Milkiway13 und alle, die einen vollständigen Diagnoseblock eingefügt haben – zwei unabhängige Hosts sind es, die einen Fehler auffindbar machen.

Lizenz

GPL-3.0. Siehe LICENSE.

Im Geiste ist dieser Code Public Domain – tun Sie damit, was Sie wollen. Die GPL ist hier als rechtliches Sicherheitsnetz: Sie schützt ausdrücklich Reverse Engineering für Interoperabilität, was dieses Projekt tut. Gürtel und Hosenträger.

Radmin VPN ist proprietäre Software von Famatech Corp. Dieses Projekt stellt nur Interoperabilitätswerkzeuge bereit – kein Famatech-Code ist enthalten oder wird verteilt.

Kategorien