Frp 是内网穿透界的瑞士军刀,是鼻祖级内网穿透工具,今天来介绍 Frp 的安装。本文服务器操作系统均为 Debian 12。

安装前提

现有一台具有公网ip的服务器,还有一台内网服务器服务器B,需要通过外网访问位于内网服务器的网站,还需要能在外网通过SSH控制内网服务器。

下载安装包

从官方GitHub的Release页面下载最新版的二进制文件:https://github.com/fatedier/frp/releases ,以下安装版本为:v0.61.0,linux版下载地址:点击这里下载 或在服务器上运行

mkdir /app
cd /app
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz

公网服务器部署frp

公网部署的是frps,是frp的服务端。

  1. 上传安装包到/app目录并解压
tar -xf frp_0.61.0_linux_amd64.tar.gz
mv frp_0.61.0_linux_amd64 frp
  1. 修改配置

运行命令:

cd /app/frp
nano frps.toml

参照以下内容:

#服务绑定的IP与端口
bindAddr = "0.0.0.0"
#端口
bindPort = 7000
#web dashboard配置,可通过ip:7000登录后查看frp面板
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"
#启用prometheus监控指标
enablePrometheus = true
#token权限验证,需与客户端配置一致
auth.method = "token"
auth.token = "123456"
#设置http和https服务的端口
vhostHTTPPort = 80
vhostHTTPSPort = 443
#日志配置
log.to = "/app/frp/logs/frps.log"
log.level = "info"
log.maxDays = 3

修改完成后按Ctrl+x然后再按y回车即可。

  1. 创建日志目录
mkdir logs
  1. 启动服务

命令行方式启动

./frps -c ./frps.toml

启动后窗口不能关闭或者退出

后台启动

nohup ./frps -c ./frps.toml &> /dev/null &

此启动为后台运行,每次都得手动运行

systemd方式启动(推荐)

准备启动文件

nano /etc/systemd/system/frps.service

内容如下:

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

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

[Install]
WantedBy = multi-user.target

保存退出后就可以启动服务了:

systemctl daemon-reload
systemctl start frps

内网服务器部署frp

内网部署是frpc,是frp的客户端。

  1. 上传安装包至/app并解压:
tar -xf frp_0.61.0_linux_amd64.tar.gz
mv frp_0.61.0_linux_amd64 frp
cd frp
  1. 创建代理配置目录与日志存储目录
mkdir logs
  1. 修改配置
nano frpc.toml

内容参照下面:

#配置公网服务器上frp服务的IP与端口
serverAddr = "x.x.x.x"
serverPort = 7000
#web dashboard配置
webServer.addr = "0.0.0.0"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "admin"
#日志配置
log.to = "/app/frp/logs/frpc.log"
log.level = "info"
log.maxDays = 3
#token权限验证,需与服务端配置一致
auth.method = "token"
auth.token = "123456"

#http访问
[[proxies]]
name = "http" #名称
type = "http" #代理类型
localPort = 80 #本地端口
customDomains = ["your domain"] #域名

#https访问
[[proxies]]
name = "https" #名称
type = "https"#代理类型
localPort = 443 #本地端口
customDomains = ["yourdomain"] #域名

#ssh
[[proxies]]
name = "ssh" #名称
type = "tcp" #代理类型
localIP = "127.0.0.1" #本地IP
localPort = 22 #内网服务监听的端口
remotePort = 2022 #需要在公网服务器上监听的端口
  1. 启动服务

命令行方式启动

./frpc -c ./frpc.toml

后台启动

nohup ./frpc -c ./frpc.toml &> /dev/null &

使用systemd方式启动(推荐)

准备启动文件:

nano /etc/systemd/system/frpc.service

内容和服务端的大同小异

[Unit]

Description = frp client
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple

ExecStart = /app/frp/frpc -c /app/frp/frpc.toml

[Install]
WantedBy = multi-user.target

启动服务

systemctl daemon-reload
systemctl start frpc

访问测试

在浏览器输入你的网址http://即可访问到内网的网站。

通过ssh工具可以管理内网服务器,IP地址填公网服务器的ip,端口填2022。

公网服务器web界面:http://<公网IP>:7500

公网服务器监控指标:http://<公网IP>:7500/metrics

注意,如果公网服务器有安全组,记得放开相应的端口。

附录

官网服务端与客户端的全配置文件,仅供参考:

官方完整文档

其实,frp的功能不仅仅是这些,还有很多,官方有详细的中文文档,详见:

中文:https://gofrp.org/zh-cn/ 英文:https://gofrp.org/en/