Frp内网穿透之frps服务端部署

由于现在IPv4地址的短缺,在国内不可能每个设备都会分配到一个公网IP,因此从公网中访问自己的私有设备向来是一件难事儿。本次带大家了解一下frp内网穿透的服务端教学,让你也能够部署一个内网穿透服务。

frp简介

通俗的说,frp是一个反向代理软件,它不仅轻量且功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。本文使用的版本为v0.52.3做为演示教程。

frp程序文件地址:https://github.com/fatedier/frp/releases

中文官方网址:https://gofrp.org/zh-cn/

服务器相关

服务器相关: 1.因为frp的原理是利用服务端(所准备的具有公网IP的服务器)进行转发,因而服务器的速度直接决定了之后连接的质量,请根据自己的需要选择相应主机配置。 2.centos系统的官方在逐渐的停止更新和维护,本文的演示使用了rocky linux9系统,如果是使用centos7等系统亦可,命令基本一致。frp客户端和服务端本身同时均支持Linux和Windows,且配置方法一样,请根据实际环境自行测试。

frp服务端部署

因为centos7等国内运维人习惯的系统即将停止官方的支持,我在这里使用centos的平替rocky linux9系统,故在frp服务端使用的是此版本:

我们首先远程登录到服务器,本文将frp服务端文件存放在/usr/opt/目录下作为演示,具体使用时可以视自己的需求忽略此步骤或自定义安装在其它目录:

1.使用wget命令将frp软件压缩包下载下来:

$ wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
-2023-11-10 19:24:30--  https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz
正在解析主机 github.com (github.com)... 20.205.243.166
正在连接 github.com (github.com)|20.205.243.166|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://objects.githubusercontent.com/github-production-release-asset-2e65be/48378947/dbb4b12e-609f-4a3e-8938-8a6152a6c568?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231110%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231110T112352Z&X-Amz-Expires=300&X-Amz-Signature=1bb4aa1e20a86f198a4f9d08c366fc0be4fd9fdb89e4a0304038b480ce76da21&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=48378947&response-content-disposition=attachment%3B%20filename%3Dfrp_0.52.3_linux_amd64.tar.gz&response-content-type=application%2Foctet-stream [跟随至新的 URL]
--2023-11-10 19:24:33--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/48378947/dbb4b12e-609f-4a3e-8938-8a6152a6c568?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231110%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231110T112352Z&X-Amz-Expires=300&X-Amz-Signature=1bb4aa1e20a86f198a4f9d08c366fc0be4fd9fdb89e4a0304038b480ce76da21&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=48378947&response-content-disposition=attachment%3B%20filename%3Dfrp_0.52.3_linux_amd64.tar.gz&response-content-type=application%2Foctet-stream
正在解析主机 objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
正在连接 objects.githubusercontent.com (objects.githubusercontent.com)|185.199.108.133|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:11781267 (11M) [application/octet-stream]
正在保存至: “frp_0.52.3_linux_amd64.tar.gz”

frp_0.52.3_linux_amd64.tar.gz             61%[=================================================>                                ]   6.89M  25.4KB/s  剩余 2m 57s  

2.然后将文件移动至/opt目录并解压和修改解压后的目录名:

$ tar -zxvf frp_0.52.3_linux_amd64.tar.gz
frp_0.52.3_linux_amd64/
frp_0.52.3_linux_amd64/LICENSE
frp_0.52.3_linux_amd64/frps.toml
frp_0.52.3_linux_amd64/frpc
frp_0.52.3_linux_amd64/frpc.toml
frp_0.52.3_linux_amd64/frps
$ mv frp_0.52.3_linux_amd64 /opt/frps

3.进入frp目录,使用ll命令可看出下面有frps和frpc等文件字样:

$ cd /opt/frps
$ ll
总用量 29996
-rwxr-xr-x. 1 sean sean 13905920 10月 24 10:56 frpc
-rw-r--r--. 1 sean sean      142 10月 24 10:57 frpc.toml
-rwxr-xr-x. 1 sean sean 16789504 10月 24 10:56 frps
-rw-r--r--. 1 sean sean       16 10月 24 10:57 frps.toml
-rw-r--r--. 1 sean sean    11358 10月 24 10:57 LICENSE

其中frps前缀的文件为服务端所用的文件,frpc前缀的为客户端所用的文件,两者不要弄错! 由于是服务端部署,所以在此处我们只需要关注frps和frps.toml等文件,旧版本可能配置为frps.ini,但我这里下载的是我写这篇文章时最新的版本,配置文件被修改为frps.toml。frpc前缀的文件小伙伴们可以自行决定是否删除。

4.接下来我们编辑frps.toml文件,从0.52.1开始,配置文件的配置项和前面的版本的配置项有所不同。

vim frps.toml

文件里面最少需要有下面的内容:

bindAddr = "0.0.0.0"
bindPort = 7000

vhostHTTPPort = 80
vhostHTTPSPort = 443

auth.method = "token"
auth.token = "12345678"

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

其中:

  • bindAddr:绑定服务器的IP
  • bindPort :为服务器端端口
  • auth.method:为客户端与服务器端的连接设置一个模式
  • auth.token: 为客户端与服务器端的连接设置一个验证
  • vhostHTTPPort: 客户端访问的http端口
  • vhostHTTPSPort 客户端访问的https端口
  • webServer.addr:为frps登录dashboard的地址
  • webServer.port 为frps登录dashboard的端口
  • webServer.user 为frps登陆dashboard的用户名
  • webServer.password为frps登陆dashboard的密码

输入完成后按Esc键,输入wq保存并退出。

5.用cat命令查看文件内容已成功保存

6.接下来输入命令运行frps服务端,需要管理员权限,可以是sudo提权的,也可以是root用户:

sudo ./frps -c ./frps.toml

看到success字样表示已运行成功:

7.此时我们可以使用浏览器访问http://ip地址:7500,网页上输入自己设定的账号密码即可登录frps服务端查看相关信息:

设置开机启动

上面的教程在frps运行后你一旦退出Terminal或使用了Ctrl+C命令,那么你的frps服务端也就停止运行了,此处教大家如何设置开机自启动。

1.添加systemd配置文件:

sudo vim /usr/lib/systemd/system/frp.service

2.根据官方文档编辑文件内容如下(ExecStart的内容请根据自己frp安装目录修改):

[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /opt/frps/frps -c /opt/frps/frps.toml

[Install]
WantedBy = multi-user.target

3.设置frp开机启动:

sudo systemctl daemon-reload
sudo systemctl enable frps

4.启动frp(终止frp把start改为stop即可):

sudo systemctl start frps

5.查看frp是否启动:

ps aux | grep frps

显示的内容如下则表示启动成功: