logo头像

猪老大要进步!

部署Frp内网穿透

本文于 324 天之前发表,文中内容可能已经过时。

Frp是一个简单高效的内网穿透工具,在GitHub上开源,并有一直更新的release版本。

官网

gofrp官网

gofrp官网示例

example

配置

服务端

修改.ini文件

1
2
3
4
5
6
7
8
[common]
bind_port = 7000
dashboard_port = 7500
token = password
dashboard_user = username
dashboard_pwd = password
vhost_http_port = 80
vhost_https_port = 443

这里的vhost_http_portvhost_https_port表示默认的http和https穿透端口,我们改成默认端口80和443。

如果设置vhost_http_port = 8080,那么客户端选择http服务时,要在子域名后面加上端口号才可以访问。

客户端

修改.ini文件,如果http网站没有域名,可以使用tcp(如下方的ssh);如果需要穿透到域名,则使用http/https。

如果选择https,一般直接把SSL证书交给frp客户端,使用https转http的插件(自带)即可。如果内网部署的服务不在80端口,一定要在plugin_host_header_rewrite里面加上端口号!

下面是我的配置,网站可以只开https,关掉http。

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
[common]
server_addr = 公网IP
server_port = 7000
token = password

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7022

[main_http]
type = http
local_port = 80
custom_domains = doamin.com

[main_https]
type = https
custom_domains = doamin.com

plugin = https2http
plugin_local_addr = 127.0.0.1:80

# HTTPS 证书相关的配置
plugin_crt_path = ./doamin.com_bundle.crt
plugin_key_path = ./doamin.com.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp

[hexo_http]
type = http
local_port = 7080
custom_domains = hexo.doamin.com

[hexo_https]
type = https
custom_domains = hexo.doamin.com

plugin = https2http
plugin_local_addr = 127.0.0.1:7080

# HTTPS 证书相关的配置
plugin_crt_path = ./hexo.doamin.com_bundle.crt
plugin_key_path = ./hexo.doamin.com.key
plugin_host_header_rewrite = 127.0.0.1:7080
plugin_header_X-From-Where = frp

[trans_http]
type = http
local_port = 7050
custom_domains = trans.doamin.com

[trans_https]
type = https
custom_domains = trans.doamin.com

plugin = https2http
plugin_local_addr = 127.0.0.1:7050

# HTTPS 证书相关的配置
plugin_crt_path = ./trans.doamin.com_bundle.crt
plugin_key_path = ./trans.doamin.com.key
plugin_host_header_rewrite = 127.0.0.1:7050
plugin_header_X-From-Where = frp

然后开机自启动,在/etc/rc.local中添加,记得把frpc的地址改为自己的:

1
nohup /root/tools/frp/frpc -c /root/tools/frp/frpc.ini > /tmp/frp_client.log 2>&1 &

域名解析

域名解析是困扰我最多的一个问题,最后还是在frp官网上找到了答案。

dns

http下面的二级域名不需要通过隐式url转到主域名:端口,而是直接A解析到IP地址即可。而https的话,在申请ssl证书时候,腾讯云会自动给加上解析。

tencentdns

参考文献

  1. 使用frp进行内网穿透 - 少数派 (sspai.com)
  2. 新手入门 - 详解 frp 内网穿透 frpc.ini 配置 - 思有云 - IOIOX
  3. 安装 | frp (gofrp.org)
  4. https://github.com/fatedier/frp/
  5. 新手入门 - 详解 frp 内网穿透 frpc.ini 配置 - 思有云 - IOIOX
  6. 使用frp无域名http内网穿透配置 - 掘金 (juejin.cn)
支付宝打赏 微信打赏

赞赏是不耍流氓的鼓励