frp搭建记录
简单体验frp,搭建踩坑记录
踩了一些坑,标记一下
# 版本
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,解压
关于frp的配置文件,在官网里提到了改动
警告
从 v0.52.0 版本开始,frp 开始支持 TOML、YAML 和 JSON 作为配置文件格式
请注意,INI 已被弃用,并将在未来的发布中移除。新功能只能在TOML、YAML 或 JSON 中使用
配置一个简单的服务端,修改服务器端配置文件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 登录密码
2
3
4
5
6
7
启动frps.exe,指定配置文件
./frps.exe -c frps.toml
# 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
2
3
修改客户端配置文件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
2
3
4
5
6
7
8
9
客户端连接frp服务器
./frpc -c frpc.toml
穿透成功,访问frp服务器ip:80,即可访问虚拟机80端口服务
# 失败情况
参考其他师傅教程时,注意对应版本、教程,新旧版本不兼容会报错
在我搭建过程,连接失败、报错,几乎都是版本兼容问题
有问题请参阅官方文档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
2
3
4
5
6
# login to server failed: EOF
错误信息
login to server failed: EOF EOF
可能是主机网络问题,我这里因为虚拟机使用了代理,取消代理后成功连接
unset http_proxy
unset https_proxy
2
参考、致谢: