如何使用FRP

FRP是一个开源的内网穿透软件,本文将会介绍如何使用frp。

frp - github

原理解释

背景

  • 我们有一台能访问公网,但是没有公网ip(不能为外部提供服务的server)
  • 我们有一台阿里云之类的云服务器,有公网ip

目的

  • 不能为外部提供服务的server 借用云服务器转发,从而为公网提供服务

下载和安装

从github下载之后我们会得到这些文件:

1frpc		放在本地server上
2frpc.ini	frpc的配置文件
3frpc_full.ini	frpc的配置文件(有完整的注释和例子)
1frps		放在云服务器上
2frps.ini	frps的配置文件
3frps_full.ini	frps的配置文件(有完整的注释和例子)

0F7357E41313BFC9B317E8F17213C134

配置文件怎么写

以防我写的不对,首先推荐看这里:github官方例子

frps.ini

1[common] 
2#开一个端口,用于转发信息的接收
3bind_port = 7000
4#开一个监控台,可以在web上面直观的看到frp运行情况
5dashboard_addr = 0.0.0.0
6dashboard_port = 7500

然后把frpsfrps.ini 放到服务器上,赋予执行权限(我就无脑chomd777)

记得把云服务器的安全组策略(在云服务商的控制台界面里面)打开,然后就可以去编辑frpc了

frpc.ini

 1[common]
 2#输入你服务器的ip、服务器的接收端口,进行frp链接
 3server_addr = x.x.x.x
 4server_port = 7000
 5
 6[ssh]
 7#开启一些其他的转发,比如ssh,按照下面配置相当于把 127.0.0.1:22 转发到 x.x.x.x:6000
 8type = tcp
 9local_ip = 127.0.0.1
10local_port = 22
11remote_port = 6000
12
13# tcp和udp端口转发等
14[range:tcp_port]
15type = tcp
16local_ip = 127.0.0.1
17local_port = 6010-6020,6022,6024-6028
18remote_port = 6010-6020,6022,6024-6028
19use_encryption = false
20use_compression = false
21
22[range:udp_port]
23type = udp
24local_ip = 127.0.0.1
25local_port = 6010-6020
26remote_port = 6010-6020
27use_encryption = false
28use_compression = false

服务启动

1# 在云上启动服务端(接受和转发)(推荐用screen)
2./frps -c ./frps.ini
3
4# 在本地启动客户端(发送)
5./frpc -c ./frpc.ini

本地成功的输出:

12022/03/12 08:54:09 [I] [service.go:178] [356c08cc36fd0fc1] try to reconnect to server...
22022/03/12 08:54:09 [I] [service.go:325] [356c08cc36fd0fc1] login to server success, get run id [356c08cc36fd0fc1], server udp port [0]
32022/03/12 08:54:09 [I] [proxy_manager.go:144] [356c08cc36fd0fc1] proxy added: [ssh]
42022/03/12 08:54:09 [I] [control.go:181] [356c08cc36fd0fc1] [ssh] start proxy success

云端成功的输出:

 1root@VM-12-6-ubuntu:/home/frp# sudo ./frps -c ./frps.ini
 22022/03/12 08:53:51 [I] [root.go:200] frps uses config file: ./frps.ini
 32022/03/12 08:53:51 [I] [service.go:193] frps tcp listen on 0.0.0.0:7000
 42022/03/12 08:53:51 [I] [service.go:292] Dashboard listen on 0.0.0.0:7500
 52022/03/12 08:53:51 [I] [root.go:209] frps started successfully
 62022/03/12 08:54:06 [I] [dashboard_api.go:70] Http request: [/api/serverinfo]
 72022/03/12 08:54:06 [I] [dashboard_api.go:63] Http response [/api/serverinfo]: code [200]
 82022/03/12 08:54:09 [I] [service.go:449] [356c08cc36fd0fc1] client login info: ip [211.161.248.81:2910] version [0.40.0] hostname [] os [linux] arch [amd64]
 92022/03/12 08:54:09 [I] [tcp.go:64] [356c08cc36fd0fc1] [ssh] tcp proxy listen port [6000]
102022/03/12 08:54:09 [I] [control.go:465] [356c08cc36fd0fc1] new proxy [ssh] success

检查frp控制台

image


关于我从CLASH切换到v2rayN这件事
游戏自动录屏利器 Overwolf + Medaltv