目录
介绍
什么是FRP?
FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,专门用于内网穿透。它允许位于私有网络(如家庭或公司网络)中的设备被外部网络访问,解决了许多开发者和运维人员面临的访问限制问题。FRP通过在公网和内网之间建立一个安全的隧道,使得内部服务能够被外部用户访问。
FRP的工作原理
FRP工作原理简单明了,主要分为两个部分:
- frps(服务端):部署在公网服务器上,负责接收来自外部的请求,并将其转发到内网的frpc(客户端)。
- frpc(客户端):部署在内网设备上,负责将内部服务的请求转发到frps,并将外部请求转发到内网服务。
基本架构
[Client] --> [frpc] --> [Router] --> [Internal Service]
|
[frps] --> [Public Server]
FRP的主要特性
- 多协议支持:FRP可以支持TCP、UDP、HTTP、HTTPS等多种协议,适用场景广泛。
- 多种配置方式:支持多种方式进行配置,包括静态配置文件和动态API接口。
- 灵活的域名映射:可以通过配置不同的路径和域名,将请求转发到不同的服务。
- 安全性:支持TLS加密,确保数据在传输过程中不被窃取。
- 高性能:FRP经过优化,能有效处理大量并发连接。
FRP的安装与配置
1. 安装FRP
首先,你需要在你的公网服务器和内网设备上安装FRP。可以从FRP的GitHub页面下载最新版本。
在Linux上安装
# 下载FRP
wget https://github.com/fatedier/frp/releases/download/v0.XXX/frp_0.XXX_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.XXX_linux_amd64.tar.gz
# 进入目录
cd frp_0.XXX_linux_amd64
2. 配置frps(服务端)
在公网服务器上,创建一个名为frps.ini
的配置文件,内容示例如下:
[common]
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
3. 配置frpc(客户端)
在内网设备上,创建一个名为frpc.ini
的配置文件,内容示例如下:
[common]
server_addr = x.x.x.x # 公网服务器的IP地址
server_port = 7000
[web]
type = http
local_ip = 127.0.0.1
local_port = 8080
custom_domains = yourdomain.com
4. 启动FRP
在公网服务器和内网设备上分别启动FRP:
# 启动服务端
./frps -c ./frps.ini
# 启动客户端
./frpc -c ./frpc.ini
5. 测试访问
完成以上步骤后,尝试在浏览器中访问http://yourdomain.com
,如果配置正确,你应该能看到内网服务的响应。
安全性考虑
尽管FRP非常方便,但在使用时仍需注意以下安全措施:
- 使用强密码:在
frps.ini
中设置token,以防止未经授权的访问。
[common]
token = your_secure_token
- 启用TLS:配置HTTPS以加密数据传输,确保数据安全。
- 定期更新:保持FRP的最新版本,以确保安全漏洞被及时修补。
实战
小鸡frp
这里服务端就使用小鸡frp-免费5G量(官方看到请打钱),接下来主要配置客户端
注册后在商店里订阅免费套餐
点击添加隧道
配置隧道,节点随便写一个,协议选择tcp,注意:这里的本地端口要填写 有服务监听的端口-要不然穿透了个寂寞,此处笔者填写8082,后面有介绍。远端端口随便填-这是外部访问的时候用到的端口
复制配置文件,以便后面使用
服务器上安装服务
安装一个监听8082端口的服务
docker compose 安装 it-tools 拥有自己的it工具箱_it-tools docker compose-CSDN博客
访问:
ubuntu服务器 配置客户端
官方文档:快速入门 (chickfrp.com)
#下载文件,如果没有wget请先install
wget https://chickfrp.com/download/frp045/linux/frp_0.45.0_linux_amd64.tar.gz
#解压
tar -zxvf frp*.tar.gz
进入解压后的文件夹,编辑frpc.ini文件
vim frpc.ini
将刚才的配置文件复制进去
防火墙 记得开放8082端口
启动客户端
./frpc
看到success 说明启动成功了
访问
ip 和端口根据 配置文件来
访问成功