你是否苦恼于家中的nas无法在外访问?想建游戏服务器却不想购买高昂费用的云服务器?想要用家里面的设备搭建网站?如果你有这些方面的需求,那么这篇文章可以帮助到你,这篇文章将从原理,以及搭建,一步一步的教会你。
1.原理介绍
frp (Fast Reverse Proxy) 是一种高性能的反向代理应用,其核心原理是通过一个具有公网 IP 的中转节点,在处于内网的客户端与外网用户之间建立一条通信隧道。
a.为什么需要 frp?
通常情况下,内网设备(如家里的 NAS、树莓派)由于没有公网 IP,且处于防火墙或路由器(NAT)之后,外网用户无法直接发起访问。frp 解决了这种“看得见外网,外网看不见你”的困境。
b.核心组件
frp 采用 C/S(客户端/服务端)架构:
frps (frp server):部署在具有公网 IP 的服务器上,负责监听连接并转发流量。
frpc (frp client):部署在内网设备上,负责主动向公网服务器发起连接,建立隧道。
c.工作原理流程
frp 实现穿透的过程可以分为以下四个主要步骤:
-
建立控制通道:内网的
frpc启动后,会主动连接公网的frps,并告知自己需要映射的端口(例如将内网的 22 端口映射到公网的 6000 端口)。双方会保持一个长连接作为控制链路。 -
外网请求接入:当外网用户访问公网服务器的指定端口(如
公网IP:6000)时,frps会收到该连接请求。 -
触发数据传输:
frps通过之前的控制通道通知frpc:“有人要访问你,请建立一条新的数据通道”。 -
流量转发(中转模式):
frpc收到通知后,立即连接内网服务(如 SSH),同时向frps发起一个新的数据连接。随后,frps将外网用户的请求流量通过这条隧道实时转发给frpc,frpc再传给内网服务。
d.传输模式分类
frp 支持多种工作模式,以适应不同的网络环境:
-
TCP/UDP 打洞(常用):最基础的流量转发,支持多种协议。
-
HTTP/HTTPS 代理:专为 Web 服务设计,支持通过域名分发请求(多域名共享一个 80 端口)。
-
P2P 穿透 (xtcp):尝试在内网与外网用户之间直接建立连接,流量不经过中转服务器,从而节省服务器带宽并降低延迟。
图解:
2.正式部署
学会原理之后,下一步就准备着手开始实践了。首先你需要一个云服务器,可前往“阿里云”“腾讯云”等云服务商购买,可选择香港等境外地区可免备案,核心和内存尽可能按最小买,但是带宽尽量买大一点的;其次你需要一个域名,同样前往云服务商进行选择购买;最后你需要一个能联网的设备,比如说家用nas。
这里云服务器和nas设备均用Debian系统演示。
首先你需要在云服务器终端输入以下命令。