RustDeskのサーバを立ち上げる、その2
RustDeskのサーバを立ち上げるの続きである。
INSTALL RUSTDESK SELF-HOSTED SERVER ON RASPBERRY PI HARDWARE ARMV8.という記事があるので、この内容を検証してみる。
先の記事の懸念点としては、IP/ランデブーサーバ、リレーサーバを大公開してしまうと、存在を知っている者であれば、誰でも使えてしまうことだ。これに制限をかけたい。上の記事にあるように接続を暗号化し、パブリックキーをクライアント側に指定してみる。
以下のコマンド修正とあるのが、修正したコマンドだ。単純に、「-k _」を追加してある。
version: '3'
networks:
rustdesk-net:
external: false
services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
# コマンド修正
command: hbbs -r rustdesk.example.com:21117 -k _
volumes:
- ./data:/root
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: rustdesk/rustdesk-server:latest
# コマンド修正
command: hbbr -k _
volumes:
- ./data:/root
networks:
- rustdesk-net
restart: unless-stopped
※hbbsのオプション「-r rustdesk.example.com:21117」の意味は後述。
これで起動してみると、
docker-compose down
docker-compose up -d
docker-compose logs -f
以下の出力だ。
Attaching to hbbs, hbbr
hbbr | [2023-03-30 05:26:58.205091 +00:00] INFO [src/common.rs:121] Private key comes from id_ed25519
hbbr | [2023-03-30 05:26:58.205122 +00:00] INFO [src/relay_server.rs:580] Key: OK5BjEPttTQzstDo*****************************
hbbr | [2023-03-30 05:26:58.205134 +00:00] INFO [src/relay_server.rs:60] #blacklist(blacklist.txt): 0
hbbr | [2023-03-30 05:26:58.205140 +00:00] INFO [src/relay_server.rs:75] #blocklist(blocklist.txt): 0
hbbr | [2023-03-30 05:26:58.205143 +00:00] INFO [src/relay_server.rs:81] Listening on tcp :21117
hbbr | [2023-03-30 05:26:58.205145 +00:00] INFO [src/relay_server.rs:83] Listening on websocket :21119
hbbr | [2023-03-30 05:26:58.205157 +00:00] INFO [src/relay_server.rs:86] Start
hbbr | [2023-03-30 05:26:58.205193 +00:00] INFO [src/relay_server.rs:106] DOWNGRADE_THRESHOLD: 0.66
hbbr | [2023-03-30 05:26:58.205205 +00:00] INFO [src/relay_server.rs:115] DOWNGRADE_START_CHECK: 1800s
hbbr | [2023-03-30 05:26:58.205208 +00:00] INFO [src/relay_server.rs:124] LIMIT_SPEED: 4Mb/s
hbbr | [2023-03-30 05:26:58.205211 +00:00] INFO [src/relay_server.rs:134] TOTAL_BANDWIDTH: 1024Mb/s
hbbr | [2023-03-30 05:26:58.205214 +00:00] INFO [src/relay_server.rs:148] SINGLE_BANDWIDTH: 16Mb/s
hbbs | [2023-03-30 05:26:58.782105 +00:00] INFO [src/common.rs:121] Private key comes from id_ed25519
hbbs | [2023-03-30 05:26:58.782129 +00:00] INFO [src/rendezvous_server.rs:1185] Key: OK5BjEPttTQzstDoO*********************
hbbs | [2023-03-30 05:26:58.782145 +00:00] INFO [src/peer.rs:84] DB_URL=./db_v2.sqlite3
hbbs | [2023-03-30 05:26:58.784391 +00:00] INFO [src/rendezvous_server.rs:100] serial=0
hbbs | [2023-03-30 05:26:58.784412 +00:00] INFO [src/common.rs:46] rendezvous-servers=[]
hbbs | [2023-03-30 05:26:58.784416 +00:00] INFO [src/rendezvous_server.rs:102] Listening on tcp/udp :21116
hbbs | [2023-03-30 05:26:58.784419 +00:00] INFO [src/rendezvous_server.rs:103] Listening on tcp :21115, extra port for NAT test
hbbs | [2023-03-30 05:26:58.784421 +00:00] INFO [src/rendezvous_server.rs:104] Listening on websocket :21118
hbbs | [2023-03-30 05:26:58.784443 +00:00] INFO [libs/hbb_common/src/udp.rs:35] Receive buf size of udp [::]:21116: Ok(212992)
hbbs | [2023-03-30 05:26:58.784477 +00:00] INFO [src/rendezvous_server.rs:139] mask: None
hbbs | [2023-03-30 05:26:58.784480 +00:00] INFO [src/rendezvous_server.rs:140] local-ip: ""
hbbs | [2023-03-30 05:26:59.022332 +00:00] INFO [src/common.rs:46] relay-servers=[]
hbbs | [2023-03-30 05:26:59.022437 +00:00] INFO [src/rendezvous_server.rs:156] ALWAYS_USE_RELAY=N
hbbs | [2023-03-30 05:26:59.022490 +00:00] INFO [src/rendezvous_server.rs:177] Start
hbbs | [2023-03-30 05:26:59.022532 +00:00] INFO [libs/hbb_common/src/udp.rs:35] Receive buf size of udp 0.0.0.0:0: Ok(212992)
さらに、以下でも同じキーが表示される。
# cat data/*.pub
OK5BjEPttTQzst*********************
動作確認
キーを指定せずに以前の状態で接続しようとすると以下になる。
キーを指定してみる。
なんと、どういう仕組みなのかわからないのだが、接続「する」側のキー指定だけで十分だった。「される」側はキー指定していないが、きちんと接続される。
※どういうことなのかわからないが、その後やってみると、「される」側もキー指定しないと接続できない。
ということは、もしこのサーバの存在が知られてしまい、しかしキーが無い場合は、ランデブーのための登録はできてしまうが、実際には接続できないため、意味が無いということになる。
ともあれ、「接続される」オンリーのマシンへのキーの設定が不要なのは助かる。面倒なので。
リレーサーバは機能しているのか?
リレーサーバは、直接接続ができなかった場合に代替手段として、中継を行うものだ。したがって、直接接続できる環境では、リレーサーバは使われない。
また、キー無しでは、接続できない、つまりID/ランデブーサーバは使えないことがわかったが、キー無しでリレーサーバは使われてしまうのだろうか?
先のログに気になる物がある。
hbbs | [2023-03-30 05:26:59.022332 +00:00] INFO [src/common.rs:46] relay-servers=[]
hbbs | [2023-03-30 05:26:59.022437 +00:00] INFO [src/rendezvous_server.rs:156] ALWAYS_USE_RELAY=N
hbbs | [2023-03-30 05:26:59.022490 +00:00] INFO [src/rendezvous_server.rs:177] Start
何かしらのオプションを設定すれば、常にリレーサーバを使わせるようにできるようだ。https://github.com/rustdesk/rustdesk-server/issues/59を見てみると、.envファイルにALWAYS_USE_RELAY=Yと書けば良いらしい。
しかし、これをやってみたのだが、先のログは変わらず。つまり、ALWAYS_USE_RELAY=Nのままだ。
追記:マニュアルの間違いで、.envファイルではなく、環境として書かないと効果がない。また、hbbsへの指定しか効果がない。具体的には、以下である。
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
environment:
- "ALWAYS_USE_RELAY=Y"
あるいは、env_fileの方法もある。
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
env_file:
- env.file
~~~
env.file
ALWAYS_USE_RELAY=Y
“`
追記終わり
とりあえずここまでだが、ちゃんと動作するにも関わらず、プログラムが未完成で文書も不足しており、どう使ってやればいいのかわからないのは大変残念なことだ。TeamViewerやAnyDeskを駆逐してしまうポテンシャルを持っているにも関わらず。
Keyの意味
説明をちゃんと読んでみるとこういうことらしい。秘密鍵、公開鍵のペアは必ず作成され、この公開鍵をクライアント側に指定しないと、接続が暗号化されない(これはサーバに対する接続のみということと思われる※)。その上で、hbbs及びhbbrで「-k _」を指定した場合には、正しく公開鍵を指定しないと接続自体が拒否される、ということらしい。
※RustDeskの売りとしては、エンド・トゥ・エンドの暗号化ということになっているので、サーバの公開鍵指定は、サーバに対する通信のみが暗号化されないの意味と思われる。
追加:リレーサーバの指定について
あとで、https://rustdesk.com/docs/en/self-host/install/の「STEP 2 : Run hbbs and hbbr on your server」部分を読んでみてわかったのだが、hbbsの-rオプションはリレーサーバの指定だそうだ。この例では、ID/ランデブーサーバとリレーサーバの二つ共を起動しているため、rustdesk.example.com部分は、このサーバのドメインを指定すればよい。デフォルトの21117であれば、記述の必要は無いようだ。
また、クライアント側のID Server、Relayer Serverの二つの指定は不要で、Relay Server指定がなければ、hbbs -r に指定されたサーバが使われるということらしい。
ディスカッション
コメント一覧
まだ、コメントがありません