frp内网穿透,搭建公共服务端

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, udp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

以上是对frp的介绍,frp就是类似ngrock的开源程序,他的作用就是让你在本地开发的服务能够实时对外提供服务。

这里 提供了一个免费的frp服务,那我们如何搭建自己的frp服务呢?

准备材料:

  1. 一台拥有公网IP的VPS或云服务器。

  2. github frp,从这里下载一个能在服务器运行的压缩包,在服务器解压。当前最新版本为V0.20.0,以下也以该版本演示。

  3. 一个域名。

服务器设置

写一个tmp.ini配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[common]
# 服务器frp绑定端口
bind_port = 7000

# http服务所在端口
vhost_http_port=80

# 0.10.0版本后取消
# privilege_mode = true
# 被token代替
# privilege_token = token1
token = 12345678

# 服务器端流量统计
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

接下来启动服务:

1
nohup ./frps -c tmp.ini >> log &

配置域名 [*.yourDomain.com]A记录解析到你的服务器IP。

本地设置:

下载一个能在你的计算机中运行的frp压缩包。解压并打开文件夹。

写一个配置文件frpc.ini

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[common]
# 服务器IP地址
server_addr = yourIP
# 服务器端口
server_port = 7000

# 被token代替
# privilege_token=token1
token = 12345678

[web]
# web服务类型
type=http
# 本地端口
local_port=80

privilege_mode = true
# 自己指定的域名,该域名需要指向服务器IP
custom_domains=xxxx.yourDomain.com
# 添加basic验证
http_user = abc
http_pwd = abc

# 暴露内网ssh服务
[ssh]
type = tcp
local_ip = 127.0.0.1
# 本地ssh服务端口
local_port = 22
# 服务器映射端口
remote_port = 6000
# 加密与压缩
use_encryption = true
use_compression = true

# 提供简单的文件服务
[common]
server_addr = x.x.x.x
server_port = 7000

[test_static_file]
type = tcp
remote_port = 6001
plugin = static_file
# 要对外暴露的文件目录
plugin_local_path = /home
# 访问 url 中会被去除的前缀,保留的内容即为要访问的文件路径
plugin_strip_prefix = static
plugin_http_user = abc
plugin_http_passwd = abc

启动本地服务,然后访问xxxx.yourDomain.com,即可在这个域名上打开你本地提供的服务了。

参考:https://github.com/fatedier/frp/blob/master/README_zh.md