受疫情影响,很多人都开始了远程办公。部分公司平时没有做好准备,导致一时半会儿链接不上公司内网的服务器,更别说部署虚拟专用网络了。这篇文章主要介绍 FRP 的使用方法,虽然没法解决当前连不上内网的问题,但可作为今后的预防措施,在关键时刻助你一臂之力。
需要准备的东西有:
- 一台链接到公网的服务器,本篇以 阿里云 为例,系统为 Debian 64 位
- 一台处于内网的 Mac,可以访问互联网
1. 公网服务器部署 FRP 服务端 frps
下载 FRP 程序 ,确保和服务器匹配:
# 下载程序
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 个文件
frpc # 客户端程序
frpc_full.ini # 完整的客户端配置文件
frpc.ini # 客户端配置文件
frps # 服务端程序
frps_full.ini # 完整的服务端配置文件
frps.ini # 服务端配置文件
LICENSE # 服务端配置文件
systemd # 开机启动服务文件
编辑 frps.ini
,如下:
[common]
bind_port = 7000 # 用于和 FRP 客户端通信
kcp_bind_port = 7000 # 加速 TCP 访问,与 bind_port 值一致
token = 12345678 # 核实身份用,加了更安全
运行 ./frps -c ./frps.ini
看看结果,正常启动如下图。
2. 内网设备部署 FRP 客户端 frpc
下载 FRP 程序 ,Mac 版的名字是这样的 frp_x.x.x_darwin_amd64.tar.gz
,并解压。
编辑解压后的 frpc.ini
文件,如下:
[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
启动连接,正常启动如下图。
注意:建立链接时如果出现报错,请检查公网服务器端口是否被限制,阿里云 等云服务需要在控制台配置安全组规则,如下图:
启用 KCP 时,一定要开启对应端口的 UDP 协议。
3. 开启远程桌面或 SSH 登录
以上服务都启动后,我们需要进入 Mac 的【系统偏好设置】->【共享】,勾选“屏幕共享”和“远程登录”,用户为“所有用户”。
3.1 VNC 登录 Mac
打开“访达(Finder)”,选择菜单【前往】->【链接服务器】,输入vnc://x.x.x.x:5900
(将 x.x.x.x
替换成公网服务器 IP 地址)
如果连接成功,就会出现下面的界面,只要输入 Mac 的用户名和密码就行了
3.2 SSH 登录 Mac
在终端里执行 ssh Mac用户名@x.x.x.x -p 6000
(将 x.x.x.x
替换成公网服务器 IP 地址),输入密码后即可登录成功。
4. 添加自动启动
4.1 将 frps 加入自动启动
进入公网服务器,执行下列命令:
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 加入自动启动
进入内网 Mac 系统,执行下列操作:
# 编辑自启动文件
touch ~/Library/LaunchAgents/frpc.plist
vim ~/Library/LaunchAgents/frpc.plist
frpc.plist
文件内容如下,注意文件中的 frpc
和 frpc.ini
路径,可以将这两个文件移到下方配置文件的路径下:
<?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>
加载并生效:
sudo chown root ~/Library/LaunchAgents/frpc.plist
sudo launchctl load -w ~/Library/LaunchAgents/frpc.plist
别忘了还需要保证 Mac 处于开机运行状态。至此,所有的配置都完成了。
本文参与了 SegmentFault 思否征文「远程办公」,欢迎正在阅读的你也加入。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。