1.背景
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。场景:近期在研究微信公众号开发,发现需要暴露公网地址,并且是80端口的服务,正好手边有朋友买了腾讯云服务器,因此想通过腾讯云服务器作为frp的服务端,本地机器作为客户端,让公网可以直接访问内网本地机器发布的服务,实现内网穿透。
2.作用
利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。
对于 http, https 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。
利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
3.具体实现
通过tcp方式访问公司内网服务(当前公网服务器没有绑定域名的情况下)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #修改 frps.ini 文件,这里使用了最简化的配置: # frps.ini [common] bind_port = 7000 启动 frps: ./frps -c ./frps.ini
#修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x; # frpc.ini [common] server_addr = x.x.x.x server_port = 7000
[ssh] type = tcp local_ip = 127.0.0.1 local_port = 8088 remote_port = 80 启动 frpc: ./frpc -c ./frpc.ini
|
通过http的方式访问公司内网服务(当前公网服务器已经绑定域名的情况下)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #修改 frps.ini 文件 [common] # frp服务监听client的端口 bind_port = 7000 # http形式的外网开放端口 vhost_http_port = 7001 # 子域名 subdomain_host = vic.com
#修改 frpc.ini 文件 [http-8088] # http-8051 表示名字,随便起 # type有http、tcp等多种类型,一般只用这两种 type = http # 需要穿透内网服务的ip local_ip = 192.168.1.187 # 内网服务的端口 local_port = 8088 # 子域名,因为ynt.ai开启了域名泛解析,二级域名只是作为每个服务的区分 # 不可与其他服务的子域名重复 subdomain = test # 比如这个服务只用访问 http://test.vic.com:7001就可以访问到
|
通过浏览器查看 frp 的状态以及代理统计信息展示。需要在 frps.ini 中指定 dashboard 服务使用的端口,即可开启此功能:
1 2 3 4 5
| [common] dashboard_port = 7500 # dashboard 用户名密码,默认都为 admin dashboard_user = admin dashboard_pwd = admin
|
打开浏览器通过 http://[server_addr]:7500
访问 dashboard 界面,用户名密码默认为 admin
。