1. 什么是 frp
frp 是一个高性能的反向代理应用,提供的功能有:
- 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务
- 对于 http、https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口
- 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机
2. 架构和部署
frp 采用的是 C/S 架构。在使用时,需要:
部署服务端,将 frps 及 frps.ini 放到具有公网 IP 的机器上,运行 frps;
部署客户端,将 frpc 及 frpc.ini 放到处于内网环境的机器上,运行 frpc。
frp 是采用 Go 语言写的,支持 OS X、Windows、Linux 操作系统。
3. 服务器端安装 frp
服务器端安装 frp,有两种方法。
- GitHub 下载 Releases 版本,手动安装
- 使用 clangcn 写的 脚本 安装
下面步骤采用的是使用脚本安装:
1
|
wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
|
1
|
chmod +x install-frps.sh
|
1
|
./install-frps.sh install
|
安装的过程中,需要填入一些配置参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
Please input frps bind_port [1-65535](Default Server Port: 5443):
输入frp提供服务的端口,用于服务器端和客户端通信,按Enter键表示默认5443,否则手动输入新端口
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):
输入frp的控制台服务端口,用于查看frp工作状态,按Enter键表示默认6443,否则手动输入新端口
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):
输入frp进行http穿透的http服务端口,按Enter键表示默认80,否则手动输入新端口,一般不建议默认80
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443):
输入frp进行https穿透的https服务端口,按Enter键表示默认443,否则手动输入新端口
Please input privilege_token (Default: XXXXXXXXXXXXXXXXX):
输入frp服务器和客户端通信的密码,默认是随机生成的,按Enter键表示按默认来,否则手动输入。frpc客户端需要这个接头暗号
Please input frps max_pool_count [1-200](Default max_pool_count: 50):
设置每个代理可以创建的连接池上限,默认50
Please select log_level #####
1: info
2: warn
3: error
4: debug
Enter your choice (1, 2, 3, 4 or exit. default [1]):
设置日志等级,4个选项,默认是info
Please input frps log_max_days [1-30]
(Default log_max_days: 3 day):
设置日志保留天数,范围是1到30天,默认保留3天。
##### Please select log_file #####
1: enable
2: disable
Enter your choice (1, 2 or exit. default [1]):
设置是否开启日志记录,默认开启,开启后日志等级及保留天数生效,否则等级和保留天数无效
|
4. 客户端配置
在 frp 的 releases 页面,可以找到适合 Windows 系统的软件包。下载之后,编辑配置文件 frpc.ini :
1
2
3
4
5
6
7
8
9
|
[common]
server_addr = 111.222.333.444
server_port = 5443
token = XXXXXXXX
[web]
type = http
local_port = 8000
custom_domains = xxx.chenshaowen.com
|
参数说明:
- server_addr,服务器端的 IP 地址
- server_port,服务器端绑定的端口
- token,frp 服务的 token
本地启的是 Django 工程,服务绑定在 8000 端口。同时在 DNS 上,需要将 xxx.chenshaowen.com 指向 111.222.333.444 (frp 服务器端的地址)运行本地客户端:
至此,就可以直接使用公网域名访问本地服务了:
5. 路由器配置
在 KoolShare 软件中心,安装【虚拟内存】和【frpc穿透】插件。配置服务器端信息(使用脚本安装 frp 服务器端成功之后,会打印完整的配置信息)配置端口映射,将外网的访问转发到指定的内网端口:最后别忘了,将【域名配置/SK】中的域名解析到 frp 服务器地址。
6. 参考
- https://github.com/fatedier/frp/blob/master/README_zh.md