Radmin LAN + RustDesk 远程控制
xjb转载4000+
Radmin LAN + RustDesk 远程控制
适用于:常规远程软件因网络策略被阻断、无法登录或延迟过高
原理:先用 Radmin LAN 把两台机器拉进同一个虚拟局域网(P2P 直连,不经第三方中转),再用 RustDesk 在虚拟局域网内用 IP 直连。流量端到端加密,不经过远程软件的公共服务器。
实测:直连通道建立后 ping < 50 ms,iperf3 带宽约 18 Mbps,远程桌面操作基本无感
一、前置条件
- 两台 Windows 机器(被控端建议 Windows 专业版以上;家庭版也可用本方案,因为不依赖 RDP)
- 两台机器都能正常上网
- 全程需要 管理员权限
二、第一步:Radmin LAN 组网
2.1 安装
两端都从 https://www.radmin-lan.cn/ 下载安装 Radmin LAN。
2.2 建网络并加入
- 在被控端打开 Radmin LAN,点「创建网络」,设一个网络名和密码。
- 在控制端打开 Radmin LAN,点「加入网络」,输入同一个网络名和密码。
2.3 记录两端的虚拟 IP
加入成功后,Radmin LAN 会分给每台机器一个 26.x.x.x 的地址。把两个地址都记下来,后面所有配置都要用。
2.4 关闭安全选项(重要)
在 Radmin LAN 的网络设置里:
- 取消勾选「允许其他网络成员访问我的本地局域网」(Allow access to local network)
→ 否则任何拿到网络密码的人都能借你的机器进入你的内网。 - 勾选「禁止新成员加入」(禁止无密码加入)
→ 成员固定为这两台,别人无法再加入。
2.5 验证互通
在控制端 PowerShell 中执行:
ping 26.10.20.30 # 换成被控端的虚拟 IP
正常结果是延迟几十毫秒。 如果延迟超过 200 ms,说明 Radmin 没打通 P2P,走了它自己的中继,见本文第八节。
三、第二步:安装 RustDesk
3.1 下载
RustDesk 不在 winget 源里(winget install RustDesk.RustDesk 会报“找不到与输入条件匹配的程序包”),需手动从 GitHub 下载:
https://github.com/rustdesk/rustdesk/releases/latest
选择 rustdesk-<版本>-x86_64.exe。
3.2 建议校验
如果目标机器下载不稳定,可以用任意途径传文件过去,但务必核对 SHA256,确保文件未被篡改。在 GitHub Release 页面或 API 中查官方摘要:
(Get-FileHash .\rustdesk-1.5.0-x86_64.exe -Algorithm SHA256).Hash.ToLower()
与官方公布值一致才安装。
3.3 安装
双击 exe,选择:
- Install(不要选 "Run without installing")
装完后打开 RustDesk,进入 设置 → 常规,确认「服务」按钮显示为「停止」——显示“停止”表示服务正在运行(按钮文字表示点击后会做什么,不是当前状态)。
四、第三步:开启 RustDesk 的 IP 直连
打开 RustDesk → 左下角 设置(三横线)→ 安全:
| 设置项 | 操作 |
|---|---|
| 启用 IP 直接访问(Enable direct IP access) | 勾选 |
| 端口 | 保持默认 21118 |
| 永久密码(Permanent password) | 设置一个强随机密码 |
两端都要做这一步。
注意:
- 永久密码不要与本机 Windows 登录密码相同,也不要复用。
- 界面上方的「一次性密码」每次重启会变,可直接关掉;长期连接只用永久密码。
- 设好后,界面下方会显示端口号,确认是 21118,自己主动再输入一次并点击“应用”。
关于“服务器地址留空”
设置 → 网络 → ID/中继服务器里留空,不代表不连服务器,客户端会自动使用内置默认服务器(rs-ny.rustdesk.com)。
但由于本文采用的是输 IP 直连(不输 ID),该服务器只承担“设备在线”心跳,不参与两端连接的协商,因此它不知道这两台机器在互相连接。数据本身走 P2P 直连并加密。
如果需要彻底切断这条外联,可在内网自建 hbbs(RustDesk 服务端),两端都把服务器地址指向内网 IP。这一步不影响连通性,属于可选加固。
五、第四步:防火墙白名单
RustDesk 安装时会自动创建一条入站规则 RustDesk Service,来源不限,任何能访问到本机的人都能连 21118,必须收紧。
两端都执行(把 26.10.20.40 换成对方的虚拟 IP):
# 1) 禁用 RustDesk 自带的宽泛入站规则
Get-NetFirewallRule -DisplayName 'RustDesk Service' |
Where-Object { $_.Direction -eq 'Inbound' } |
Disable-NetFirewallRule
# 2) 只允许对方那一个 IP 访问
$Peer = '26.10.20.40'
New-NetFirewallRule -DisplayName 'RustDesk-Peer-TCP' -Direction Inbound -Action Allow `
-Protocol TCP -LocalPort 21115-21119 -RemoteAddress $Peer -Profile Any
New-NetFirewallRule -DisplayName 'RustDesk-Peer-UDP' -Direction Inbound -Action Allow `
-Protocol UDP -LocalPort 21116 -RemoteAddress $Peer -Profile Any
- 禁用默认规则:默认规则允许任何来源,等于把 21118 暴露给所有人。
-RemoteAddress $Peer:白名单只放行对方 IP,其余一律拒绝。-Profile Any:Radmin LAN 的虚拟网卡常被 Windows 识别为「公用网络」,如果规则只写了Domain,Private就不会生效。
验收
Get-NetFirewallRule -DisplayName 'RustDesk*' |
Select-Object DisplayName, Enabled, Direction | Format-Table -AutoSize
预期结果:
RustDesk Service True Outbound ← 出站保留
RustDesk Service False Inbound ← 必须变成 False
RustDesk-Peer-TCP True Inbound
RustDesk-Peer-UDP True Inbound
六、第五步:连接
在控制端打开 RustDesk,主界面「控制远程桌面」输入框里直接填被控端的虚拟 IP(不要填 ID !!!):
26.10.20.30
点连接,输入被控端设置的永久密码即可。
七、双向连接
两端都按第二至五步配置后,任一方向都可以发起连接:
- 控制端 → 被控端:输入被控端的
26.xIP - 被控端 → 控制端:输入控制端的
26.xIP
八、验证与排错
8.1 判断是直连还是走中继
Test-Connection 26.10.20.30 -Count 6 | Select-Object Address, ResponseTime
| 延迟 | 含义 |
|---|---|
| 30–60 ms | P2P 直连,正常 |
| 200–900 ms | 走了 Radmin 的服务器中继,需要重连 |
判断依据看 ping 的 RTT
8.2 恢复直连的重连顺序
Radmin LAN 断开后重连时,打洞可能失败而退化成中继。按以下顺序操作:
- 两端都在托盘图标右键 → 退出(Exit),不是「断开」
- 等 10 秒
- 先启动一端,加入网络,等 15 秒
- 再启动另一端
- 等 30 秒后检查 ping
如果仍不通,把顺序反过来再试一次(先另一端)。
8.3 端口不通的排查
Test-NetConnection 26.10.20.30 -Port 21118
TcpTestSucceeded : True 才算通。若为 False:
- 被控端是否勾选了「启用 IP 直接访问」
- 防火墙规则是否存在且为
Enabled=True(见第五节验收) Get-NetTCPConnection -LocalPort 21118 -State Listen是否有输出
8.4 常见现象
| 现象 | 原因 | 处理 |
|---|---|---|
| 画面卡但能操作 | 带宽不足 | 设置 → 显示,画质速度最优化,编码器选 H.265 |
| 开启隐私屏幕后无法操控 | 隐私屏幕模式与显卡驱动冲突 | 取消隐私屏幕,或切换模式后重新勾选一次 |
| 隐私屏幕模式 2 延迟明显变大 | 模式 2 走的是另一条渲染路径,占用更高 | 用模式 1,或直接 |
| 连接后立即断开 | 密码错误或服务未运行 | 检查「设置 → 常规」服务状态 |
| 偶尔卡顿 | 虚拟网卡 MTU 导致分片 | 可试将 Radmin LAN 网卡 MTU 降为 1400 |
九、安全要点汇总
- 防火墙只放行对方一个 IP,不要用网段,不要用「任何 IP」。
- 关闭 Radmin LAN 的局域网共享,并禁止新成员加入。
- RustDesk 永久密码强度足够,不与系统密码相同,不在客户端保存凭据。
- Radmin LAN 不要频繁退出。它靠客户端保活维持 NAT 映射,频繁重启会增加打洞失败概率。
- 被控端建议使用受限账户远程登录,而非管理员账户,降低控制端被入侵后的横向扩散风险。
- 被控端重要数据定期备份,防勒索。
- RustDesk 只从官方 GitHub Release 下载并校验 SHA256,不使用第三方修改版。
无法消除的风险
- Radmin LAN 的信令服务在境外,它知道「这两台机器组成了一个网络、何时活跃」。数据内容看不到(P2P 直连 + 加密),但连接元数据可见。
- RustDesk 默认会向
rs-ny.rustdesk.com注册设备在线状态,知道你在线。用 IP 直连时它不参与连接协商,但要完全消除需自建服务端。 - 若其中一台机器本身被入侵,防火墙白名单无法阻止攻击(攻击者就在白名单内侧)。真正的防线是终端安全与账号权限。
十、可选:自建 RustDesk 服务端
如需彻底切断 RustDesk 的境外外联,并保留「IP 不通时走内网中继」的兜底:
- 从 https://github.com/rustdesk/rustdesk-server/releases 下载
rustdesk-server-windows-x86_64.zip,解压得到hbbs.exe、hbbr.exe。 - 在一台常开的、位于同一虚拟局域网内的机器上运行:
.\hbbs.exe -r <该机的26.x地址>
.\hbbr.exe
- 首次运行会生成
id_ed25519.pub,记录其内容。 - 两端 RustDesk → 设置 → 网络 → ID/中继服务器:
- ID 服务器:
<该机的26.x地址> - 中继服务器:
<该机的26.x地址> - Key:粘贴
id_ed25519.pub的内容
- ID 服务器:
- 用
nssm或计划任务把hbbs.exe/hbbr.exe注册为开机自启服务。
完成后两端界面显示的 ID 会变成数字(表示已注册到自建服务器),此时可用 ID 或 IP 两种方式连接。
附:为什么 RustDesk 不用 Parsec / ToDesk
这类软件即使有了虚拟局域网也无法使用,因为它们的账号登录、设备列表、连接协商全部依赖各自的云端服务器。当这些域名或 IP 段被网络策略阻断时,虚拟局域网只解决了网络可达性,解决不了云端依赖。
如果需要比 RustDesk 更低的延迟和更好的画质,可考虑 Sunshine + Moonlight:它通过本地 PIN 配对,不依赖任何云端服务,开源可审计,只要机器有可用的硬件编码器(NVIDIA NVENC / Intel QuickSync / AMD AMF)即可。
浙公网安备 33010602011771号