1.下载
frp安装包下载地址:https://github.com/fatedier/frp/releases
选择最新版,我示例的版本是:0.59;linux和windows下载对应的版本,通常都是amd64内核版。
下载后所有文件都打包在一个压缩包中,还包含了一份完整的配置参数说明:
- 解压下载的压缩包。
- 将
frpc
复制到内网服务所在的机器上。 - 将
frps
复制到拥有公网 IP 地址的机器上,并将它们放在任意目录。
2.服务端部署,配置
在 Linux 系统下,使用 systemd
可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。
# 使用 yum 安装 systemd(CentOS/RHEL)
yum install systemd
# 使用 apt 安装 systemd(Debian/Ubuntu)
apt install systemd
# 使用文本编辑器 (如 vim) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。
$ sudo vim /etc/systemd/system/frps.service
##########################################################
写入内容:
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.toml
[Install]
WantedBy = multi-user.target
############################################################
# 使用 systemd 命令管理 frps 服务
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
# 设置 frps 开机自启动
sudo systemctl enable frps
通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。
服务端配置文件(frps.toml)如下:
bindPort = 7000 # 服务端与客户端通信端口
# vhostHTTPPort = 8080 # HTTP 请求的监听端口为 8080
# transport.tls.force = true # 服务端将只接受 TLS链接
# auth.token = "public" # 身份验证令牌,frpc要与frps一致 -- 可修改
# Server Dashboard,可以查看frp服务状态以及统计信息
# webServer.addr = "0.0.0.0" # 后台管理地址
# webServer.port = 7500 # 后台管理端口
# webServer.user = "admin" # 后台登录用户名
# webServer.password = "admin" # 后台登录密码
部署成功后,查看状态:
3.客户端部署,配置(以windows为案例)
windows的客户端下载解压后是包含一个配置文件 frpc.toml,和一个可执行文件frpc.exe。
所以客户端的部署很简单,只需要通过在当前目录下cmd,执行命令:frpc.exe -c ./frpc.toml
frpc.toml配置如下:
serverAddr = "x.x.x.x" # frps 所在服务器的公网 IP 地址为 x.x.x.x
serverPort = 7000
# auth.method = 'token' # 客户端访问验证方式
# auth.token = '54321' # 客户端访问验证密码
[[proxies]]
# 客户端服务名
name = "web-wms"
# 通讯方式
type = "tcp"
# 客户端的ip,需要从公网访问的内网服务的地址。
localIP = "127.0.0.1"
# 客户端服务端口,需要从公网访问的内网服务的端口。
localPort = 8087
# 表示在 frp 服务端监听的端口,访问此端口的流量将被转发到本地服务的相应端口。(服务器需要放行)
remotePort = 8088
# 将 www.yourdomain.com 和 www.yourdomain2.com 的域名 A 记录解析到服务器的 IP 地址 x.x.x.x。
# 如果服务器已经有对应的域名,您还可以将 CNAME 记录解析到原始域名。
# 另外,通过修改 HTTP 请求的 Host # # 字段也可以实现相同的效果。
#[[proxies]]
#name = "web-wms"
#type = "http"
#localPort = 8087
#customDomains = ["www.kpwms.com"]
效果: