リモートデスクトップに関して、ブロガーは以前 TeamViewer を使用していましたが、公式が商用利用に対してさまざまな制限を設けたため、国産の ToDesk に切り替えました。しかし最近 ToDesk も強制ログインやさまざまな制限を始めました。最近、Rustdesk がオープンソースモードに移行したのを見て、使い方を試してみたところ、体験は本当に素晴らしいものでした〜
一、ソフトウェアの概要#
RustDesk は、その名の通り、高効率な Rust 言語を基に構築されたオープンソースのリモートデスクトップツールです。このツールは最初に V2EX で見かけましたが、その時は自分でサーバーを構築するには 100 ドルのライセンスを購入する必要があり、デモは最も基本的な機能しか実現できず、内蔵のサーバーは海外にあるようで、生産性ソフトウェアとして使用することはできませんでした。
最近、グループの友人が RustDesk について言及しているのを見て、RustDesk がサーバーをオープンソース化し、自分で中継サーバーを構築できるようになったことを発見しました。学期が始まって以来、ブロガーはリモートデスクトップソフトウェアを頻繁に使用しています。なぜなら、オフィスにいなくてもオフィスのコンピュータで会議を録画したり、ファイルを受け取ったり、オンライン授業を受けたりする必要があるからです。昨年からブロガーは ToDesk を使用していましたが、最近のいくつかの新しいバージョンでは、強制ログインに加えて Android の被制御に対する制限が追加され、無料版は 1 台のデバイスのみサポートされ、1 か月に 1 回しか変更できません。ソフトウェア自体にも小さなバグがあり、スマートフォンを主制御として使用しているときに接続が切れ、アプリをバックグラウンドに置いてしばらくすると、再度開くと「アカウントがログインしていません」と表示され、ソフトウェアを再起動しないと正常にアカウント内のコンピュータを制御できません。
ここ数日、ブロガーが RustDesk を使用している利点を簡単にまとめると:
(1)軽量: サーバーでもクライアントでも、どのプラットフォームでも、ソフトウェアは小さく、機能が充実しています。
(2)全プラットフォームサポート: Android、Linux、Windows の双方向制御をサポートしています。
(3)安全で制御可能: ソフトウェアはオープンソースで、サーバーは自分で構築でき、通信は暗号化されています。
(4)帯域幅効率: 2-3M の帯域幅で 1080P をスムーズに実現し、TCP 打穴のエンドツーエンド P2P 接続をサポートします。
二、準備作業#
日常使用する主制御、被制御のスマートフォンとコンピュータの他に、準備するのはサーバー 1 台だけです。
三、サーバーの構築#
Rustdesk 公式はdockerを使ったデプロイ方法を提供しており、サーバーを簡単に構築できます。しかし、この記事では手動設定の方法を重視して記録します。Rustdesk 自体はハードウェア要件が非常に低いため、その利点を最大限に示す必要があります。
公式ドキュメント :クリックして移動
Rustdesk のサーバー(すなわち中継サーバー)は、最低 3 つのポートが必要で、プログラムは Web 端のリモートデスクトップを実現するために他の 2 つを占有します(参考:クリックして移動)。公式ドキュメントでは各ポートの用途の説明が簡略で、以下の表は簡単な概要です。Rustdesk サーバーのカスタムポート設定は、アンカーを指定して - 1、+2 を通じて生成されるため、自由に 5 つのポートを指定するわけではありません。
ポート番号 | プロトコル | プログラム | 用途 | アンカー |
---|---|---|---|---|
21115 | tcp | HBBS | NAT タイプテスト | |
21116 | tcp/udp | HBBS | TCP 打穴と接続サービス / UDP ID 登録とハートビートサービス | HBBS アンカー |
21117 | tcp | HBBR | 中継サービス | HBBR アンカー |
21118 | tcp | HBBS | WebSocket サービス | |
21119 | tcp | HBBR | WebSocket 転送 |
HBBR、HBBS サーバーの 64 ビット Windows/Linux のプリコンパイルパッケージは GitHub Release から入手できますが、他のアーキテクチャはソースコードをクローンして cargo でコンパイルする必要があります(公式ドキュメント)。構築中に問題が発生した場合は、コメント欄にメッセージを残していただければ、ブロガーが協力したり、この記事を改善したりできます。
GitHub プリコンパイルパッケージ :クリックして移動
公式のドキュメントでは PM2 をプロセス管理に使用することを推奨していますが、軽量なリモートデスクトップツールのために Node.js ツールをインストールするのは少し不適切だと感じています。ブロガーは systemd を使用してプロセス管理と自動起動を実現することをお勧めします。
HBBS#
解凍した hbbs ファイルにchmod +x hbbs
を実行して実行権限を付与し、最初に./hbbs
を実行してクライアント認証に使用する公開鍵id_ed25519.pub
を生成します。その後、cat id_ed25519.pub
コマンドを使用して公開鍵を確認し、メモします。次に、お好きなエディタで/etc/systemd/system/hbbs.service
を編集し、以下の設定を必要に応じて変更して保存します。この時、強制的に鍵を検証するために-k _
パラメータを起動コマンドに書き込む必要があります。
⚠警告:ブロガーは
-k
パラメータの設定を強く推奨します。そうしないと、hbbs はクライアントの鍵が正しいかどうかを強制的に検証せず、転送サーバーが匿名で使用される可能性があります!
1234567891011121314151617181920 | # systemd 設定パス# /etc/systemd/system/hbbs.service [Unit]Description=RustDeskServiceAfter=network.target [Service]Type=simpleUser=rootRestart=on-failureRestartSec=5s#実行パスの設定WorkingDirectory=/プログラムパス/rustdesk#変更可能なアンカーポート、現在は 21116(アンカー)と 21115(アンカー - 1)および 21118(アンカー + 2)#-r はネットワークインターフェースの IP を指定するために使用され、-k パラメータはクライアントの公開鍵を強制的に検証するために使用され、未承認の使用を防ぎますExecStart=**/プログラムパス/**rustdesk/hbbs-r0.0.0.0-p21116-k_ **[Install]**WantedBy=multi-user.target |
---|
HBBR#
解凍した hbbr ファイルにchmod +x hbbr
を実行して実行権限を付与し、お好きなエディタで/etc/systemd/system/hbbr.service
を編集し、以下の設定を必要に応じて変更して保存します。同様に、鍵の検証を-k _
パラメータで起動コマンドに書き込みます。
hbbr.service
1234567891011121314151617181920 | # systemd 設定パス# /etc/systemd/system/hbbr.service [Unit]Description=RustDeskServiceAfter=network.target [Service]Type=simpleUser=rootRestart=on-failureRestartSec=5s#実行パスの設定WorkingDirectory=/プログラムパス/rustdesk#変更可能なアンカーポート、現在は 21117(アンカー)と 21119(アンカー + 2)#-k パラメータはクライアントの公開鍵を強制的に検証するために使用され、未承認の使用を防ぎますExecStart=**/プログラムパス/**rustdesk/hbbr-p21117-k_ **[Install]**WantedBy=multi-user.target |
---|
このプロセスを簡素化するために、解凍したプリコンパイルのhbbr
、hbbs
を/home/rustdesk
フォルダに置き、以下の 2 つの txt の内容を直接実行することでサービスを作成できます(クリックして移動)。.service
が設定されたら、service hbbs start
とservice hbbr start
を使用してこれらのサービスを起動できます。起動後、service hbbs status
とservice hbbr status
を使用してプロセスの実行状態を確認でき、緑色の Active が表示されれば問題ありません。
すべての準備が整ったら、systemctl enable hbbs
とsystemctl enable hbbr
を使用して、これらを自動起動できるようにします。最後にポートの開放ですが、iptables
、firewalld
、ufw
のコマンドはそれぞれ以下の通りで、ポートは設定に応じて開放してください(デフォルト 21115-21117)。ここで注意が必要なのは、hbbs のアンカーポートは tcp と udp の両方を同時に開放する必要があります。WEB 端は現在テスト中で、ブロガーは一時的にこのニーズがないため、試していません。良い実践があれば、コメント欄で経験を共有してください〜
ポート開放
Shell
123456789101112131415161718 | #CentOS firewalldfirewall-cmd--zone=public--add-port=21115/tcp--permanentfirewall-cmd--zone=public--add-port=21116/tcp--permanentfirewall-cmd--zone=public--add-port=21116/udp--permanentfirewall-cmd--zone=public--add-port=21117/tcp--permanent #Debian/Ubuntu ufwufwallow21115/tcpufwallow21116/tcpufwallow21116/udpufwallow21117/tcp #iptablesiptables-IINPUT1-ptcp--dport21115-jACCEPTiptables-IINPUT1-ptcp--dport21116-jACCEPTiptables-IINPUT1-pudp--dport21116-jACCEPTiptables-IINPUT1-ptcp--dport21117-jACCEPTiptables-save// 保存(再起動後の無効を解決) |
---|
四、クライアントの設定#
新しいバージョンのサービスでは、hbbs/hbbr の実行ディレクトリでcat id_ed25519.pub
を実行すると、クライアントとサーバーの認証に使用する公開鍵を得ることができます(画像の操作に誤りがあり、作者に感謝します)。
Rustdesk クライアントで、【ID / 中継サーバー】オプションを見つけて、構築した hbbs/hbbr のサーバーに設定します(公式ドキュメント)。
最初の項目 ID サーバーには【IP:ポート
】の形式でサーバーサーバーIP
とhbbsアンカーポート
を記入し、2 番目の項目も同様の形式でサーバーIP
とhbbrアンカーポート
を記入します。4 番目の Key には上文で取得したid_ed25519.pub
を入力し、保存後、ToDesk や Teamviewer などと同様に ID + 鍵の形式で他のクライアントを制御できます。
注意が必要なのは、主制御と被制御の両方で同じID/中継サーバー
を設定する必要があり、そうしないと正常に接続して使用できません。それに加えて、LAN IP の直接接続は、被制御の設定メニューで【IP 直接アクセスを許可】を開くことで可能になり、主制御側の接続ボックスに直接【被制御IP
:21116】を入力して接続できます。他のプラットフォームの詳細な使用については、公式ドキュメント(クリックして移動)を参照して学んでください。
五、結論#
RustDesk は間違いなく優れたオープンソースのリモートデスクトップツールであり、リモートデスクトップツールが商業会社によって繰り返し利用され、搾取される背景の中で、これはこの状況を打破する一筋の清流であり、私たちにより多くの選択肢をもたらしました。
もちろん、RustDesk 自体にはまだ多くの改善の余地があります。たとえば、アプリ接続後に画面をスクリーンに合わせる状態がより良い、QR コード機能の起動がよりスムーズ、インタラクション UI がよりユーザーフレンドリーなどです。同様のソフトウェアから推測すると、RustDesk は将来的により効率的なコンポーネント(NVENC など)や、より完璧なアカウントと制御システムを持つ可能性があります。また、RustDesk がオープンソースの初心を保ち、自分に合った収益モデルを見つけることを願っています。結局のところ、愛だけで発電することは不可能です。ここに作者が寄付を受け付けるウェブサイトがあります(クリックして移動)、余裕があれば作者を支援することを検討してください。
最後に、作者がこのような使いやすいソフトウェアを提供してくれたことに感謝します〜
転載元: Luminous' Home » 【RustDesk】自建远程桌面服务替代 TeamViewer/Todesk