frp是一款内网穿透工具,它可以让处于内网或防火墙后的设备对外界提供服务
下载和安装
查看系统版本
uname -a
然后根据系统类型在frp releases下载对应版本的frp
解压
# server
tar -zxvf frp_0.34.3_linux_amd64.tar.gz
# client
tar -zxvf frp_0.34.3_darwin_amd64.tar.gz
服务端配置
进入解压后的目录,我们主要关注以下几个配置文件,服务端配置文件frps
和frps.ini
,以及客户端配置文件frpc
和frpc.ini
。由于现在配置的是服务端,客户端配置文件可先忽略。
frps.ini
[common]
bind_port = 7000
dashboard_port = 7500
# dashboard 用户名密码,默认都为 admin,如果不需要,需要主动设置为空
dashboard_user = admin
dashboard_pwd = admin
- bind_port 必须。服务端运行端口
- dashboard_port 可选。服务端管理后台的运行端口,在配置完成后可以通过
server_ip:dashboard_port
访问。文档地址https://gofrp.org/docs/features/common/ui/ - token 可选。服务端和客户端之间口令
- dashboard_user 可选。管理后台用户名
- dashboard_pwd 可选。管理后台用户密码
运行
./frps -c frps.ini
如果输出以下内容表示服务启动成功了
2020/12/08 22:57:31 [I] [service.go:190] frps tcp listen on 0.0.0.0:7000
2020/12/08 22:57:32 [I] [service.go:289] Dashboard listen on 0.0.0.0:7500
2020/12/08 22:57:32 [I] [root.go:215] start frps success
如果要让服务后台运行,输入
nohup ./frps -c frps.ini
客户端配置
./frpc.ini
[common]
server_addr = server_ip_address
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 8888
remote_port = 8888
- type = tcp 公网连接内网服务使用的协议
- server_addr 服务器的ip地址
- server_port 服务端frp运行端口
- local_ip、local_port 本地需要暴露到公网的服务地址和端口
- remote_port 服务端frp监听端口,访问此端口的流量将会被转发到本地服务对应的端口(local_port)。
运行服务
./frpc -c frpc.ini
如果看到以下输出表示服务运行正常
2020/12/08 23:26:16 [I] [service.go:288] [d435dea2236599d2] login to server success, get run id [d435dea2236599d2], server udp port [0]
2020/12/08 23:26:16 [I] [proxy_manager.go:144] [d435dea2236599d2] proxy added: [ssh]
2020/12/08 23:26:16 [I] [control.go:180] [d435dea2236599d2] [ssh] start proxy success
服务端和客户端都配置成功后,外网的主机通过server_ip:remote_ip
就可以访问到部署在本地的服务了。frp还有许多其他应用,可以参考这些示例学习。