简单使用 Frp

前言

frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the Internet. As of now, it supports TCP and UDP, as well as HTTP and HTTPS protocols, where requests can be forwarded to internal services by domain name.

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

由于我们学校的校园网封死了许多远程连接的软件,而开热点再使用向日葵等远程连接工具又不方便(主要是实验室信号不太好),正好又有一台云服务器,可以提供一个公网 IP,就简单研究了一下 Frp。

准备

我的环境是这样的:Linux 服务器,Windows 主机(你需要远程连接的电脑)

你可以在 Github 的 Release 页面中下载到最新版本。

注意: 服务器和客户端都需要配置,因此,我这里下载了两个文件

1
2
frp_0.38.0_linux_amd64.tar.gz   # 服务器使用
frp_0.38.0_windows_amd64.zip # 客户端使用(你需要远程连接的电脑)

部署

服务器部署

如果你不熟悉 Linux 的操作,你也可以在本地直接解压下载的文件

解压完成后,文件的结构是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
frp_0.38.0_linux_amd64
├─ LICENSE
├─ frpc
├─ frpc.ini
├─ frpc_full.ini
├─ frps
├─ frps.ini
├─ frps_full.ini
└─ systemd
├─ frpc.service
├─ frpc@.service
├─ frps.service
└─ frps@.service

其中,服务端我们只需要保留 frpsfrps.ini 两个文件,其他文件都可以删除。

打开 frps.ini 进行配置,设置监听端口(注意你需要确保监听端口打开):

1
2
3
4
5
6
7
[common]
bind_addr = 0.0.0.0
bind_port = 9999 # 监听端口(可自定义)

dashboard_user = 123456 # 监控的用户名
dashboard_pwd = 123456 # 监控的密码
dashboard_port = 7500

之后就可以把这两个文件上传到服务器。

客户端部署

frp 的客户端就是我们想要真正进行访问的那台设备,大多数情况下应该会是一台 Windows 主机,因而本文使用 Windows 主机做例子;Linux 配置方法类似,不再赘述。

客户端同理,解压下载的文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
frp_0.38.0_windows_amd64
├─ LICENSE
├─ frpc.exe
├─ frpc.ini
├─ frpc_full.ini
├─ frps.exe
├─ frps.ini
├─ frps_full.ini
└─ systemd
├─ frpc.service
├─ frpc@.service
├─ frps.service
└─ frps@.service

其中,客户端我们只需要保留 frpcfrpc.ini 两个文件,其他文件都可以删除。

打开 frpc.ini 进行配置,设置配置(注意你需要确保端口打开):

1
2
3
4
5
6
7
8
9
[common]
server_addr = x.x.x.x # 服务器的公网 IP(修改)
server_port = 9999 # 在服务器端设置的监听端口(修改)

[ssh] # 名字可以设一个自己好记的
type = tcp # 连接类型
local_ip = 127.0.0.1 # 本机地址
local_port = 3389 # 要穿透的端口
remote_port = 6666 # 服务器端口(修改)

如此设置后,frp 会将请求 x.x.x.x:9999 的流量转发到内网机器的 3389 端口。

3389 端口是 Windows Server 远程桌面的服务端口,可以通过这个端口,用"远程桌面"等连接工具来连接到远程的服务器,如果连接上了,输入系统管理员的用户名和密码后,将变得可以像操作本机一样操作远程的电脑。

开始使用

服务器端

通过 nohup 后台运行,日志写入到 frps.log

1
nohup /home/frp/frps -c /home/frp/frps.ini >/home/frp/frps.log 2>&1 &

注意把路径修改成你自己的。

客户端

打开命令行,运行 frpc 命令:

1
frpc.exe -c frpc.ini

注意把路径修改成你自己的。

Windows 远程桌面连接

在另外一台电脑上打开 Windows 远程桌面连接,输入服务器 IP 和端口,并输入系统管理员的用户名和密码,就可以实现远程桌面连接。