工具推荐 | 内网穿透神器FRP部署教程

工具介绍

FRP是一款高性能的反向代理工具,可以将位于NAT或防火墙后的本地服务器暴露到互联网上。目前支持TCP、UDP、HTTP和HTTPS协议,可通过域名将请求转发至内部服务,此外还提供P2P直连模式

Github地址:https://github.com/fatedier/frp

本文尽可能简单叙述,方便大家快速部署,因当前最新版是0.63.0,因此本文在0.63.0的基础上书写

准备条件

  1. 一台拥有公网IP的服务器(推荐阿里云、腾讯云等)
  2. 一个域名(非必需)

服务端

安装

打开https://github.com/fatedier/frp/tree/v0.63.0, 下载frp_0.63.0_linux_amd64.tar.gz

上传到服务器然后解压

1
tar -zxvf frp_0.63.0_linux_amd64.tar.gz

配置

cd进入frp_0.63.0_linux_amd64文件夹,输入vim frps.toml编辑frps.toml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# frp客户端与服务端连接的端口
bindPort = 7000

# 用来接收HTTP请求的端口
vhostHTTPPort = 8088 #如端口冲突可自行切换

# 认证配置
[auth]
token = "admin_token" #用于连接验证,请自行设置

# Web仪表盘配置
[webServer]
addr = "0.0.0.0"
port = 7500
user = "admin" #请自行设置
password = "admin" #请自行设置

按下ESC进入命令模式,然后输入:wq并按回车键,保存文件并退出Vim

运行

为了能在后台持续运行,这里用screen启动一个新窗口

1
screen -S frp	#名字可以自定义

赋予执行权限

1
chmod +x frps

运行脚本

1
./frps -c ./frps.toml

按下组合键 ctrl+a+d 关闭当前screen窗口,运行下面的命令可以再次进入窗口

1
2
screen -ls	#查看当前screen状态
screen -r frp

网页仪表盘

成功运行之后,打开http://你的服务器IP:7500,即可进入仪表盘页面,可以查看当前的配置、连接等状态

客户端

安装

打开https://github.com/fatedier/frp/tree/v0.63.0, 下载frp_0.63.0_windows_amd64.zip

配置

解压并打开文件夹,编辑frpc.toml

1
2
3
4
5
6
7
8
9
10
11
serverAddr = "你的服务器IP地址"
serverPort = 7000

[auth]
token = "admin_token" #需要跟服务端的token保持一致,用于验证

[[proxies]]
name = "my-web-service" #可自行设置
type = "tcp" #穿透的协议类型,ip+端口的话用tcp
localPort = 80 #需要穿透的本机端口
remotePort = 8085 #指定服务端访问的端口,也就是可以通过"你的服务器IP:8085"访问到本机的"127.0.0.1:80"

(可选)域名配置

如果你有自己的域名,则可以进行域名配置,以获得更佳的体验

我这里用的是namesilo,其他的域名提供商也一样操作

具体操作就是在DNS Record添加一条A记录,地址填你的服务器IP,名字可以自定义,后面就通过这个子域名访问你的服务

然后打开frpc.toml重新编辑

1
2
3
4
5
6
7
8
9
10
11
serverAddr = "你的服务器IP地址"
serverPort = 7000

[auth]
token = "admin_token" #需要跟服务端的token保持一致,用于验证

[[proxies]]
name = "my-web-service"
type = "http" #域名+端口的话需要用http
localPort = 80 #需要穿透的本机端口,也就是可以通过"你的域名:8088"访问到本机的"127.0.0.1:80"
customDomains = ["win.xxxxxx.com"] #这里用你自己的域名

需要注意的是,当代理类型为 httphttps时,访问端口由服务端vhostHTTPPort决定,而不是客户端的 remotePort

运行

frp_0.63.0_windows_amd64文件夹打开cmd,输入

1
frpc -c frpc.toml

然后公网访问

1
http://你的服务器IP:8085

如果你配置了域名,就可以公网访问

1
win.xxxxxx.com:8088

实例

这里我举个简单的例子,方便大家理解

无域名

我在本地部署了一个DVWA漏洞靶场,假如我想把它分享给其他人,应该怎么做

在服务端部署完毕后,回到本地电脑,phpstudy打开服务

由于我的DVWA部署在本地8084端口,因此先修改frpc.toml

1
2
3
4
5
6
7
8
9
10
11
serverAddr = "你的服务器IP地址"
serverPort = 7000

[auth]
token = "admin_token"

[[proxies]]
name = "my-web-service"
type = "tcp"
localPort = 8084 #需要穿透的本机端口
remotePort = 8085 #指定服务端的端口

然后保存退出,在当前文件夹cmd执行

1
frpc -c frpc.toml

接着访问你的服务器IP地址:8085即可

有域名

同样是以DVWA漏洞靶场为例,先用phpstudy打开服务,然后修改frpc.toml

1
2
3
4
5
6
7
8
9
10
11
serverAddr = "你的服务器IP地址"
serverPort = 7000

[auth]
token = "admin_token"

[[proxies]]
name = "my-web-service"
type = "http"
localPort = 8084 #需要穿透的本机端口
customDomains = ["win.xxxxxx.com"] #这里用你自己的域名

然后保存退出,在当前文件夹cmd执行

1
frpc -c frpc.toml

接着访问你的域名:8088即可

常见问题与排错 (FAQ)

如果你发现连接不到服务端的端口,请检查防火墙是否放行相关端口,如果系统本身已放行端口但仍无法访问,可能是服务器提供商那边的防火墙未放行,这时需要到提供商那边(假如是阿里云)放行相关端口

工具推荐 | 内网穿透神器FRP部署教程

https://waynejoon.github.io/posts/frp-deployment-tutorial/

作者

WayneJoon.H

发布于

2025-07-22

许可协议