下载地址:https://github.com/fatedier/frp/releases
这里应用的是:
公网:frp_0.52.3_linux_amd64.tar.gz
内网:frp_0.52.3_windows_amd64
第一步:配置公网Service端
由于,网上的大部分教程都是针对老版本frp的,就会导致新版本根本就没有ini后缀的文件,所以就出现歧义,很不友好。
1.创建目录并解压文件
# 创建目录
mkdir /root/frps
# 通过Winscp上传我们的压缩包到/root/frps下
# tar命令解压压缩包,得到frp_0.52.3_linux_amd64文件
tar -xzf frp_0.52.3_linux_amd64.tar.gz
# 将文件内容移动出来并删除压缩包和原文件
mv frp_0.52.3_linux_amd64/* .
rm -rf frp_0.52.3_linux_amd64 frp_0.52.3_linux_amd64.tar.gz
# 现在,你的frps下应该只剩下 五个文件
2.修改服务端的 frps.toml 文件
vim frps.toml
将文件内的内容改成如下所示
# frp服务端对外暴露的端口,用于和客户端接轨 (必须要要)
bindPort = 7000
# 这个method的值就为 token不要改! (可要可不要)
auth.method = "token"
# 这个token就设置你的密码,用于客户端的验证 (可要可不要)
auth.token = "password"
# 这里的四个就是 frps的图像化界面(可要可不要)
webServer.addr = "0.0.0.0"
webServer.port = 7001
webServer.user = "admin"
webServer.password = "密码"
3.将这个frps变成一个service,让你可以通过 systemctl 去启动和关闭
vim /etc/systemd/system/frps.service
填写如下内容
[Unit]
# 服务的描述
Description = frp server
# 服务的启动顺序,在network.target (网络服务)和 syslog.target(系统日志服务)启动之后才启动
After = network.target syslog.target
# Wants 表示该服务希望 network.target 已经启动,但即使 network.target 启动失败,该服务仍然会尝试启动。
Wants = network.target
[Service]
# 是一个简单的服务
Type = simple
# 指定启动服务的命令
ExecStart = /root/frps/frps -c /root/frps/frps.toml
[Install]
# 当使用 systemctl enable frp.service 命令时实现开机自启动。
WantedBy = multi-user.target
编写完成后
# 给权限
chmod -R 777 /root/frps
开启开机自启
systemctl enable frps.service
# 重启服务
systemctl restart frps.service
# 查看服务状态,是running即可。
systemctl status frps.service
第二步:配置内网Client端
搭建本地应用 我们在本地用Tomcat在8080端口启动一个项目,你也可以不用Tomcat,只要是只能内网访问的都行Nginx也行。
我们解压第二个压缩包:frp_0.52.3_windows_amd64 也是得到很多文件,但是我们只看两个文件 frpc.exe 和frpc.toml
用记事本打开 frpc.toml 文件。
将内容修改为一下格式
serverAddr = "公网服务器IP地址"
# 就是之前那个必须要的端口
serverPort = 7000
# 不要动这个method
auth.method = "token"
# 这里的token必须要与前文一致
auth.token = "password"
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
[[proxies]]
name = "见名之意,就是需要进行穿透的内网服务名"
type = "tcp"
localIP = "127.0.0.1"
# 这个就是本地应用所部署的端口
localPort = 8080
# 将其映射到服务器的 80 端口,确保80端口没有占用
remotePort = 80
于是,我们的客户端就配置好了!
第三步:公网+端口访问本地应用
启动服务端的frps.service服务
# 得益于我们配置了systemd,所以我们可以直接使用systemctl去启动服务
systemctl start frps.service
启动客户端服务
这个,需要通过cmd 或者 powershell进行启动,不然权限不够,在启动之前,我们需要将客户端的 frpc.toml的文件名改为 frpc.ini 不然识别不到。
在文件夹的地址栏上输入cmd,进入DOS窗口,然后输入 .\frpc.exe 去启动这个客户端应用。
我们只要在看到 xxxxx success 即可。
访问项目
由于我们将 本地的8080端口映射到了 服务器的80端口,所以我们直接访问 服务器的IP即可看到我们部署的应用