frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
为什么选择 frp?
通过在具有公网 IP 的节点上部署 frp 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:
-
多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。 -
TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。代理组间的负载均衡。 -
端口复用:多个服务可以通过同一个服务端端口暴露。 -
P2P 通信:流量不必经过服务器中转,充分利用带宽资源。 -
客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。 -
服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。
传送门
https://github.com/fatedier/frp/blob/dev/README_zh.md
示例
通过 SSH 访问内网机器
通过简单配置 TCP 类型的代理,使用户能够访问内网服务器。
1、在具有公网 IP 的机器上部署 frps
部署 frps 并编辑 frps.toml
文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:
bindPort = 7000
2、在需要被访问的内网机器上部署 frpc
部署 frpc 并编辑 frpc.toml
文件,假设 frps 所在服务器的公网 IP 地址为 x.x.x.x
。以下是示例配置:
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
localIP
和localPort
配置为需要从公网访问的内网服务的地址和端口。remotePort
表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。
3、启动 frps 和 frpc
4、通过 SSH 访问内网机器
使用以下命令通过 SSH 访问内网机器,假设用户名为 test:
ssh -o Port=6000 test@x.x.x.x
frp 将请求发送到 x.x.x.x:6000
的流量转发到内网机器的 22 端口。
通过自定义域名访问内网的 Web 服务
通过简单配置 HTTP 类型的代理,您可以让用户通过自定义域名访问内网的 Web 服务。
HTTP 类型的代理非常适合将内网的 Web 服务通过自定义域名提供给外部用户。相比于 TCP 类型代理,HTTP 代理不仅可以复用端口,还提供了基于 HTTP 协议的许多功能。
HTTPS 与此类似,但是需要注意,frp 的 https 代理需要本地服务是 HTTPS 服务,frps 端不会做 TLS 终止。也可以结合 https2http 插件来实现将本地的 HTTP 服务以 HTTPS 协议暴露出去。
1、配置 frps.toml
在 frps.toml
文件中添加以下内容,以指定 HTTP 请求的监听端口为 8080
:
bindPort = 7000
vhostHTTPPort = 8080
如果需要配置 HTTPS 代理,还需要设置 vhostHTTPSPort
。
2、配置 frpc.toml
在 frpc.toml
文件中添加以下内容,确保设置了正确的服务器 IP 地址、本地 Web 服务监听端口和自定义域名:
serverAddr = "x.x.x.x"
serverPort = 7000
[[proxies]]
name = "web"
type = "http"
localPort = 80
customDomains = ["www.yourdomain.com"]
[[proxies]]
name = "web2"
type = "http"
localPort = 8080
customDomains = ["www.yourdomain2.com"]
3、启动 frps 和 frpc
4、域名解析
将 www.yourdomain.com
和 www.yourdomain2.com
的域名 A 记录解析到服务器的 IP 地址 x.x.x.x
。如果服务器已经有对应的域名,您还可以将 CNAME 记录解析到原始域名。另外,通过修改 HTTP 请求的 Host 字段也可以实现相同的效果。
5、通过浏览器访问
使用浏览器访问 http://www.yourdomain.com:8080
即可访问内网机器上的 80 端口服务,访问 http://www.yourdomain2.com:8080
可以访问内网机器上的 8080 端口服务。
原文始发于微信公众号(开源技术专栏):一款高性能的反向代理应用 frp ,专注于内网穿透
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/191925.html