LOADING

少女祈祷中......

Frp 0.52及以上版本的全系统保姆级教程(包含frps和frpc的搭建与使用)

在当下的环境中,家宽 公网IPv4 不是每家每户都有的,但是是谁都想搭建个网站玩玩。或者受不了各大云盘厂商的收费方式和手段想搭个 私有云 以解决自己高要求的存储需求。虽然有 IPv6 等手段解决,但是受限于路由器防火墙和国内IPv6普及率问题。目前的 IPv6 在国内更像是 IPv4 的一种补充手段,并没有实现真正意义上的替代。(毕竟没听过纯IPv6网站)

这时候我们就需要使用 Frp 之类的内网穿透软件来实现在无公网IPv4的情况下实现外网访问
(本篇不涉及对应系统的安装,只涉及frpc和frps的搭建和使用)
(本篇所演示的frps/frpc版本均为0.53.0版本(文章都写一半了来了个大版本更新…),过大的版本差距会导致无法连接等bug)

首先我们要搞清楚 Frp 可以用来干什么,可以用在什么地方?(以下只列举部分常用情景)

  • 家用领域:文件共享,远程监控,远程私有云等
  • 游戏领域:我的世界联机/服务器,泰拉瑞亚联机/服务器等可以对局域网开放的联机游戏
  • 建站领域:个人主页搭建,博客搭建,反向代理等
  • 专业领域:RDP/SSH远程连接,Docker外网访问等

frps为服务端,frpc为客户端
搞清楚 Frp 可以干什么后,我们正式开始实操!


目录

1.frps的搭建与配置

1-1.frps常用配置文件介绍
1-2.在Windows中搭建frps并配置
1-3.在Linux中搭建frps并配置
1-4.在Nas系统中搭建frps并配置

2.frpc的部署与配置

2-1.frpc常用配置文件介绍
2-2.在Windows中部署frpc并配置
2-3.在Linux中部署frpc并配置
2-4.在Nas系统中部署frpc并配置

3.公共frp的使用

3-1.公共frp - OpenFrp
3-2.公共frp - Sakura Frp


1.frps的搭建与配置

1-1.frps常用配置文件介绍

  • 因 frp 0.52.0 版本后支持 TOML、YAML 和 JSON 配置文件,并弃用 INI 配置文件,将在未来版本中删除对 INI 的支持 GitHub公告
  • 所以可能互联网上0.52.0版本以前的教程将在未来全部失效(如果你就用老版本当我没说)
  • 为了稳定与新功能,本篇的frps/frpc将全部采用 TOML 配置文件演示

frps 是一个轻量级的反向代理客户端,可以实现内网穿透的功能。frps 需要配合 frpc 客户端使用,frps 需要部署在具有公网 IP 的机器上,frpc 部署在需要穿透的内网服务所在的机器上

  • 服务端连接端口(必填)
bindPort = 7000   #服务端监听端口,默认7000
  • 服务端身份认证及密码(可选,推荐)
    (OIDC身份认证可参考 gofrp文档 咱这只讲最常用的token)
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码
  • 服务端TLS连接加密(可选)
transport.tls.force = false   #是否只接受启用了TLS的客户端连接
  • 服务端Web界面(可选)
    (如果不配置WebSSL,网页将以http方式呈现)
webServer.port = 7001   #Web页面端口号
webServer.user = "mint"   #(可选)Web页面账号
webServer.password = "mintdesu"   #(可选)Web页面密码
webServer.tls.certFile = "server.pem"   #(可选)WebSSL证书
webServer.tls.keyFile = "server.key"   #(可选)WebSSL私钥
  • 服务端HTTP(s)监听端口(可选)
    (一般都是80和443,如果被nginx什么的占用了那只能填别的)
vhostHTTPPort = 80
vhostHTTPSPort = 443
  • 服务端端口限制(可选)
allowPorts = [
    { start = 10000, end = 15000 },   #端口范围设置为10000-15000可用
    { start = 30000, end = 40000 },   #同理,可设置多个端口范围开放
    { single = 25565 },   #单端口设置,指定25565端口可用
    { single = 25566 }    #同理,可以设置多个单端口开放
]
  • 服务端连接数限制(可选)
transport.maxPoolCount = 50   #每条隧道可以有多少IP连接
transport.maxPortsPerClient = 30   #每个客户端可以创建多少隧道

更多常用配置文件请前往 gofrp 查阅

(咱要不是写这篇文章否则咱也不知道INI被弃用了。好多新配置咱自己也没搞明白,为了写这篇文章只能现学现卖)


1-2.在Windows中搭建frps并配置

1-2-1.准备资源
  • 前往 GitHub 下载frps
  • arm/arm64对应arm架构(不会有人用Windows on ARM吧),amd64对应x86架构
  • 如果遇到GitHub无法打开的情况下可以使用本站提供的 123Pan 下载
1-2-2.配置toml文件

以下配置文件只是示例,要根据自己的实际情况进行适当的删改

bindPort = 7000   #服务端监听端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "mint"   #服务端token密码
vhostHTTPPort = 80
vhostHTTPSPort = 443
transport.tls.force = false   #是否只接受启用了TLS的客户端连接
transport.maxPortsPerClient = 20   #每个客户端可以创建多少隧道
allowPorts = [
    { start = 10000, end = 15000 },   #端口范围设置为10000-15000可用
    { start = 30000, end = 40000 },   #同理,可设置多个端口范围开放
    { single = 25565 },   #单端口设置,指定25565端口可用
    { single = 25566 }    #同理,可以设置多个单端口开放
]

配置参数参考 1-1

1-2-3.配置启动文件

这里有两种方法,一种是配置好 xxx.bat 后放在
C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
目录下,这样可以在用户登录后自动启动 xxx.bat 这种方法简单直接

还有一种方法,直接使用 nssm.exe 配置frps为系统服务,这种方法可以无需登录用户账号后台运行

咱自己用的是第二种方法,为了稳妥,两种方法都演示一遍

第一种: 在frps目录下新建 xxx.bat 文件,把下方内容填进去

frps -c frps.toml

右键创建快捷方式后将快捷方式扔进下方目录即可
C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
如果之后要更新 frps.toml 配置文件,把cmd窗口关闭重启 xxx.bat 就没问题了

第二种:打开 nssm官网 下载 nssm.exe ,国内访问较慢可使用本站提供的 123Pan 下载
解压后在win64/32找到 nssm.exe 放在a目录里,打开 cmd 后cd到a目录下运行

nssm install frps

输完命令回车后会弹个窗口,根据实际情况按下图填后按 Install service 即可
frps-nssm
之后到 任务管理器→服务 中找到 frpc 服务后右键开始就没问题了。如果之后要更新 frps.toml 配置文件,再次找到此处右键重新启动就没问题了


1-3.在Linux中搭建frps并配置

1-3-1.准备资源

这一步跟Windows一样,只是选择的版本是Linux

  • 前往 GitHub 下载frps
  • arm/arm64对应arm架构,amd64对应x86架构
  • 如果遇到GitHub无法打开的情况下可以使用本站提供的 123Pan 下载

直接 wget 也可以,比如

wget -c https://github.com/fatedier/frp/releases/download/v0.53.0/frp_0.53.0_linux_amd64.tar.gz

如果国内GitHub无法下载,那就把文件下载到本地,再手动传到对应目录

无论是上述哪种方式下载,到最后都要解压到某目录下
比如我要解压到 /usr/local/frps 下,那么输入

tar -zxvf frp_0.53.0_linux_amd64.tar.gz   #解压文件
mv frp_0.53.0_linux_amd64 /usr/local   #将frp目录移动到/usr/local下
mv /usr/local/frp_0.53.0_linux_amd64 /usr/local/frps   #将frp目录改名成frps

到这时,我们文件就准备好了,下面开始配置并部署!

1-3-2.配置frps.toml

第一步我们先安装编辑器,如果已经安装过了请忽略此项

  • CentOS:
sudo yum install vim
  • Ubuntu/Debian:
sudo apt update
sudo apt install vim

安装好编辑器后 cd 到 /usr/local/frps 目录下后编辑 TOML 配置文件

cd /usr/local/frps
vim frps.toml

这时我们配置 frps.toml 文件
(以下配置文件只是示例,要根据自己的实际情况进行适当的删改)

bindPort = 7000   #服务端监听端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "mint"   #服务端token密码
vhostHTTPPort = 80
vhostHTTPSPort = 443
transport.tls.force = false   #是否只接受启用了TLS的客户端连接
transport.maxPortsPerClient = 20   #每个客户端可以创建多少隧道
allowPorts = [
    { start = 10000, end = 15000 },   #端口范围设置为10000-15000可用
    { start = 30000, end = 40000 },   #同理,可设置多个端口范围开放
    { single = 25565 },   #单端口设置,指定25565端口可用
    { single = 25566 }    #同理,可以设置多个单端口开放
]

配置参数参考 1-1
配置好后输入 :wq 保存即可

1-3-3.设置启动方式

可以cd到 /usr/local/frps 后使用 ./frps -c frps.toml
也可以直接使用

/usr/local/frps/frps -c /usr/local/frps/frps.toml

如果要设置开机自启,请新建一个frps的系统服务

nano /etc/systemd/system/frps.service

然后在 frps.service 内填入:

[Unit]
Description=frps
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.toml   #填写frps的安装目录
Restart=always

[Install]
WantedBy=multi-user.target

保存退出后输入下方内容即可设置frps为开机自启

systemctl enable frps   #开启开机自启动frps服务
systemctl disable frps   #关闭开机自启动frps服务
systemctl start frps   #启动frps服务
systemctl stop frps   #停止frps服务
systemctl status frps   #查看frps服务状态

这时frps应该是正常运行了,如果是云服务器/宝塔有防火墙什么的记得开放端口
(其实Linux还有一种方法就是使用Docker部署,但是那个我没玩明白)


1-4.在Nas系统中搭建frps并配置

因为我手上只有群晖的nas,所以将以群晖的系统来演示
其他系统其实都大差不差,都是基于Linux系统开发而来,只是有些nas是arm架构,需要换个frps版本而已。但是,私自乱动系统文件会造成一些很严重的后果,尽量别动! 但是如果能用Docker的话基本上所有系统都一样

这里有两个办法安装
一个是第三方套件(非常简单),一个是Docker(相对复杂)
我们先说第一个

1-4-1.使用第三方套件安装

群晖官方套件是没有收录frps的,我们需要添加第三方套件
这里我们打开 套件中心→右上角设置→套件来源→新增
我们添加 矿神源 名称随便填

https://spk7.imnks.com/   #DSM7.x
https://spk.imnks.com/    #DSM6.x

添加完后点击确定,在左边我们可以看到新增 社群 此时我们打开它,找到 Frps服务端 后安装即可
安装完成后打开,里面是配置文件填写页面,将配置文件填好后保存即可自动运行。配置文件示例:

bindPort = 7000   #服务端监听端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "mint"   #服务端token密码
vhostHTTPPort = 80
vhostHTTPSPort = 443
transport.tls.force = false   #是否只接受启用了TLS的客户端连接
transport.maxPortsPerClient = 20   #每个客户端可以创建多少隧道
allowPorts = [
    { start = 10000, end = 15000 },   #端口范围设置为10000-15000可用
    { start = 30000, end = 40000 },   #同理,可设置多个端口范围开放
    { single = 25565 },   #单端口设置,指定25565端口可用
    { single = 25566 }    #同理,可以设置多个单端口开放
]

配置参数参考 1-1

1-4-2.使用Docker安装

一般情况下不推荐,因为有部分nas使用的是 ARM 架构,无法使用Docker。请确保自己的nas可以使用Docker后再安装

打开 Container Manager 如果没有就安装一个,群晖官方套件中心有
点击左侧注册表搜索 snowdreamtech/frps 后双击下载镜像
(标签latest就行,如果想指定版本就输入0.53.0,0.52.1之类的即可)
安装完成到容器里新增容器,映像选择 snowdreamtech/frps 容器名称随便填后点下一步

这时我们到外面手动创建个 frps.toml 配置文件后填写配置。配置文件示例:

bindPort = 7000   #服务端监听端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "mint"   #服务端token密码
vhostHTTPPort = 80
vhostHTTPSPort = 443
transport.tls.force = false   #是否只接受启用了TLS的客户端连接
transport.maxPortsPerClient = 20   #每个客户端可以创建多少隧道
allowPorts = [
    { start = 10000, end = 15000 },   #端口范围设置为10000-15000可用
    { start = 30000, end = 40000 },   #同理,可设置多个端口范围开放
    { single = 25565 },   #单端口设置,指定25565端口可用
    { single = 25566 }    #同理,可以设置多个单端口开放
]

配置参数参考 1-1

写好配置文件后保存并复制到nas共享文件夹docker目录内的frps文件夹内
示例:/volume1/docker/frps

此时我们返回 Container Manager 界面
在存储空间设置里选择 添加文件 选择我们刚才创建的 frps.toml 配置文件
示例:/volume1/docker/frps/frps.toml

出来后我们会发现他右边还要求填一个路径,这个是我们Docker容器里的配置文件路径
我们直接填写 /etc/frp/frps.toml 即可
一路下一步就行

这时我们就算是搭好了,记得关闭路由器防火墙或者系统防火墙什么的


2.frpc的部署与配置

2-1.frpc常用配置文件介绍

  • 因 frp 0.52.0 版本后支持 TOML、YAML 和 JSON 配置文件,并弃用 INI 配置文件,将在未来版本中删除对 INI 的支持 GitHub公告
  • 所以可能互联网上0.52.0版本以前的教程将在未来全部失效(如果你就用老版本当我没说)
  • 为了稳定与新功能,本篇的frps/frpc将全部采用 TOML 配置文件演示

frpc 是一个轻量级的反向代理客户端,可以实现内网穿透的功能。frpc 需要配合 frps 服务端使用,frpc 部署在需要穿透的内网服务所在的机器上,frps 需要部署在具有公网 IP 的机器上。

  • 连接服务器
serverAddr = "x.x.x.x"   #服务器地址
serverPort = 7000   #服务器端口
  • 服务端身份认证及密码
    (OIDC身份认证可参考 gofrp文档 咱这只讲最常用的token)
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码,密码不正确将无法连接服务器
  • 客户端到服务端连接启用TLS加密
transport.tls.enable = false   #是否和服务端之间启用TLS连接
transport.tls.disableCustomTLSFirstByte = false
#当配置为true时,无法和vhostHTTPSPort端口复用
  • 创建TCP隧道
[[proxies]]
name = "xxx"   #隧道名称,可自定义,不能重复
type = "tcp"   #隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
localIP = "xxx.xxx.xxx.xxx"   #本地IP地址,如果是本机就127.0.0.1
localPort = xxx   #本地端口,本地服务端口,比如mc服务器端口25565
remotePort = xxxxx    #远程端口,连接隧道时用的端口
  • 创建UDP隧道
[[proxies]]
name = "xxx"   #隧道名称,可自定义,不能重复
type = "udp"   #隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
localIP = "xxx.xxx.xxx.xxx"   #本地IP地址,如果是本机就127.0.0.1
localPort = xxx   #本地端口,本地服务端口,比如mc服务器端口25565
remotePort = xxxxx    #远程端口,连接隧道时用的端口
  • 创建HTTP/HTTPS隧道
[[proxies]]
name = "xxx"   #隧道名称,可自定义,不能重复
type = "http"  #隧道类型,可填http, https
localIP = "xxx.xxx.xxx.xxx"   #本地IP地址,如果是本机就127.0.0.1
localPort = 80   #本地端口,本地Web服务端口,一般为80/443
customDomains = ["test.hoshiroko.com"]   #绑定域名,可设置自己的域名
  • 传输加密/压缩(添加在隧道内)
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy

这几种隧道类型是最常用的,至于tcpmux, stcp, sudp, xtcp我自己都还没摸透
但是 tcpmux 是重头戏,之后有时间补充

了解完常用配置后我们正式开始部署!


2-2.在Windows中部署frpc并配置

其实这里和 frps 大差不差,只是程序和配置文件不一样
部署方式都是一模一样的

2-2-1.准备资源
  • 前往 GitHub 下载frpc
  • arm/arm64对应arm架构(不会有人用Windows on ARM吧),amd64对应x86架构
  • 如果遇到GitHub无法打开的情况下可以使用本站提供的 123Pan 下载
2-2-2.配置toml文件

示例: (我要把我的远程桌面端口映射出去,以至于让我在外网可以访问)
注意!以下仅是演示示例,要根据自己的需求参照 2-1 编写

serverAddr = "1.1.1.1"   #服务器地址
serverPort = 7000   #服务器端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码,密码不正确将无法连接服务器
transport.tls.enable = false   #是否和服务端之间启用TLS连接
transport.tls.disableCustomTLSFirstByte = false
#默认为true,当配置为true时,无法和vhostHTTPSPort端口复用

[[proxies]]
name = "rdp"   #隧道名称,可自定义,不能重复
type = "tcp"   #隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
localIP = "127.0.0.1"   #本地IP地址,如果是本机就127.0.0.1
localPort = 3389   #本地端口,本地服务端口
remotePort = 23389    #远程端口,连接隧道时用的端口
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy
2-2-3.配置启动文件

这里有两种方法,一种是配置好 xxx.bat 后放在
C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
目录下,这样可以在用户登录后自动启动 xxx.bat 这种方法简单直接

还有一种方法,直接使用 nssm.exe 配置frpc为系统服务,这种方法可以无需登录用户账号后台运行

咱自己用的是第二种方法,为了稳妥,两种方法都演示一遍

第一种: 在frpc目录下新建 xxx.bat 文件,把下方内容填进去

frpc -c frpc.toml

右键创建快捷方式后将快捷方式扔进下方目录即可
C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
如果之后要更新 frpc.toml 配置文件,把cmd窗口关闭重启 xxx.bat 就没问题了

第二种:打开 nssm官网 下载 nssm.exe ,国内访问较慢可使用本站提供的 123Pan 下载
解压后在win64/32找到 nssm.exe 放在a目录里,打开 cmd 后cd到a目录下运行

nssm install frpc

输完命令回车后会弹个窗口,根据实际情况按下图填后按 Install service 即可
frpc-nssm
之后到 任务管理器→服务 中找到 frpc 服务后右键开始就没问题了。如果之后要更新 frpc.toml 配置文件,再次找到此处右键重新启动就没问题了


2-3.在Linux中部署frpc并配置

2-3-1.准备资源

这一步跟Windows一样,只是选择的版本是Linux

  • 前往 GitHub 下载frpc
  • arm/arm64对应arm架构,amd64对应x86架构
  • 如果遇到GitHub无法打开的情况下可以使用本站提供的 123Pan 下载

直接 wget 也可以,比如

wget -c https://github.com/fatedier/frp/releases/download/v0.53.0/frp_0.53.0_linux_amd64.tar.gz

如果国内GitHub无法下载,那就把文件下载到本地,再手动传到对应目录

无论是上述哪种方式下载,到最后都要解压到某目录下
比如我要解压到 /usr/local/frpc 下,那么输入

tar -zxvf frp_0.53.0_linux_amd64.tar.gz   #解压文件
mv frp_0.53.0_linux_amd64 /usr/local   #将frp目录移动到/usr/local下
mv /usr/local/frp_0.53.0_linux_amd64 /usr/local/frpc   #将frp目录改名成frpc

到这时,我们文件就准备好了,下面开始配置并部署!

2-3-2.配置frpc.toml

第一步我们先安装编辑器,如果已经安装过了请忽略此项

  • CentOS:
sudo yum install vim
  • Ubuntu/Debian:
sudo apt update
sudo apt install vim

安装好编辑器后 cd 到 /usr/local/frpc 目录下后编辑 TOML 配置文件

cd /usr/local/frpc
vim frpc.toml

这时我们配置 frpc.toml 文件
示例: (我要把我的SSH端口映射出去,以至于让我在外网可以访问)
注意!以下仅是演示示例,要根据自己的需求参照 2-1 编写

serverAddr = "1.1.1.1"   #服务器地址
serverPort = 7000   #服务器端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码,密码不正确将无法连接服务器
transport.tls.enable = false   #是否和服务端之间启用TLS连接
transport.tls.disableCustomTLSFirstByte = false
#默认为true,当配置为true时,无法和vhostHTTPSPort端口复用

[[proxies]]
name = "ssh"   #隧道名称,可自定义,不能重复
type = "tcp"   #隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
localIP = "127.0.0.1"   #本地IP地址,如果是本机就127.0.0.1
localPort = 22   #本地端口,本地服务端口,比如mc服务器端口25565
remotePort = 20022    #远程端口,连接隧道时用的端口
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy

配置好后输入 :wq 保存即可

2-3-3.设置启动方式

可以cd到 /usr/local/frpc 后使用 ./frpc -c frpc.toml
也可以直接使用

/usr/local/frpc/frpc -c /usr/local/frpc/frpc.toml

如果要设置开机自启,请新建一个frpc的系统服务

nano /etc/systemd/system/frpc.service

然后在 frpc.service 内填入:

[Unit]
Description=frpc
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/frpc/frpc -c /usr/local/frpc/frpc.toml   #填写frpc的安装目录
Restart=always

[Install]
WantedBy=multi-user.target

保存退出后输入下方内容即可设置frpc为开机自启

systemctl enable frpc   #开启开机自启动frpc服务
systemctl disable frpc   #关闭开机自启动frpc服务
systemctl start frpc   #启动frpc服务
systemctl stop frpc   #停止frpc服务
systemctl status frpc   #查看frpc服务状态

这时frpc应该是正常运行了
(其实Linux还有一种方法就是使用Docker部署,但是那个我没玩明白)


2-4.在Nas系统中部署frpc并配置

因为我手上只有群晖的nas,所以将以群晖的系统来演示
其他系统其实都大差不差,都是基于Linux系统开发而来,只是有些nas是arm架构,需要换个frpc版本而已。但是,私自乱动系统文件会造成一些很严重的后果,尽量别动! 但是如果能用Docker的话基本上所有系统都一样

这里有两个办法安装
一个是第三方套件(非常简单),一个是Docker(相对复杂)
我们先说第一个

2-4-1.使用第三方套件安装

群晖官方套件是没有收录frpc的,我们需要添加第三方套件
这里我们打开 套件中心→右上角设置→套件来源→新增
我们添加 矿神源 名称随便填

https://spk7.imnks.com/   #DSM7.x
https://spk.imnks.com/    #DSM6.x

添加完后点击确定,在左边我们可以看到新增 社群 此时我们打开它,找到 Frpc客户端 后安装即可
安装完成后打开,里面是配置文件填写页面,将配置文件填好后保存即可自动运行。
配置文件示例:(我要把我的DSM端口映射出去,以至于让我在外网可以访问)
注意!以下仅是演示示例,要根据自己的需求参照 2-1 编写

serverAddr = "1.1.1.1"   #服务器地址
serverPort = 7000   #服务器端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码,密码不正确将无法连接服务器
transport.tls.enable = false   #是否和服务端之间启用TLS连接
transport.tls.disableCustomTLSFirstByte = false
#默认为true,当配置为true时,无法和vhostHTTPSPort端口复用

[[proxies]]
name = "dsm_http"   #隧道名称,可自定义,不能重复
type = "http"   #隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
localIP = "127.0.0.1"   #本地IP地址,如果是本机就127.0.0.1
localPort = 5000   #本地端口,本地Web服务端口
customDomains = ["test.hoshiroko.com"]   #绑定域名,可设置自己的域名
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy

[[proxies]]
name = "dsm_https"   #隧道名称,可自定义,不能重复
type = "https"  #隧道类型,可填http, https
localIP = "xxx.xxx.xxx.xxx"   #本地IP地址,如果是本机就127.0.0.1
localPort = 5001   #本地端口,本地Web服务端口
customDomains = ["test.hoshiroko.com"]   #绑定域名,可设置自己的域名
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy
2-4-2.使用Docker安装

一般情况下不推荐,因为有部分nas使用的是 ARM 架构,无法使用Docker。请确保自己的nas可以使用Docker后再安装

打开 Container Manager 如果没有就安装一个,群晖官方套件中心有
点击左侧注册表搜索 snowdreamtech/frpc 后双击下载镜像
(标签latest就行,如果想指定版本就输入0.53.0,0.52.1之类的即可)
安装完成到容器里新增容器,映像选择 snowdreamtech/frpc 容器名称随便填后点下一步

这时我们到外面手动创建个 frpc.toml 配置文件后填写配置。
配置文件示例:(我要把我的DSM端口映射出去,以至于让我在外网可以访问)
注意!以下仅是演示示例,要根据自己的需求参照 2-1 编写

serverAddr = "1.1.1.1"   #服务器地址
serverPort = 7000   #服务器端口
auth.method = "token"   #服务端连接身份认证,默认token
auth.token = "test123"   #服务端token密码,密码不正确将无法连接服务器
transport.tls.enable = false   #是否和服务端之间启用TLS连接
transport.tls.disableCustomTLSFirstByte = false
#默认为true,当配置为true时,无法和vhostHTTPSPort端口复用

[[proxies]]
name = "dsm_http"   #隧道名称,可自定义,不能重复
type = "http"   #隧道类型,可用tcp, udp, http, https, tcpmux, stcp, sudp, xtcp
localIP = "127.0.0.1"   #本地IP地址,如果是本机就127.0.0.1
localPort = 5000   #本地端口,本地Web服务端口
customDomains = ["test.hoshiroko.com"]   #绑定域名,可设置自己的域名
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy

[[proxies]]
name = "dsm_https"   #隧道名称,可自定义,不能重复
type = "https"  #隧道类型,可填http, https
localIP = "xxx.xxx.xxx.xxx"   #本地IP地址,如果是本机就127.0.0.1
localPort = 5001   #本地端口,本地Web服务端口
customDomains = ["test.hoshiroko.com"]   #绑定域名,可设置自己的域名
transport.useEncryption = true   #传输加密,加密算法采用 aes-128-cfb
transport.useCompression = true   #传输压缩,压缩算法采用 snappy

写好配置文件后保存并复制到nas共享文件夹docker目录内的frps文件夹内
示例:/volume1/docker/frpc

此时我们返回 Container Manager 界面
在存储空间设置里选择 添加文件 选择我们刚才创建的 frpc.toml 配置文件
示例:/volume1/docker/frpc/frpc.toml

出来后我们会发现他右边还要求填一个路径,这个是我们Docker容器里的配置文件路径
我们直接填写 /etc/frp/frpc.toml 即可
一路下一步就行

这时我们就算是部署好了,可以试着访问看看
(frpc写起来真轻松,因为大部分都是复制frps的)
(没办法,它俩部署起来真就一模一样,换个程序和配置文件就行)


3.公共frp的使用

公共frp 顾名思义就是面向公众开放的frp,其中有免费使用的,也有付费使用的
那为什么要用公共frp呢?

  • 没钱
  • 没能力
  • 嫌麻烦
  • 懒得维护

是的,就算咱上述教的已经很透彻和明白了,但是维护一个frp服务器也是费时费力费钱的

举个例子吧,我现在想跟5个朋友们玩 mc(我的世界) 我如果不想玩国服,想自己加50个mod。为了游玩体验,根据bing AI与Bard的说法,每位玩家应配备1.5-2Mbps的带宽。那按照自建frp的成本来算,我至少需要准备一台8-10Mbps的服务器才能保证畅玩。那么在各大云厂商那里,阿里云和华为云要255-350元一个月,腾讯云要130-150元一个月
(这只是轻量应用,是限制每月流量1200-2000G的)

有人说,那境外机器带宽便宜啊

  • 额。。。你拿境外机器玩游戏?你要是买个美国机器岂不是要绕地球两圈?
    万一你机器线路还不是什么CN2,9929,CMI线路。。。。。。额
    frp-1
    P.S. 这是台香港服务器

那还人说,小厂机器便宜啊

  • 也是,有些小厂的机器确实是大厂价格的20%,但是那一个月也得40-90元啊,而且还有跑路的风险

所以,购买一台的服务器本身就是已经很麻烦的事情了,有些人就是想玩个游戏,结果到最后买了一堆服务器(比如我)
有时候真的应该静下心来想想我们到底要什么

所以这也就是使用公共frp的原因


3-1.公共frp - OpenFrp

公共frp那操作就简单多了,小白研究10-30min就会,有些公共frp还带官方启动器,属于是一碰就会
但是研究公用frp我们还是得有个方向,比如我们搭个mc,建个站

官网地址:https://www.openfrp.net
在注册好账号并实名认证后我们开始

3-1-1.OpenFrp部署mc联机

有两种办法,一种是使用官方启动器来映射,另一种是下载原版frpc来映射
( 注意! 如果对方不是正版可使用 自定义局域网联机 等mod来关闭正版验证)

第一种(官方启动器,简单)
  • 软件下载 里面下载启动器
  • 下载安装好启动器后登录账号即可
  • 返回mc界面开启对局域网开放,这时游戏聊天框应该会出现 “本地游戏已在端口xxxxx上开启” 记住这个端口号
  • 回到启动器页面点击左侧隧道按钮,选择一个离自己近的同运营商的节点
  • 右侧隧道模式选择 TCP ,本地端口填写刚才游戏聊天框的端口,远程端口可随机
  • 设置完后点击创建,在隧道页面找到你刚创建好的隧道复制地址,发给你要联机的朋友即可
  • 对方拿到地址后到多人游戏页面选择 直接连接 ,在地址框里输入地址即可连接
第二种(frpc,较为复杂)
  • 软件下载 里面下载Frpc
  • 下载好后解压至任意目录后在目录里新建 frpc.toml , start.bat 文件并在start.bat里填入
<你的frpc.exe> -c frpc.toml
  • 返回mc界面开启对局域网开放,这时游戏聊天框应该会出现 “本地游戏已在端口xxxxx上开启” 记住这个端口号
  • 返回官网到 创建隧道 里面创建隧道
  • 选择一个离自己近的同运营商的节点,隧道模式选择 TCP ,本地端口填写刚才游戏聊天框的端口,本地地址默认127.0.0.1,远程端口可随机,隧道名称可随机。后创建隧道即可
  • 配置文件 页面查看刚创建好隧道的配置文件,将配置文件复制到刚解压好的frpc目录里的 frpc.toml 里面后双击 start.bat 即可启动
  • frpc.toml 里面找到节点地址和远程端口后合并发给对方
  • 对方拿到地址后到多人游戏页面选择 直接连接 ,在地址框里输入地址即可连接
3-1-2.OpenFrp建站

建站可以选择HTTP和HTTPS两种隧道类型,均为80/443端口
自己本地nginx什么的可以使用任意端口都可以,在开始之前,请确保你的网站在本地能用127.0.0.1的方式访问
跟mc一样,也是有两种办法,一种是使用官方启动器来映射,另一种是下载原版frpc来映射
(http跳转https要同时创建两条隧道后在Nginx里面配置)

配置nas和这个是一样的,只不过把配置文件从自己服务器的换成OpenFrp提供的,部署方式见 2-4

第一种(官方启动器,简单)
  • 软件下载 里面下载启动器
  • 下载安装好启动器后登录账号即可
  • 回到启动器页面点击左侧隧道按钮,选择一个可以创建HTTP/HTTPS的节点(大陆节点要备案,港澳台和国外节点可不备案)
  • 右侧隧道模式选择 HTTP或HTTPS (也可以都创建,这样可以设置http→https跳转)
  • 本地地址一般为127.0.0.1,本地端口一般为80或443(如果你自己设置了nginx端口什么的就改成自己设置的)
  • 绑定域名填自己网站的域名,创建即可
  • 到官网 配置文件 页面查看节点地址,一般是 server_addr = 后面的一串域名
  • 到域名dns里添加与绑定域名里同样的主机记录,类型选择cname,记录值填那一串域名(节点地址)
  • 设置完后就可以访问网站了
第二种(frpc,较为复杂)
  • 软件下载 里面下载Frpc
  • 下载好后解压至任意目录后在目录里新建 frpc.toml , start.bat 文件并在start.bat里填入
<你的frpc.exe> -c frpc.toml
  • 返回官网到 创建隧道 里面创建隧道
  • 选择一个可以创建HTTP/HTTPS的节点(大陆节点要备案,港澳台和国外节点可不备案)
  • 右侧隧道模式选择 HTTP或HTTPS (也可以都创建,这样可以设置http→https跳转)
  • 本地地址一般为127.0.0.1,本地端口一般为80或443(如果你自己设置了nginx端口什么的就改成自己设置的)
  • 绑定域名填自己网站的域名,创建即可
  • 配置文件 页面查看刚创建好隧道的配置文件,将配置文件复制到刚解压好的frpc目录里的 frpc.toml 里面后双击 start.bat 即可启动
  • frpc.toml 里面找到节点地址后保存备用
  • 到域名dns里添加与绑定域名里同样的主机记录,类型选择cname,记录值填节点地址
  • 设置完后就可以访问网站了

更多请查看 OpenFrp Docs


3-2.公共frp - Sakura Frp

官网地址:https://www.natfrp.com
在注册好账号并实名认证后我们开始
我们还是以mc和建站为目标
(截至2023.12.18 SakuraFrp官网提供的frp版本为0.51.0,配置文件为INI)

3-2-1.SakuraFrp部署mc联机

跟OF一样,SakuraFrp也有官方启动器,那么也是两个方法,官方启动器和原版frpc
( 注意! 如果对方不是正版可使用 自定义局域网联机 等mod来关闭正版验证)

第一种(官方启动器,简单)
  • 软件下载 里面下载启动器并安装
  • 在官网首页找到访问密钥后复制到启动器里登录
  • 返回mc界面开启对局域网开放,这时游戏聊天框应该会出现 “本地游戏已在端口xxxxx上开启” 记住这个端口号
  • 到启动器隧道页面创建隧道,本地ip填写127.0.0.1,端口填游戏聊天框的那个端口,隧道名称随便,隧道类型 TCP ,远程端口留空,穿透节点尽量选择离你最近且同运营商的节点
  • 创建完后开启隧道,在日志页面可以看到
Tunnel/xxxxxx TCP 类型隧道启动成功
Tunnel/xxxxxx 使用 [frp-xxx.top:xxxxx] 来连接到你的隧道
Tunnel/xxxxxx 或使用 IP 地址连接(不推荐): [xx.xx.xx.xx:xxxxx]
  • 将域名或者IP地址发给你要联机的朋友即可
  • 对方拿到地址后到多人游戏页面选择 直接连接 ,在地址框里输入地址即可连接
第二种(frpc,较为复杂)
  • 软件下载 里面下载Frpc
  • 下载好后解压至任意目录后在目录里新建 frpc.ini , start.bat 文件并在start.bat里填入
<你的frpc.exe> -c frpc.ini
  • 返回mc界面开启对局域网开放,这时游戏聊天框应该会出现 “本地游戏已在端口xxxxx上开启” 记住这个端口号
  • 返回官网到 隧道列表 里面创建隧道
  • 选择一个离自己近的同运营商的节点,选择 TCP隧道 ,本地端口填写刚才游戏聊天框的端口,本地地址默认127.0.0.1,远程端口可随机,隧道名称自定义。后创建隧道即可
  • 查看刚创建好隧道的配置文件(在隧道右边三个点里),将配置文件复制到刚解压好的frpc目录里的 frpc.ini 里面后双击 start.bat 即可启动
  • frpc.ini 里面找到节点地址和远程端口后合并发给对方
  • 对方拿到地址后到多人游戏页面选择 直接连接 ,在地址框里输入地址即可连接
3-2-2.SakuraFrp建站

截至2023.12.18 SakuraFrp还没有一个免备案建站节点,唯一的非大陆节点已被墙
如果有免备案建站需求请使用 OpenFRP建站
如果是域名已备案可继续往下看

建站可以选择HTTP和HTTPS两种隧道类型,均为80/443端口
自己本地nginx什么的可以使用任意端口都可以,在开始之前,请确保你的网站在本地能用127.0.0.1的方式访问
跟mc一样,也是有两种办法,一种是使用官方启动器来映射,另一种是下载原版frpc来映射

第一种(官方启动器,简单)
  • 软件下载 里面下载启动器并安装
  • 返回官网到 隧道列表 里面创建隧道
  • 选择一个离自己近且尽量同运营商的可建站节点
  • 隧道模式选择 HTTP或HTTPS (可以创建https隧道后选择 创建HTTP重定向 这样可以实现http跳转https)
  • 本地地址一般为127.0.0.1,本地端口一般为80或443(如果你自己设置了nginx端口什么的就改成自己设置的)
  • 绑定域名填自己网站的域名,创建即可
  • 查看刚创建好隧道的配置文件(在隧道右边三个点里),查看节点地址,一般是 server_addr = 后面的一串域名
  • 到域名dns里添加与绑定域名里同样的主机记录,类型选择cname,记录值填那一串域名(节点地址)
  • 设置完后返回启动器开启隧道就可以访问网站了
第二种(frpc,较为复杂)
  • 软件下载 里面下载Frpc
  • 下载好后解压至任意目录后在目录里新建 frpc.ini , start.bat 文件并在start.bat里填入
<你的frpc.exe> -c frpc.ini
  • 返回官网到 隧道列表 里面创建隧道
  • 选择一个离自己近且尽量同运营商的可建站节点
  • 隧道模式选择 HTTP或HTTPS (可以创建https隧道后选择 创建HTTP重定向 这样可以实现http跳转https)
  • 本地地址一般为127.0.0.1,本地端口一般为80或443(如果你自己设置了nginx端口什么的就改成自己设置的)
  • 绑定域名填自己网站的域名,创建即可
  • 隧道列表 页面查看刚创建好隧道的配置文件,将配置文件复制到刚解压好的frpc目录里的 frpc.ini 里面后双击 start.bat 即可启动
  • frpc.ini 里面找到节点地址后保存备用
  • 到域名dns里添加与绑定域名里同样的主机记录,类型选择cname,记录值填节点地址
  • 设置完后就可以访问网站了

更多请查看 SakuraFrp 帮助文档


这些就是公共frp的常用教程,其他请查看官方文档或者百度
很多地方跟自建其实都一样,只是截至 2023.12.18 公共frp大部分都没更新frp 0.52及以上版本
所以很多都是以前的老教程,gofrp上已经更新了,找不到了
但是翻翻互联网,还是能找到些老教程的

本文作者:薄荷の尾巴
本文链接:https://blog.hoshiroko.com/archives/37f497acabc8
版权声明:本文章采用 BY-NC-SA 许可协议。转载请注明出处并使用相同协议!