基于frp的内网穿透客户端的搭建


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

本篇仅关于客户端也就是win端的搭建,有关linux或者服务端的请参考另一篇文章:基于frp的内网穿透客户端的搭建

frps的搭建与配置

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被弃用了。好多新配置咱自己也没搞明白,为了写这篇文章只能现学现卖)


Windows中搭建frps并配置

准备资源

  • 前往Github下载frps
  • arm/arm64对应arm架构(不会有人用Windows on ARM吧),amd64对应x86架构
  • github下载需要科学上网,本教程不提供科学上网的方法,谢谢

配置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 }    #同理,可以设置多个单端口开放
]

配置启动文件

这里有两种方法,一种是配置好 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 。
解压后在win64/32找到 nssm.exe 放在a目录里,打开 cmd 后cd到a目录下运行

nssm install frps

输完命令回车后会弹个窗口,根据实际情况按下图填后按 Install service 即可

之后到 任务管理器→服务 中找到 frpc 服务后右键开始就没问题了。如果之后要更新 frps.toml 配置文件,再次找到此处右键重新启动就没问题了


frpc常用配置文件介绍

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

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

连接服务器

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 是重头戏,之后有时间补充

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


Windows中部署frpc并配置

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

准备资源

  • 前往Github下载frps
  • arm/arm64对应arm架构(不会有人用Windows on ARM吧),amd64对应x86架构
  • github下载需要科学上网,本教程不提供科学上网的方法,谢谢

配置toml文件

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

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

配置启动文件

这里有两种方法,一种是配置好 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 。
解压后在win64/32找到 nssm.exe 放在a目录里,打开 cmd 后cd到a目录下运行

nssm install frpc

输完命令回车后会弹个窗口,根据实际情况按下图填后按 Install service 即可

之后到 任务管理器→服务 中找到 frpc 服务后右键开始就没问题了。如果之后要更新 frpc.toml 配置文件,再次找到此处右键重新启动就没问题了


这样就部署完毕了,注意看自己电脑部署的是哪一个文件哈

声明:Hello World|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 基于frp的内网穿透客户端的搭建


这是我们的