
Radmin VPN を Linux で Wine 経由で実行 — カスタムドライバー、TAP ブリッジ、パケットロスゼロ
Radmin VPNをWine経由でLinux上で実行します。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
最新リリースから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インストーラをダウンロードします(または--installerで独自のものを指定)。進捗表示付きのターミナルが開き、TAPセットアップ用にsudoパスワードの入力が1回求められます。
永続状態(wineprefix、MAC、ログ)は~/.local/share/radmin-vpn-linux/に保存されます。
Radminが自動で終了する場合? 独自のアップデータが実行中のプレフィックス内に新しいビルドをインストールしています。代わりに制御された方法でアップグレードしてください——プレフィックスとRadmin IDは保持されます:
./RadminVPN-Linux-x86_64.AppImage --updateその後、Radminの設定で「自動更新」をオフにして、再試行を防いでください。詳細はRadmin独自の自動アップデータを参照してください。
i686-w64-mingw32-gcc、x86_64-w64-mingw32-gcc)——ソースからのビルド用modprobe tunで確認lib.sh内のRADMIN_VERSIONという1箇所に固定されています(現在は2.1.4951.1;2.0.4899.9も動作します)。Radmin VPN 1.4はサポートされていません——登録とアダプタのオープンは行われますが、Wineシムの下では接続が完了せず、GUIが「接続中...」で停止したままになります。sudo pacman -S wine mingw-w64-gcc
sudo apt install wine64 wine32 gcc-mingw-w64
git clone https://github.com/baptisterajaut/radmin-vpn-linux.git
cd radmin-vpn-linux
# オプションA: 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/
# オプションB: ソースからビルド
make
# https://www.radmin-vpn.com/ からRadmin VPNインストーラをダウンロード
./run.sh --installer ~/Downloads/Radmin_VPN_*.exe
以降の実行では、単に:
./run.sh
| フラグ | 説明 |
|---|---|
--installer <path> | Radmin_VPN_*.exeインストーラへのパス(初回のみ)。 |
--no-ui | Radmin GUIを起動せずにサービスを実行。 |
--update | Radminを固定バージョンにその場でアップグレード。プレフィックスを保持するため、Famatechに登録されたRIDは維持されます。 |
--no-broadcast-routes | ブロードキャスト/マルチキャスト→TAPルートを追加しない。 |
--filter-ui | オプションのGTK4パケットフィルタUIを起動(デフォルトではオフ)。 |
--fix-chat | Qtのqwindows.dllにパッチを適用してWineでのチャットウィンドウクラッシュを修正(デフォルトではオフ)。 |
RadminのGUIは新しいビルドをダウンロードし、実行中のプレフィックス内でインストーラを実行できます。これによりGUIが強制終了され、実行中のサービスに障害が発生します(GUIログにはAppData\\Local\\Temp配下のインストーラが表示されます)。防御策は2つ:ランチャーが現在の検証済みビルドを同梱しているためアップデータがプッシュするものがないこと、そして終了したGUIがトンネルを道連れにしなくなったことです——一度再起動され、その後VPNはヘッドレスで実行を継続します。意図的にアップグレードするには、まずすべてを停止する./run.sh --updateを使用してください。GUI設定で「自動更新」をオフにすると、競合を完全に回避できます。
--filter-uiと--fix-chatはどちらもオプトインです。フィルタUIにはrvpn_filter_uiバイナリ(makeでビルド)が必要です。チャット修正にはpatch_qwindows_font.pyとPython 3インタプリタが必要です。
ローカルデスクトップなしでRadmin VPNを実行するための追加ランチャーが2つあります——VPSやデータセンターホスト用です。どちらもrun.shとまったく同じようにインストールおよび設定されます(同じwineprefix、同じ--installer初回フロー、同じTAPブリッジ)。GUIへのアクセス方法のみが異なります。
run_datacenter.sh — ブラウザ経由のGUI仮想ディスプレイ(Xvfb)上で実際のRadmin GUIを実行し、VNC + noVNC経由で提供します。ブラウザからネットワークを設定し、そのまま実行を継続できます。
sudo apt install -y xvfb x11vnc websockify novnc # または: make install-datacenter-deps
./run_datacenter.sh --installer ~/Downloads/Radmin_VPN_*.exe
| フラグ | デフォルト | 説明 |
|---|---|---|
--vnc-port <n> | 5900 | x11vncサーバーのポート。 |
--web-port <n> | 6080 | noVNC Webエンドポイントのポート。 |
--vnc-password <pw> | (なし) | VNC / Webセッションのパスワード。 |
--web-bind <addr> | 127.0.0.1 | noVNCがリッスンするアドレス。 |
デフォルトではnoVNCは127.0.0.1にバインドされるため、SSHトンネル経由でのみ到達可能です:
ssh -L 6080:localhost:6080 your-vps # その後 http://localhost:6080/vnc.html を開く
公開するには、--web-bind 0.0.0.0を--vnc-passwordと一緒に渡してください——そうしないと、Webポートに到達した誰もが認証なしのroot権限を持つデスクトップにアクセスできてしまいます。スクリプトは、パスワードなしで公開バインドした場合に大きな警告を表示します。
run_vps.sh — サービスのみ、固定GUIDハードコードされたTAP GUID(Wine WMI不要)でサービスをヘッドレスで起動し、GUIは一切ありません。カスタムネットワーク列挙子(rv_net_enum.exe、このリポジトリには同梱されていません)が1つ上のディレクトリに存在する場合は起動されます。それ以外の場合は、Ctrl+Cするまでサービスが実行されます。--installerのみ受け付けます。
./run_vps.sh --installer ~/Downloads/Radmin_VPN_*.exe
mingw-w64クロスコンパイラが必要です。ビルド済みバイナリはReleasesから入手できます(各タグ付きバージョンでCIによってビルドされます)。mingwをインストールしたくない場合はそちらを使用してください。
make # すべてをbuild/にビルド
make clean # ビルド成果物を削除
生成物:
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 — Radminの実際のNDISドライバインストーラを置き換えるno-opスタブ(issue #12)build/tap_bridge — ネイティブLinux TAPブリッジbuild/rvpn_dnsfix.so — ネイティブLD_PRELOADシム、サービスのみにプリロードbuild/rvpn_reuseport.so — ネイティブLD_PRELOADシム、wineserverにプリロードbuild/rvpn_filter_ui — オプションのGTK4パケットフィルタUI(--filter-ui)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の動作/VERYSILENT)、実際のNDISドライバを削除(Wineと互換性がないため)、カスタムドライバを登録wineprefixは./wineprefix/(ソース実行)または~/.local/share/radmin-vpn-linux/wineprefix/(AppImage)に保存されます。永続的なMACアドレスは初回実行時に生成され、wineprefixに保存されます。