RustDeskの直接IP接続

TeamViewerやAnyDeskは、もう不要になった。RustDeskを使いこなせれば、これらのソフトに金を払う必要はない。

これまで行ってきたことのまとめ

RustDeskの使い方は簡単だ。

  • 操作する側、される側にRustDeskをインストールし、起動する
  • 後者のIDを前者に伝えて接続する
  • その際、後者のパスワードがあれば、勝手に接続できるが、無い場合は、後者の方で接続を承認する必要がある
  • あとは自由に操作ができるのだが、ただし、後者のRustDeskの設定は勝手にいじれないようになっている。ここが残念な点。当然と言えば当然なのだが、自分のマシンの設定を変えたい場合は、わざわざその前まで行かなければならない。

また、以下を行えば、毎回IDを確認したり、入力したりする必要がなくなる。

  • 「rustdesk –connect 相手のID番号」というショートカットやシェルスクリプト、Linuxのデスクトップファイルを作成しておき、単にダブルクリックで接続する。

その一方で、問題になったのは次の点だ。

  • RustDeskプログラムには、デフォルトのランデブーサーバ(待ち合わせサーバ)が組み込まれており、任意の場所にいる操作側被操作側がそこで待ち合わせることになっている。
  • さらに、接続した後で、二つが直接的に接続できない場合には、引き続きリレーサーバを経由して画像データなどが流される。

このRustDeskのデフォルトのサーバがどこなのかわからないが(プログラム中に埋め込んであるものと思われる)、これが混んでいると、なかなか接続できない。イライラして待つことになる。

その解決策としては以下である。

  • 自前のランデブーサーバ、リレーサーバを立ち上げ、そのドメインをRustDeskに設定してやる。
  • これにより、RustDeskのデフォルトのインフラを使うことなく、スムーズな接続・スムーズな操作が可能になる。

さらに、TailscaleによってVPNネットワークを構築している場合には、以下のようにして常に直接接続が可能になる。

  • 自前のランデブーサーバ、リレーサーバのTailnet内の固定IP(あるいはMagicDNSが有効であれば、そこにつけた名前)を指定してやる
  • こうすることにより、このサーバには、操作側・被操作側の両方のTailnet内の固定IPが伝えられる。
  • したがって、常にこの固定IPでの直接接続になり、リレーサーバは不要になる。

実際には、リレーサーバは立ち上げておいた方が良い。なぜなら、Tailnetの外のマシンにも接続する可能性があるからだ。その場合は、このサーバのグローバルIPをグローバルなDNSに登録しておき、対象の被操作側マシンには、それを指定してやる必要がある。

しかし、よく調べてみると、Tailnet内での接続では、上のような仕組みは不要だった。リレーサーバは不要だが、ランデブーサーバでさえ不要だ。これを以下に解説する。

ダイレクトIPアクセス

これは、相手側のIPを直接指定して接続するものだ。つまり、以下のような状況で利用できる。

  • LANにおいて、マシンのIPを(DHCP任せではなく)固定にした場合
  • 遠方のマシンでもTailscaleを使ってマシンの固定IPがふられている場合

直接的に相手のIPを指定してしまうので、繰り返しだが、ランデブーサーバもリレーサーバも不要になる。やり方は以下だ。

操作される側

以下のメニューで「Enable Direct IP Access」をONにする。

鉛筆マークからポート番号の変更ができるのだが、必要無いだろう。デフォルトのままで良い。

操作される側の準備はこれだけだ。

※ただし、少なくともAndroid用のRustDeskにはこの機能は無い(見つからない)ため、直接IPアクセスはできないようだ。

操作する側

操作する側は、相手側の固定IPアドレスを指定すればよい。

これだけだ。ショートカットやシェルスクリプト、Linuxデスクトップファイルには以下を記述する。

rustdesk --connect 100.64.0.6

※TailscaleでMagicDNSを使っていても、その名前は使えないようだ。あくまでもIPを指定する必要がある。