# 写在前面
作为一名程序猿,💻外带是刚需。然而,由于游戏本过于笨重,并且续航能力被轻薄本和 Mac 薄纱🙃,因此严重阻碍了我试图迈出宿舍大门的脚步。所以为了解放饱受苦痛的肉体,我开始探索使用 iPad 远程控制电脑的方法…… 以下文章主要是关于 RD Client + frp 内网穿透(使用自建服务器)的过程,如果只使用校园网且 Windows 为专业版或企业版,可以直接忽略内网穿透相关内容,跳转到文末查看 RD Client 在 iPad 上如何配置。
# 常用远程桌面控制软件对比
- 向日葵:用过一段时间,体验极其糟糕。首先要吐槽的就是它的鼠标单键映射。鼠标滚轮和右键全都不起作用,拖动和右击被映射到鼠标左键的两档长按,这是什么反人类的设计😅…… 此外远程桌面无法自适应 iPad 屏幕,如果想完整看到桌面,在 iPad 横向放置的情况下屏幕上部和下部都有大面积黑边,这直接导致文字过小,阅读吃力,很容易加深近视度数。
- TeamViewer:舍友在用,上网查了一下发现免费版被吐槽疯狂弹商业使用提示,而付费版价格感人,所以 pass。
- RustDesk:开源软件,完全免费,桌面端体验应该和 TeamViewer 相当,并且可以使用自建服务器。但是 ios 端似乎还在开发中,总是连接失败,所以很遗憾。
- RD Client:微软开发的远程桌面控制软件,Windows 系统对其进行过专门优化,完全免费(前提是系统为专业版或企业版),体验上佳。缺点是仅支持内网连接(仅使用校园网是没有问题的),如果连接不同网络(例如笔记本在宿舍连接校园网但 iPad 在宿舍外连接热点),就要使用内网穿透。另外,iPad 远程控制 Windows 使用的仍然是 iPad 内置输入法。
# 内网穿透软件列举
- coplar:有免费版本,但是没用过。
- Sakura Frp:一款开源内网穿透软件,基于 frp,有免费版本,但是没用过。
# 前提条件
- 云服务器(非必须,可使用上述两款软件的免费版本替代,但是稳定性需自行衡量)
- Windows 10(或以上)专业版 / 企业版操作系统(可以淘宝购买密钥)
# 配置环境
我使用的是 Windows 10 专业版 amd64 架构作为客户端(也就是需要远程控制的平台),中转服务器采用腾讯云轻量级服务器搭载 ubuntu 20.04 系统,amd64 架构。Frp 版本号为 v0.44.0。
# 内网穿透配置
先挂一个很有帮助的网站:SakuraFrp 帮助文档
首先到 Frp Release 依据系统下载对应包。我在 Windows 平台上下载 frp_0.44.0_windows_amd64.zip
,在 Linux 平台上下载 frp_0.44.0_linux_amd64.tar.gz
。
# Linux 配置
建议在 su
模式下进行。
# ini 文件配置
tar -zxf frp_0.44.0_linux_amd64.tar.gz | |
mv ./frp_0.44.0_linux_amd64/* /usr/local/bin | |
cd /usr/local/bin | |
vim frps.ini |
随后修改 frps.ini
文件:
[common] | |
bind_port = 7000 | |
authentication_method = token ; [可选] 为了增加安全性所作的设置 | |
token = <密钥> ; [可选] 为了增加安全性所作的设置,可以填写任意字符 |
# 防火墙端口设置
使用 firewalld
工具查看端口是否开放。
apt install firewalld | |
systemctl enable firewalld.service # 设置开机自启动 | |
firewall-cmd --query-port=7000/tcp # 查询 7000 端口是否开放 | |
# yes/no | |
firewall-cmd --query-port=3389/tcp # 查询 3389 端口是否开放 | |
# yes/no | |
# 若未开放 | |
firewall-cmd --zone=public --add-port=7000/tcp --permanent | |
firewall-cmd --zone=public --add-port=3389/tcp --permanent | |
firewall-cmd --reload # 更新防火墙规则 | |
firewall-cmd --zone=public --list-ports # 查看所有已打开端口 |
# 后台运行
nohup frps -c frps.ini & # 将 frps 挂在后台 | |
ps -e | grep frps # 查看进程是否启动成功,如果没有输出,请查看 nohup.out 报错信息 |
# 随系统启动设置
vim /lib/systemd/system/frps.service |
写入
[Unit] | |
Description=fraps service | |
After=network.target syslog.target | |
Wants=network.target | |
[Service] | |
Type=simple | |
ExecStart=/usr/local/bin/frps -c frps.ini # 注意frps和frps.ini的路径,如果不同需自行更改 | |
[Install] | |
WantedBy=multi-user.target |
随后打开自启动
systemctl enable frps |
# Windows 配置
# ini 文件配置及 frps 运行
按 win + I
打开系统设置,依次点击系统 -> 远程桌面并开启。Windows 默认的远程桌面端口为 3389,我们不做修改。将下载得到的压缩包解压放在合适的路径,我个人选择 C:\Program Files\frp_0.44.0_windows_amd64
。打开文件夹编辑 frpc.ini
,设置如下:
[common] | |
server_addr = <中转服务器公网IP地址> | |
server_port = 7000 # 用于和中转服务器连接的端口,与服务器bind_port参数一致,如有端口冲突需要自行更换 | |
authentication_method = token # [可选] 为了增加安全性所作的设置 | |
token = <密钥> # [可选] 为了增加安全性所作的设置,可以填写任意字符 | |
[RDP] # 名字可以随便起,如果有不同客户端需求注意不能重复 | |
type = tcp | |
local_ip = 127.0.0.1 # 本地ip | |
local_port = 3389 # Windows本地远程桌面连接端口,默认值为3389 | |
remote_port = 3389 # 中转服务器远程桌面连接端口 |
打开 cmd,运行 frpc.exe
:
frpc.exe -c frpc.ini |
注意这样直接运行须保持 cmd 窗口开启,若想要后台运行,可以使用下方提供的 bat
脚本。
注意在 Linux 中运行的是 frps -c frps.ini
,而在 Windows 系统下运行的是 frpc.exe -c frpc.ini
。
# 开机自启配置
创建 run.bat
文件,粘贴如下内容:
@echo off | |
if "%1" == "h" goto begin | |
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit | |
:begin | |
REM | |
cd C:\Program Files\frp_0.44.0_windows_amd64 | |
frpc.exe -c frpc.ini | |
exit |
按下 win + r
打开运行窗口,输入 shell:startup
,将 bat 文件复制到打开的位置内,则该脚本会在开机后自动运行(目前看来好像有 bug,开机后需要手动启动一次,可以创建一个快捷方式放在桌面)。这个脚本会在后台启动 frqc.exe
进程而无需保持命令行打开。在任务管理器的详细信息中应当可以看到 frpc.exe
进程运行。
# iPad 端 RD Client 配置
进入 APP Store 搜索下载 RD Client。打开后点击左上角加号添加电脑。
如果只使用内网连接(仅使用校园网),只需要在电脑名称一栏填写 Windows 电脑的 IP 地址(可在 cmd 中输入 ipconfig 查看网络的 ipv4 地址),用户账户一栏填写 Windows 系统账户名称和锁屏密码(可以在 win + i
设置 -> 账户中查看)。
如果需使用不同网络,在电脑名称一栏填写 <中转服务器公网IP>:3389
,用户账户一栏依旧填写 Windows 系统账户名称和锁屏密码即可。
最终效果: