TeamviewerやAnyDeskを使ってますが、年々使用料金が上がってきている..
っで無償のRustDesk を試してみる
| RustDesk | TeamViewer | AnyDesk | Headscale/Tailscale | WireGuard | |
| 主目的 | リモートデスクトップ | リモートデスクトップ | リモートデスクトップ | メッシュVPN | VPN |
| 接続管理・仲介 | ○ hbbs | ○ | ○ | ○ | 原則なし |
| P2P通信 | ○ | ○ | ○ | ○ | ○ |
| NAT越え支援 | ○ | ○ | ○ | ○ | 基本なし |
| P2P不可時の中継 | ○ hbbr | ○ | ○ | ○ DERP | 標準ではなし |
| 仲介基盤を自前構築 | ○ | 基本× | 基本× | ○ Headscale | ○ |
| 画面操作 | ○ | ○ | ○ | × | × |
| VPN内IPを付与 | × | × | × | ○ | ○ |
| SSHなど任意通信 | 基本× | 基本× | 基本× | ○ | ○ |
自前で仲介サイトを設けることができる.
TeamviewerやAnyDeskではその会社が運営する仲介サイトを経て相手先と接続ができる。
RustDesk は公式サイトでの仲介の他、自分で仲介サイトを設けることもできる
ここではFirewallの中にRsutDesk仲介サイトを用意します。外部から届く下記ポートを内部の仲介サイト(rustdesk.sybyl.local)を用意します
Web Clientを使うなら加えて「TCP 21118/21119」もfirewallで開けて内部の仲介サイト(rustdesk.sybyl.local)に行けるようにします
ここではdockerを敷いてその上に仲介サイトを設けます. podmanでもできるかと思うけど、デーモン化が面倒なのでdockerにしてます.
[root@rustdesk ~]# cat /etc/redhat-release
Rocky Linux release 9.8 (Blue Onyx)
[root@rustdesk ~]#
[root@rustdesk ~]# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@rustdesk ~]# dnf install docker-ce docker-ce-cli containerd.io
[root@rustdesk ~]# systemctl enable docker --now
[root@rustdesk ~]# docker --version
Docker version 29.8.0, build 88096ef
[root@rustdesk ~]#
[root@rustdesk ~]# dnf config-manager --disable docker-ce-stableと下地のdockerを用意したうえで
[root@rustdesk ~]# mkdir -p /srv/rustdesk
[root@rustdesk ~]# cd /srv/rustdesk
[root@rustdesk rustdesk]# wget rustdesk.com/oss.yml -O compose.yml
[root@rustdesk rustdesk]# cat compose.yml
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs
volumes:
- ./data:/root
network_mode: "host"
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
network_mode: "host"
restart: unless-stopped
[root@rustdesk rustdesk]#起動してみます
[root@rustdesk ~]# cd /srv/rustdesk
[root@rustdesk rustdesk]# docker compose up -d
[root@rustdesk rustdesk]# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
hbbr rustdesk/rustdesk-server:latest "hbbr" hbbr 4 seconds ago Up 3 seconds
hbbs rustdesk/rustdesk-server:latest "hbbs" hbbs 4 seconds ago Up 3 seconds
[root@rustdesk rustdesk]#停止してみます
[root@rustdesk rustdesk]# docker compose down
[root@rustdesk rustdesk]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@rustdesk rustdesk]#「network_mode: "host"」としているので コンテナにport指定は不要.
っで通信は
[root@rustdesk rustdesk]# ss -lntup | grep -E '2111[4-9]'
udp UNCONN 0 0 *:21116 *:* users:(("hbbs",pid=41064,fd=12))
tcp LISTEN 0 128 *:21115 *:* users:(("hbbs",pid=41064,fd=14))
tcp LISTEN 0 128 *:21116 *:* users:(("hbbs",pid=41064,fd=13))
tcp LISTEN 0 128 *:21117 *:* users:(("hbbr",pid=41011,fd=9))
tcp LISTEN 0 128 *:21118 *:* users:(("hbbs",pid=41064,fd=15))
tcp LISTEN 0 128 *:21119 *:* users:(("hbbr",pid=41011,fd=10))
[root@rustdesk rustdesk]#と繋げっている。
っでfirewallも調整する
firewall-cmd --permanent --add-port=21115/tcp
firewall-cmd --permanent --add-port=21116/tcp
firewall-cmd --permanent --add-port=21116/udp
firewall-cmd --permanent --add-port=21117/tcp
firewall-cmd --reload
(確認)
[root@rustdesk rustdesk]# firewall-cmd --list-ports
21115/tcp 21116/tcp 21117/tcp 21116/udp
[root@rustdesk rustdesk]#そしてこの仲介サイトを利用する際に使用する公開鍵はdomposeの時点で作られていて(hbbsの初回起動時に生成されています)
[root@rustdesk ~]# ls -l /srv/rustdesk/data/
total 88
-rw-r--r--. 1 root root 4096 Sep 6 12:45 db_v2.sqlite3
-rw-r--r--. 1 root root 32768 Sep 6 12:51 db_v2.sqlite3-shm
-rw-r--r--. 1 root root 41232 Sep 6 12:45 db_v2.sqlite3-wal
-rw-r--r--. 1 root root 88 Sep 6 12:45 id_ed25519
-rw-r--r--. 1 root root 44 Sep 6 12:45 id_ed25519.pub
[root@rustdesk ~]#皆に配布するカギは「id_ed25519.pub」の中身になる
[root@rustdesk ~]# cat /srv/rustdesk/data/id_ed25519.pub
wuKxS04KoJUFjSbi40LyH+XvYMjafBqOwnDYJgSnCRs=
[root@rustdesk ~]#事務所はYamahaルータで制御している. っでYamahaルータの静的マスカレードを弄って外部のリクエストを内部にある仲介サイトに渡す

操作する側、操作される側、双方にRustDeskを入れてRustDeskの設定ページ内、「ネットワーク」にて中継サイトを下記のように設定します
■rockylinux
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.8 (Blue Onyx)
[root@rockylinux9 ~]# wget https://github.com/rustdesk/rustdesk/releases/download/1.4.9/rustdesk-1.4.9-0.x86_64.rpm
[root@rockylinux9 ~]# dnf localinstall ./rustdesk-1.4.9-0.x86_64.rpm -y
