目录

frp搭建记录

简单体验frp,搭建踩坑记录

踩了一些坑,标记一下

frp官网 (opens new window)

# 版本

frp官方在重构frp项目,存在一些不兼容的改动

提示

master 分支用于发布稳定版本,dev 分支用于开发
v2 正在进行大版本的开发,将会尝试在各个方面进行重构和升级,且不会与 v1 版本进行兼容

# frp安装

常见架构、系统

架构分类:

  • amd64 :一般指X86-64处理器,intel及amd产品基本上均为该架构
  • 386:早起X86架构,目前基本上看不到了
  • arm及arm64:均为使用arm指令集的CPU

系统分类:

  • windows:windows系统使用的包
  • linux:linux系统均可使用该包
  • drawin:为mac使用的包

frp下载地址:https://github.com/fatedier/frp/releases (opens new window),下载对应架构、系统包

下面以windows 10作为frp服务器,虚拟机ubuntu server22.04为客户端,frp0.61演示

# frp服务端配置

windows 10下载frp_0.61.0_windows_amd64.zip,解压

1

关于frp的配置文件,在官网里提到了改动

警告

从 v0.52.0 版本开始,frp 开始支持 TOML、YAML 和 JSON 作为配置文件格式
请注意,INI 已被弃用,并将在未来的发布中移除。新功能只能在TOML、YAML 或 JSON 中使用

2

配置一个简单的服务端,修改服务器端配置文件frps.toml

警告

如果要搭建在公网生产环境,token、user、password注意使用强密码

bindPort = 7000         # frp服务端监听端口,处理连接请求
auth.token = "123"      # 设置token,用于身份认证

webServer.port = 7500   # webui 端口
webServer.addr = "0.0.0.0"  # webui 监听地址
webServer.user = "admin"    # webui 登录账号
webServer.password = "admin" # webui 登录密码
1
2
3
4
5
6
7

启动frps.exe,指定配置文件

./frps.exe -c frps.toml
1

3

# frp客户端配置

ubuntu server22.04下载frp_0.61.0_linux_amd64.tar.gz,解压

mkdir frp && cd frp
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz && tar -zxvf frp_0.61.0_linux_amd64.tar.gz
cd frp_0.61.0_linux_amd64
1
2
3

4

修改客户端配置文件frpc.toml,配置一个简单的tcp代理把虚拟机80端口服务转发到frp服务器80端口

serverAddr改为frp服务器ip,我这里用windows主机和虚拟机演示,使用内网ip了,实际环境注意修改ip。auth.token修改为frps设置的密码

serverAddr = "192.168.237.1"
serverPort = 7000
auth.token = "123"
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 80
1
2
3
4
5
6
7
8
9

5

客户端连接frp服务器

./frpc -c frpc.toml
1

穿透成功,访问frp服务器ip:80,即可访问虚拟机80端口服务

6

# 失败情况

参考其他师傅教程时,注意对应版本、教程,新旧版本不兼容会报错

在我搭建过程,连接失败、报错,几乎都是版本兼容问题

有问题请参阅官方文档https://gofrp.org/zh-cn/docs/features/common/configure/

# unknown field

错误信息

unmarshal ProxyConfig error: json: unknown field "remotePort"

remotePort为v2版本后字段,即0.52.0版本后,v1版本不支持

# WARNING: ini format is deprecated

错误信息

WARNING: ini format is deprecated and the support will be removed in the future, please use yaml/json/toml format instead!

新版本弃用ini格式,使用yaml/json/toml格式

# failed to parse proxy http, err: invalid type [http # 代理类型]

错误信息

failed to parse proxy http, err: invalid type [http # 代理类型]

配置文件里[配置项],后似乎不能有注释?

# connect to server error: parse "http://192.168.237.1 ": invalid character " " in host name

错误信息

connect to server error: parse "http://192.168.237.1 ": invalid character " " in host name

删掉ip后多余的空格

# connect to server error: session shutdown

错误信息

connect to server error: session shutdown login to the server failed: session shutdown. With loginFailExit enabled, no additional retries will be attempted

新旧版本不同,对于配置项的兼容性等问题导致连接失败,先把配置项改为对应版本格式,如v1版本、v2版本,再尝试连接

# subdomain is not supported because this feature is not enabled in remote frps

错误信息

start error: proxy [http] domain conf check error: subdomain is not supported because this feature is not enabled in remote frps

穿透内网http服务时,使用参数项type="http"要求必须配置域名,别整http了,直接换成type="tcp"省事了

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 80
1
2
3
4
5
6

# login to server failed: EOF

错误信息

login to server failed: EOF EOF

可能是主机网络问题,我这里因为虚拟机使用了代理,取消代理后成功连接

unset http_proxy
unset https_proxy
1
2

参考、致谢:

最后一次更新于: 2024/12/25, 08:34:16