利用云服务器/VPS通过Frp简单实现内网设备公网访问

duanchangdi
91
2025-04-17

项目简介

FRP(Fast Reverse Proxy)是一个高性能的反向代理应用,主要用于内网穿透。它允许用户通过公共网络访问位于私有网络中的服务。FRP 的主要特点包括:

  1. 高效性:FRP 采用了高效的网络协议和数据传输机制,能够处理大量并发连接。

  2. 灵活的配置:支持多种代理模式,包括 TCP、UDP 和 HTTP,用户可以根据需求灵活配置。

  3. 跨平台支持:FRP 可以在多种操作系统上运行,如 Windows、Linux 和 macOS。

  4. 安全性:FRP 支持 SSL 加密,可以确保数据传输的安全性。

  5. 简易的使用:FRP 提供了简单易用的命令行工具和配置文件,使用户能够快速上手。

  6. 可扩展性:用户可以根据具体需求自定义和扩展 FRP 的功能。

FRP 适用于需要远程访问内网服务的场景,比如远程桌面、数据库访问和开发测试环境等。

简单来说,比如你家里有台服务器且没有公网IP。你在学校或者公司想要访问服务器,由于没有公网,你是访问不了的。

实现内网穿透,必须要有一台有公网IP的服务器。比如各大厂商的云服务器等等。这台服务器就称之为代理服务器(Proxy Server)。

1.搭建环境

  • 服务器/VPS

  • 系统:CentOS 7.9

2. frp官网了解更多

  • https://gofrp.org

3.服务端(含有公网IP服务器)

3.1本地下载

根据你环境下载,这边使用的是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