Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
radmin-vpn-linux — Radmin VPN unter Linux über Wine ausführen — benutzerdefinierter Treiber, TAP-Brücke, kein Paketverlust | Kitploit
Tools/GitHubGitHub/baptisterajaut/radmin-vpn-linux
Laterale BewegungReverse EngineeringNetzwerksicherheitPenetrationstestsDienstprogramme & FrameworksHardware- & IoT-SicherheitBinäranalyseRed Teaming
GitHubbaptisterajaut/radmin-vpn-linux

radmin-vpn-linux

Radmin VPN unter Linux über Wine ausführen — benutzerdefinierter Treiber, TAP-Brücke, kein Paketverlust

Repository anzeigen
1439124vor 1 MonatVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
# Radmin VPN für Linux

Führen Sie [Radmin VPN](https://www.radmin-vpn.com/) 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](https://www.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](https://github.com/baptisterajaut/radmin-vpn-linux/releases/latest). 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](https://github.com/baptisterajaut/radmin-vpn-linux/releases).

```bash
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:
> ```bash
> ./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](#radmins-eigener-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

```bash
sudo pacman -S wine mingw-w64-gcc
```

### Ubuntu/Debian

```bash
sudo apt install wine64 wine32 gcc-mingw-w64
```

## Schnellstart aus dem Quellcode

```bash
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:

```bash
./run.sh
```

### Befehlszeilenoptionen

| Flag | Beschreibung |
|------|-------------|
| `--installer <path>` | Pfad zum `Radmin_VPN_*.exe`-Installationsprogramm (nur beim ersten Lauf). |
| `--no-ui` | Dienst ohne Start der Radmin-GUI ausführen. |
| `--update` | Radmin an Ort und Stelle auf die festgelegte Version aktualisieren. Behält das Prefix, sodass die bei Famatech registrierte RID erhalten bleibt. |
| `--no-broadcast-routes` | Die Broadcast/Multicast-→-TAP-Routen nicht hinzufügen. |
| `--filter-ui` | Die optionale GTK4-Paketfilter-Oberfläche starten (standardmäßig deaktiviert). |
| `--fix-chat` | `qwindows.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.

```bash
sudo apt install -y xvfb x11vnc websockify novnc   # oder: make install-datacenter-deps
./run_datacenter.sh --installer ~/Downloads/Radmin_VPN_*.exe
```

| Flag | Standard | Beschreibung |
|------|---------|-------------|
| `--vnc-port <n>` | `5900` | Port für den x11vnc-Server. |
| `--web-port <n>` | `6080` | Port für den noVNC-Web-Endpunkt. |
| `--vnc-password <pw>` | *(keiner)* | Passwort für die VNC-/Web-Sitzung. |
| `--web-bind <addr>` | `127.0.0.1` | Adresse, auf der noVNC lauscht. |

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

```bash
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.

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

## Build aus dem Quellcode

Erfordert `mingw-w64`-Cross-Compiler. Vorgefertigte Binärdateien sind von [Releases](https://github.com/baptisterajaut/radmin-vpn-linux/releases) verfügbar (von CI bei jeder getaggten Version erstellt), falls Sie mingw nicht installieren möchten.

```bash
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

```bash
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

| Komponente | Beschreibung |
|---|---|
| `rvpnnetmp.sys` | Wine-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.dll` | Begleit-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_bridge` | Natives 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.exe` | Ersetzt 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.exe` | Injiziert `adapter_hook.dll` in den Radmin-Dienstprozess über `CreateRemoteThread` + `LoadLibrary`. |
| `drvinst.exe` | No-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.so` | Nativer `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.so` | Nativer `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_ui` | Optionale 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:

```bash
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:

```bash
./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](https://forum.winehq.org/viewtopic.php?t=37183), 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](https://github.com/baptisterajaut).

- [@ayozetr](https://github.com/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](https://github.com/gringoestrangeiro) – Linux-Stabilitätsarbeit: Paketfilter, ARP-Cache, Crash-Recovery, Headless- und Rechenzentrumsmodi.
- [@yuxiaole-bili](https://github.com/yuxiaole-bili) – hat herausgefunden, dass Wines SCM automatisch eine zweite, ungehookte Dienstinstanz startet, die mit der injizierten um den Adapter kämpft.
- [@D1spell-tech](https://github.com/D1spell-tech), [@Milkiway13](https://github.com/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](https://github.com/baptisterajaut/radmin-vpn-linux/blob/main/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.
Tool herunterladen