通过 FRP 内网穿透并实现 VNC 远程访问 Mac 桌面

通过 FRP 内网穿透并实现 VNC 远程访问 Mac 桌面

fenbox 2020-02-11 16:00:54 阅读数:369 评论数:0 点赞数:0 收藏数:0

标签:frpVNC内网穿透实现

受疫情影响,很多人都开始了远程办公。部分公司平时没有做好准备,导致一时半会儿链接不上公司内网的服务器,更别说部署虚拟专用网络了。这篇文章主要介绍 FRP 的使用方法,虽然没法解决当前连不上内网的问题,但可作为今后的预防措施,在关键时刻助你一臂之力。

需要准备的东西有:

  1. 一台链接到公网的服务器,本篇以 阿里云 为例,系统为 Debian 64 位
  2. 一台处于内网的 Mac,可以访问互联网

1. 公网服务器部署 FRP 服务端 frps

下载 FRP 程序 ,确保和服务器匹配:

1
2
3
4
5
6
# 下载程序
wget https://github.com/fatedier/frp/releases/download/v0.31.2/frp_0.31.2_linux_amd64.tar.gz
# 解压缩
tar -zxvf frp_0.31.2_linux_amd64.tar.gz
# 进入目录
cd frp_0.31.2_linux_amd64

解压后可以看到有 8 个文件

1
2
3
4
5
6
7
8
frpc # 客户端程序
frpc_full.ini # 完整的客户端配置文件
frpc.ini # 客户端配置文件
frps # 服务端程序
frps_full.ini # 完整的服务端配置文件
frps.ini # 服务端配置文件
LICENSE # 服务端配置文件
systemd # 开机启动服务文件

编辑 frps.ini,如下:

1
2
3
4
[common]
bind_port = 7000 # 用于和 FRP 客户端通信
kcp_bind_port = 7000 # 加速 TCP 访问,与 bind_port 值一致
token = 12345678 # 核实身份用,加了更安全

运行 ./frps -c ./frps.ini 看看结果,正常启动如下图。

image.png

2. 内网设备部署 FRP 客户端 frpc

下载 FRP 程序 ,Mac 版的名字是这样的 frp_x.x.x_darwin_amd64.tar.gz,并解压。

编辑解压后的 frpc.ini 文件,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[common]
server_addr = x.x.x.x # 公网服务器 IP 地址
server_port = 7000 # 绑定端口,和服务端一致
protocol = kcp # 开启加速
token = 12345678 # 与服务端一致
; login_fail_exit = false # 无网络时一直等待不退出
[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5900
remote_port = 5900
use_encryption = true
use_compression = true
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
use_encryption = true
use_compression = true

执行 ./frpc -c ./frpc.ini 启动连接,正常启动如下图。

image.png

注意:建立链接时如果出现报错,请检查公网服务器端口是否被限制,阿里云等云服务需要在控制台配置安全组规则,如下图:

image.png

启用 KCP 时,一定要开启对应端口的 UDP 协议。

3. 开启远程桌面或 SSH 登录

以上服务都启动后,我们需要进入 Mac 的【系统偏好设置】->【共享】,勾选“屏幕共享”和“远程登录”,用户为“所有用户”。

image.png

3.1 VNC 登录 Mac

打开“访达(Finder)”,选择菜单【前往】->【链接服务器】,输入
vnc://x.x.x.x:5900(将 x.x.x.x 替换成公网服务器 IP 地址)

image.png

如果连接成功,就会出现下面的界面,只要输入 Mac 的用户名和密码就行了

image.png

3.2 SSH 登录 Mac

在终端里执行 ssh Mac用户名@x.x.x.x -p 6000(将 x.x.x.x 替换成公网服务器 IP 地址),输入密码后即可登录成功。

4. 添加自动启动

4.1 将 frps 加入自动启动

进入公网服务器,执行下列命令:

1
2
3
4
5
6
7
8
sudo cp /xxx/frps /usr/bin/ # 将执行文件移入系统目录
sudo cp /xxx/frps.ini /etc/frp/ # 将配置文件移入系统配置目录
# 添加自启动配置
sudo cp /xxx/systemd/frps.service /lib/systemd/system/
sudo systemctl daemon-reload # 重新加载配置
sudo systemctl enable frps.service # 启用 frps 开机启动
sudo systemctl start frps.service # 启动 frps 服务
systemctl status frps.service # 查看 frps 服务状态

4.2 将 frpc 加入自动启动

1
2
3
# 编辑自启动文件
touch ~/Library/LaunchAgents/frpc.plist
vim ~/Library/LaunchAgents/frpc.plist

frpc.plist 文件内容如下,注意文件中的 frpcfrpc.ini 路径,可以将这两个文件移到下方配置文件的路径下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>frpc</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/frpc/frpc</string>
<string>-c</string>
<string>/usr/local/bin/frpc/frpc.ini</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

加载并生效:

1
2
sudo chown root ~/Library/LaunchAgents/frpc.plist
sudo launchctl load -w ~/Library/LaunchAgents/frpc.plist

别忘了还需要保证 Mac 处于开机运行状态。至此,所有的配置都完成了。