FRP是一个开源的内网穿透软件,本文将会介绍如何使用frp。
原理解释
背景
- 我们有一台能访问公网,但是没有公网ip(不能为外部提供服务的server)
- 我们有一台阿里云之类的云服务器,有公网ip
目的
- 让不能为外部提供服务的server 借用云服务器转发,从而为公网提供服务
下载和安装
从github下载之后我们会得到这些文件:
1frpc 放在本地server上
2frpc.ini frpc的配置文件
3frpc_full.ini frpc的配置文件(有完整的注释和例子)
1frps 放在云服务器上
2frps.ini frps的配置文件
3frps_full.ini frps的配置文件(有完整的注释和例子)
配置文件怎么写
以防我写的不对,首先推荐看这里:github官方例子
frps.ini
1[common]
2#开一个端口,用于转发信息的接收
3bind_port = 7000
4#开一个监控台,可以在web上面直观的看到frp运行情况
5dashboard_addr = 0.0.0.0
6dashboard_port = 7500
然后把frps
、frps.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控制台