入门阅读
写在前面
关于frp
frp (Fast Reverse Proxy)是一项反向代理技术的实现,大多数客户端代码(如LoliaFrpClient)均参考于上游 fatedier/frp 的实现。
LoliaFRP支持使用上游版本连接服务。
简单的说frp的功能是用于将内网的服务暴露到公网,并允许外部用户访问暴露的内网服务。
它能做什么
暴露你希望暴露的服务到公网。
常见的服务例如:
- 各类游戏服务器的房主,如Minecraft Server等
- 远程桌面,如Remote Desktop Service,SSH,VNC Server等
- 数据库,例如MySQL, MariaDB, PostgreSQL等
它的原理是什么
frp分为frp server(frps)和frp client(frpc),在用户(您)的电脑上,运行frpc,在公网的服务器上,运行frps。
流程上相当于访客连接到frps,然后frps把流量转发到frpc上,并从frpc的机器上连接到你的服务(一般是本机,即127.0.0.1)。
当客户端连接到服务端后,服务端监听对应的端口,并将网络请求从服务端发送到客户端。
frpc连接到frps后会先建立一个或多个长连接,用于承载传输的数据。
frpc必须先连接到frps,才能建立数据转发的通道,因此如果frpc不在线,frps是无法转发的,表现为访客无法连接到您的服务。
同样的,如果您本地的服务不在线,frpc无法连接到您本地的服务时,也表现为无法连接到您的服务。
受篇幅限制,这一部分不能涵盖所有内容,感兴趣可以前往SakuraFrp 帮助文档查看。
选择的隧道类型
通常这取决于您的服务和应用要求使用哪种隧道。常见的列表如下,具体请参考您的服务的文档。
| 应用 | 类型 |
|---|---|
Minecraft Java Edition | TCP |
Minecraft Bedrock Edition | UDP |
Remote Desktop Service | TCP+UDP |
SSH | TCP |
Nginx, Apache | HTTP(S) |
各类路由器,NAS管理页面 | HTTP(S) |
HTTP(S)隧道基于TCP,但对Web服务进行了特殊优化。
Lolia Frp不允许使用TCP隧道进行Web服务穿透。
使用frp前的注意事项
首先,任何服务暴露在公网均存在安全风险。以下是针对网络安全的一般建议:
- 保持您的系统,软件和服务拥有最新的安全补丁。
绝大多数应用程序的更新都会带来安全补丁,在ai日渐强大的今天,许多漏洞允许在您的电脑上通过暴露的服务对您的电脑执行攻击操作例如远程命令执行 (RCE)等,这极可能危害您的数据安全。
如果您不能确定您的应用是安全的,或者您不能确定您的风险是受妥善隔离的,请审慎评估后再使用FRP等服务。
例如对于ssh等,禁用所有账号的密码登录,仅允许通过ssh使用密钥对登录。对于Windows RDP,使用强密码,不要使用容易被暴力破解和易于猜测的密码,如果您不确定您的密码是否安全,可以尝试使用密码管理器生成一个密码,并妥善的保管。
- 某些单位,学校可能不能连接到frp服务。
涉密不上网,上网不涉密。如果您的服务包含任何商业机密,国家机密等,请不要使用frp,询问IT管理员或您的上级领导后再操作。
这通常是基于某些网络管理策略,终端管理策略实现的,它们通过识别frp的协议特征,定向阻断相关的流量。
另一种常见方式是采集相关的服务器域名,通过dns获取ip后直接拦截相关ip的请求(相对少见)。
如果您在使用家庭网络却仍然无法连接到服务,请尝试更换节点。
总之,希望您在冲浪的时候,多多的关注您的信息安全。