使用frp进行内网穿透

前言

去年有整理过《jenkins自动化构建最佳实践》,其中提到内网穿透的方案,那是阿里出的一个临时工具,实际上并不好用。因为他仅仅是个临时方案,超过一定时长会掉线。

由于特定的场景,我有台闲置的 MacBook Pro 处于长期开机中,主要用于编译的任务。

今天大致的介绍下我是如何使用frp的,frp可以理解整一个代理软件,分为服务器端和客户端。像我这个需求就必须需要一台带外网IP的服务器,在这台服务器进行 frps 的相关配置,而在macbook上进行 frpc 相关配置。

frp

服务器端配置 frps.ini

1
2
3
4
5
6
7
8
9
10
11
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 8000
max_pool_count = 20
allow_ports = 2000-3000,6081,4000-50000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = 123456
token = 123456
authentication_timeout = 90000

启动方式:frps -c ./frps.ini

  1. token = 123456 这个参数比较重要,要与客户端一致,用于验证。
  2. 几个开启服务器端的 700080007500 以及客户端需要用到的端口。

客户端配置 frc.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#frc.ini
[common]
server_addr = 服务器端IP
server_port = 7000
token = 123456
#tls_enable = true


#公网访问内部web服务器以http方式
[web00]
type = http
local_port = 8000
custom_domains = xxx.fanfq.com

启动方式:frpc -c ./frpc.ini

  1. 通过 http://服务器端IP:7500 即可访问daskbord 查阅当前端口使用情况。
  2. 配置DNS将指定域名指向服务器端的,随后外网就可以通过 http://xxx.fanfq.com:8000,访问客户端 8000 端口。

多客户端,多端口配置

如果此时有另外一台客户端也需要做内网穿透,那么如下配置新的客户端即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#frc.ini
[common]
server_addr = 服务器IP
server_port = 7000
token = 123456
#tls_enable = true

#公网访问内部web服务器以http方式
[web01]
type = tcp
local_port = 8083
custom_domains = xxx.fanfq.com
remote_port = 8083

[web02]
type = tcp
local_port = 8084
custom_domains = xxx.fanfq.com
remote_port = 8084

其中通讯协议采用 type = tcp,而 remote_port = 8083是指告诉服务器端通过此端口访问。
那么此时通过 http://xxx.fanfq.com:8083http://xxx.fanfq.com:8084 即可访问此客户端了。

扩展

  1. https反向代理支持。比如通过 https://xxx.fanfq.com - >http://xxx.fanfq.com:8083 在服务器端通过 nginx配置证书以及反向代理即可

  2. 开机自启动,这个方式太多了就不多介绍了。

Fred范方青 wechat
项目合作请联系我私人微信: fredtv23
0%