Please enable Javascript to view the contents

使用 frp 将本地服务发布到公网

 ·  ☕ 3 分钟

1. 什么是 frp

frp 是一个高性能的反向代理应用,提供的功能有:

  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务
  • 对于 http、https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口
  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机

2. 架构和部署

frp 采用的是 C/S 架构。在使用时,需要:

  1. 部署服务端,将 frps 及 frps.ini 放到具有公网 IP 的机器上,运行 frps;

  2. 部署客户端,将 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 服务器端的地址)

运行本地客户端:

1
./frpc -c ./frpc.ini

至此,就可以直接使用公网域名访问本地服务了:

5. 路由器配置

在 KoolShare 软件中心,安装【虚拟内存】和【frpc穿透】插件。

配置服务器端信息(使用脚本安装 frp 服务器端成功之后,会打印完整的配置信息)

配置端口映射,将外网的访问转发到指定的内网端口:

最后别忘了,将【域名配置/SK】中的域名解析到 frp 服务器地址。

6. 参考


微信公众号
作者
微信公众号