CLIツール
Devolutions/IronRDP avatar
Devolutions/IronRDP

IronRDP: Sans-I/O設計で組み立てるRust製RDPプロトコル実装

Microsoft リモート デスクトップ プロトコル (RDP) の Rust 実装。

スター 3,176フォーク 273RustApache-2.0
GitHub

ひと目でわかる

これは何?
Windows Remote DesktopのプロトコルをRustで実装し、クライアント、サーバー骨格、WebAssembly、C#バインディングを分割提供します。
誰に向いている?
IronRDPは、RDPの接続処理や画像・チャネル機能をRustアプリケーションへ組み込み、I/O層を自分のランタイムで制御したい開発者向けです。導入前にcargo install ironrdp-viewerまたはironrdp-agentを試し、.rdpファイル、NLA、TLS、スクリーンショット、IPCの秘密情報処理を実ホストへ接続しない検証環境で確認してください。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に Rust です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

単一クライアントではないプロトコルスイート

IronRDPは、Microsoftリモートデスクトッププロトコルをまとめて実装するRustクレートの集合として構成されています。コアプロトコルクレートはそれ自体でI/Oを実行せず、PDUのエンコードとデコード、接続とセッション状態の管理を行うステートマシンです。このI/Oなしの設計により、ブロッキングスレッド、tokio、futures、カスタムイベントループなど、好みのランタイムからドライブできます。コアクレートはno_std互換で、継続的にファジングされています。これは、リモート入力の解析がセキュリティに敏感な面であることを考慮した意図的な選択です。IronRDPは特定のトランスポートやスレッドモデルを強制せず、ソケット、タイマー、スケジューリングを提供するのはあなたです。プロトコルロジックはクレートスイートが処理します。

プロトコル、グラフィックス、仮想チャネル

機能リストは広範囲にわたります。プロトコル側では、IronRDPはX.224ネゴシエーション、MCS、能力交換、ライセンス、再アクティブ化を含むRDP接続シーケンスを実装しています。セキュリティは、TLS 1.2および1.3を備えた拡張RDPセキュリティ、NTLMとKerberosを備えたCredSSPによるネットワークレベル認証、KDCプロキシとRDCleanPathのサポート、ターミナルサービスゲートウェイトランスポートによって提供されます。グラフィックスでは、クレートスイートには、非圧縮の生ビットマップ、インターリーブRLE、RDP 6.0ビットマップ圧縮、RemoteFXのデコーダが含まれています。サーバー側のエンコーディングは、RDP 6.0圧縮、RemoteFX、オプションのNSCodec、オプションのQOI/QOI+zstdをカバーしています。仮想チャネルサポートには、静的および動的チャネル、クリップボードリダイレクト、オーディオ出力、デバイスリダイレクト、ディスプレイ制御などが含まれます。また、Windows DVC COMプラグインローダーと、外部プロセスをブリッジするための名前付きパイププロキシもあります。これは単一の機能ではなく、フィーチャーフラグの背後にある独立したクレートのコレクションであり、アプリケーションに必要なものだけを含めることができます。

すぐ使える2つのバイナリ

リポジトリは、GitHubリリースに添付されたプリビルドアーカイブとして配布され、Cargoでもインストールできる2つのコマンドラインバイナリを提供します。ironrdp-viewerは、非同期I/Oとソフトウェアレンダリングを使用するウィンドウ付きRDPクライアントです。ホスト名と資格情報で起動するか、--rdp-fileで.rdpファイルを指定できます。ログはIRONRDP_LOG環境変数で制御されます。ironrdp-agentは、スクリプトと自動化用に設計されたデーモンベースのCLIです。daemon-startでデーモンを起動し、connectやscreenshotなどの短命なコマンドを発行します。デーモンはオーバーレイファイルから資格情報をプリロードして、シークレットをIPC呼び出し元から分離できます。両方のバイナリはネイティブオーディオにリンクしているため、LinuxビルドにはALSA開発ヘッダーが必要で、WindowsビルドにはNASMが必要です。READMEは、ビューアが特定の.rdpプロパティとTLSキーロギングをサポートしていることに言及しており、詳細はビューア自身のREADMEにあります。

ライブラリとしてクレートを使用する

ライブラリとして使用する場合、メタクレートironrdpはフィーチャーフラグの背後でサブシステムクレートを公開します。たとえば、features = ["connector", "session", "graphics"] のironrdpを追加すると、接続ステートマシン、セッション管理、画像デコードが得られます。各機能は個別のクレートにマップされるため、ironrdp-pdu、ironrdp-connector、ironrdp-sessionに直接依存することもできます。リポジトリには、ブロッキングI/Oを使用して接続、デスクトップのデコード、PNGの書き込みを行うスクリーンショットツールと、ironrdp-serverに基づくローカルアドレスにバインドする最小限のRDPサーバーの2つの実行可能な例が含まれています。READMEはAPIドキュメントをdocs.rsにリンクしています。例の依存関係スニペットではバージョン0.17が参照されていますが、リポジトリのメタデータはこれが現在のリリースであることを確認していません。

セキュリティと正確性の実践

READMEは、解析を敵対的な入力面として扱うことを明示しています。すべてのコアクレートはファジングされ、unsafeコードは厳重にlintされ、ワークスペースは厳格な正確性lintポリシーを強制します。プロジェクトはまた、保守的な最小サポートRustバージョンポリシーに従っています。MSRVは少なくとも6か月前の安定版Rustであり、Debian stable-backportsとFedora stableで利用可能なバージョンによって制限されます。rust-toolchain.tomlで固定されたツールチェーンは、プロジェクトツールチェーンであり、CIによって検証されたMSRVです。これらの詳細はポリシーとして提示されており、セキュリティの保証としてではありません。READMEは、実践を説明する以外にセキュリティ上の主張をしていません。

既知の導入事例

いくつかのプロジェクトがIronRDPのユーザーとしてリストされています。Devolutions Gatewayは、ブラウザベースおよびネイティブのRDPクライアントアクセスに使用しています。Cloudflare AccessはブラウザベースのRDP用にリストされており、Cloudflareのブログ投稿へのリンクがあります。TeleportはリモートデスクトップWebアクセスに使用しています。Lamco RDP ServerはLinux向けのWaylandネイティブRDPサーバーです。MacRDPはmacOS向けのネイティブRDPサーバーです。qemu-rdpはQEMUディスプレイ用のRDPサーバーです。READMEはまた、成長しているコミュニティプロジェクトのセットにも言及しています。このリストは既知の統合の表明であり、推奨や本番対応の尺度ではありません。

開発ワークフローと貢献

貢献ガイドラインはARCHITECTURE.mdとSTYLE.mdを指しています。プロジェクトは自動化にcargo xtask規約を使用しています。cargo xtask --helpを実行すると利用可能なタスクが一覧表示され、cargo xtask bootstrapが開発要件をインストールし、cargo xtask ciはFFIと.NETチェックを除くすべてのCIチェックを実行します。FFIと.NETチェックには独自のcargo xtask ffiコマンドがあります。ワークスペースのビルドには、LinuxではALSA開発ヘッダー、WindowsではNASMが必要です。WebクライアントにはさらにNode.js >= 24 LTSが必要で、FFIバインディングには.NET SDKが必要です。READMEはまた、思慮深く使用する場合のAI支援開発を奨励し、Windowsプロトコルスキル(Microsoft Open SpecificationsコーパスをナビゲートするAIエージェントを支援)を指しています。バグレポートはイシュートラッカーに送られ、ディスカッションはMatrixルームで行われます。

編集部の結論

IronRDPは、RDPの接続処理や画像・チャネル機能をRustアプリケーションへ組み込み、I/O層を自分のランタイムで制御したい開発者向けです。導入前にcargo install ironrdp-viewerまたはironrdp-agentを試し、.rdpファイル、NLA、TLS、スクリーンショット、IPCの秘密情報処理を実ホストへ接続しない検証環境で確認してください。ライブラリ利用ではironrdpのfeature指定が依存関係を左右するため、connector、session、graphicsを使う最小例をビルドし、対象プラットフォームとMSRVの条件を固定して評価します。

公式情報源

  1. Official README
  2. Project repository
  3. Release notes
コミュニティノート

コミュニティノート