一个非常棒的内网穿透工具frp

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

 

我在开发微信公众号时用到了,当我们调试公众号消息时,需要用到公网环境,如果没有内网穿透,微信公众号消息就无法送达到我们的服务,如果你没有公网服务器,我以前写过一篇文章,是使用ngrok调试微信公众号开发的。这次我们讲下,使用frp实现内网穿透服务。

 

我先讲下为何使用frp?

 

首先,我们看下frp的特性。它通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
  • 客户端服务端通信支持 TCP、QUIC、KCP 以及 Websocket 等多种协议。

  • 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间,降低请求延迟。

  • 代理组间的负载均衡。

  • 端口复用,多个服务通过同一个服务端端口暴露。

  • 支持 P2P 通信,流量不经过服务器中转,充分利用带宽资源。

  • 多个原生支持的客户端插件(静态文件查看,HTTPS/HTTP 协议转换,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。

  • 高度扩展性的服务端插件系统,易于结合自身需求进行功能扩展。

  • 服务端和客户端 UI 页面。


然后,我讲下我的现场环境,我有一台公网云服务器,这台服务器运行我的公众号服务,现在我要在本地开发公众号服务并进行调试。我需要借助服务器的公网环境。如果你没有公网云服务器,你想要一台公网云服务器,从下面的链接购买有优惠。

 

想在阿里云购买,请使用这个链接:

https://www.aliyun.com/minisite/goods?userCode=zrqh6alb

 

想在腾讯云购买,请使用这个链接:

https://curl.qcloud.com/XX6que5w

 

通过以上链接购买,有很大优惠。

 

现在,我讲下如何安装配置frp。

 

frp采用Golang语言编写,支持跨平台,只需下载适合的二进制文件即可执行,无需额外依赖。可以在项目的Release中进行下载。我们需要将frpc复制到您的内网主机,将frps复制到您的拥有公网IP的服务器上。

 

我们以微信公众号开发环境为例来进行配置。

 

一、在你的本地内网主机,配置frpc.toml文件。

serverAddr = "x.x.x.x"serverPort = 7000
[[proxies]]name = "test_htts2http"type = "https"customDomains = ["test.yourdomain.com"]
[proxies.plugin]type = "https2http"localAddr = "127.0.0.1:80"
# HTTPS 证书相关的配置crtPath = "./server.crt"keyPath = "./server.key"hostHeaderRewrite = "127.0.0.1"requestHeaders.set.x-from-where = "frp"

注意:

1,HTTP SSL证书可以使用阿里云、或腾讯云的免费SSL证书,可以使用3个月。

2,它还需要https2http插件,它可以将本地HTTP服务转换为HTTPS服务,以供外部访问。

3,需要将test.yourdomain.com域名解析到你的公网IP上,即serverAddr对应的IP地址。

 

二、在你的公网服务器上,配置frps.toml文件。

bindPort = 7000vhostHTTPSPort = 443

注意:bindPort是frpc客户端连接的端口,vhostHTTPSPort是对外提供HTTPS服务的端口。您需要将服务器的防火墙放开7000和443端口。

 

三、启动服务

 

我们需要分别启动frps和frpc,启动命令如下:

./frps -c ./frps.toml./frpc -c ./frpc.toml

四、访问HTTPS服务

 

打开您的Web浏览器,访问https://test.yourdomain.com。就可以访问您的内网服务了。微信公众号开发则需将域名地址配置到公众号管理后台。然后本地就可以进行公众号开发调试了。

 

frp除了可以支持处理HTTP服务外,还支持其它多种服务。我觉得其中不错的功能还有处理SSH服务,可以配置frp实现通过公网访问内网SSH服务,这个可以用在家里的小主机上,可实现远程访问内网服务器。我还使用frp进行过集成支付宝联调。frp还有一些其它应用场景,可能你会用到。想要了解更多的内容请查看frp项目地址:

 

https://github.com/fatedier/frp

posted on 2024-09-23 10:19  IT-QI  阅读(60)  评论(0编辑  收藏  举报