项目简介
FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,主要用于内网穿透。它允许用户通过公共网络访问位于私有网络中的服务。FRP 的主要特点包括:
高效性:FRP 采用了高效的网络协议和数据传输机制,能够处理大量并发连接。
灵活的配置:支持多种代理模式,包括 TCP、UDP 和 HTTP,用户可以根据需求灵活配置。
跨平台支持:FRP 可以在多种操作系统上运行,如 Windows、Linux 和 macOS。
安全性:FRP 支持 SSL 加密,可以确保数据传输的安全性。
简易的使用:FRP 提供了简单易用的命令行工具和配置文件,使用户能够快速上手。
可扩展性:用户可以根据具体需求自定义和扩展 FRP 的功能。
FRP 适用于需要远程访问内网服务的场景,比如远程桌面、数据库访问和开发测试环境等。
简单来说,比如你家里有台服务器且没有公网IP。你在学校或者公司想要访问服务器,由于没有公网,你是访问不了的。
实现内网穿透,必须要有一台有公网IP的服务器。比如各大厂商的云服务器等等。这台服务器就称之为代理服务器(Proxy Server)。
1.搭建环境
服务器/VPS
系统:CentOS 7.9
2. frp官网了解更多
https://gofrp.org
3.服务端(含有公网IP服务器)
3.1本地下载
GetHub项目地址:https://github.com/fatedier/frp
根据你环境下载,这边使用的是Linux系统,所以下载frp_0.62.0_linux_amd64的版本。
3.2上传服务器并解压
#打开/usr/local路径文件夹
cd /usr/local
#创建frp文件夹,并且进入
mkdir frp && cd frp
#解压frp_0.62.0_linux_amd64.tar.gz文件,并打开frp_0.62.0_linux_amd64
tar -zxvf 'frp_0.62.0_linux_amd64.tar.gz' && cd 'frp_0.62.0_linux_amd64'
3.3配置frps.toml(服务端配置文件)
#编辑frps配置文件
vim frps.toml
进入frps.service之后按i进入编辑模式,粘贴以下内容
# 客户端与服务连接端口
bindPort = 7000
# 客户端连接服务端时认证的密码
auth.token = "abcjc"
# http协议监听端口
vhostHTTPPort = 28080
# web界面配置
webServer.addr = "0.0.0.0"
#web端口
webServer.port = 7500
#账号
webServer.user = "admin"
#密码
webServer.password = "admin"
粘贴完之后保存编辑文件,按shift + :之后 输入wq(强制保存退出)
3.4运行frps服务
创建 frps.service 文件
#编辑/etc/systemd/system/frps.service文件
sudo vi /etc/systemd/system/frps.service
进入frps.service之后按i进入编辑模式,粘贴以下内容
[Unit]
Description=frp server
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/frp/frp_0.62.0_linux_amd64/frps -c /usr/local/frp/frp_0.62.0_linux_amd64/frps.toml
[Install]
WantedBy=multi-user.target
粘贴完之后保存编辑文件,按shift + :之后 输入wq(强制保存退出)
#检查frp配置文件是否正确
sudo systemctl status frps.service
3.5systemd命令管理frps服务
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
#设置开机自启
sudo systemctl enable frps
启动frps服务端后,检查是否能打开 http://服务器ip:7500 ,若打不开检查以上步骤
4.服务端(没有公网IP服务器)
4.1下载客户端
根据你环境下载,这边使用的是Linux系统,所以下载frp_0.61.2_linux_arm64的版本。
4.2上传服务器并解压
#打开/usr/local路径文件夹
cd /usr/local
#创建frp文件夹,并且进入
mkdir frp && cd frp
#解压frp_0.61.2_linux_arm64.tar.gz文件,并打开frp_0.61.2_linux_arm64
tar -zxvf 'frp_0.61.2_linux_arm64.tar.gz' && cd 'frp_0.61.2_linux_arm64'
4.3配置frpc.toml(客户端配置文件)
#编辑frpc配置文件
vim frpc.toml
进入frps.service之后按i进入编辑模式,粘贴以下内容
serverAddr = "服务器的公网IP"
# 客户端与服务连接端口
serverPort = 7000
# 客户端连接服务端时认证的密码
auth.token = "abcjc"
#HTTP的配置
[[proxies]]
name = "blog"
#协议
type = "http"
# 本地IP地址,请求将被转发到这个地址
localIP = "127.0.0.1"
# 本地端口,请求将被转发到这个端口
localPort = 8080
# 自定义域名,只有匹配这些域名的请求才会被代理
customDomains = ["abcj.cn"]
#TCP的配置
[[proxies]]
name = "rdp"
#协议
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
# 远程端口,外部客户端将通过这个端口连接到代理
remotePort = 23389
粘贴完之后保存编辑文件,按shift + :之后 输入wq(强制保存退出)
4.4运行frpc服务
创建 frpc.service 文件
#编辑/etc/systemd/system/frpc.service文件
sudo vi /etc/systemd/system/frpc.service
进入frpc.service之后按i进入编辑模式,粘贴以下内容
[Unit]
#描述服务的用途,这里说明这是一个 Frp 客户端服务。
Description=Frp Client Service
#表示该服务会在网络服务启动之后才启动,确保网络可用后再运行 Frp 客户端。
After=network.target
[Service]
#指定启动服务的命令。这里运行 frpc 可执行文件,并加载配置文件 frpc.toml。需要注意自己的文件路径
ExecStart=/usr/local/frp/frp_0.61.2_linux_arm64/frpc -c /usr/local/frp/frp_0.61.2_linux_arm64/frpc.toml
#表示这是一个简单的服务类型。simple 是默认类型,适用于服务进程在前台运行且不会派生子进程的情况。
Type=simple
[Install]
WantedBy=multi-user.target
粘贴完之后保存编辑文件,按shift + :之后 输入wq(强制保存退出)
#检查frp配置文件是否正确
sudo systemctl status frpc.service
3.5systemd命令管理frpc服务
# 启动frp
sudo systemctl start frpc
# 停止frp
sudo systemctl stop frpc
# 重启frp
sudo systemctl restart frpc
#设置开机自启
sudo systemctl enable frpc