【攻略】内网穿透之Frp 0.56
本文最后更新于 236 天前,其中的信息可能已经有所发展或是发生改变。

作为技术宅,当在家里拥有了一台媲美服务器的主机,或者一台自己组装的NAS后,就会想着如何将自己家里的服务映射到外网玩儿,做什么网站啊,游戏私服什么的等等。服务器商高配置服务器动不动就几千几百一个月,在这个公网IPv4缺乏的年代,并不是谁都可以无理由申请到IPv4,而且国内如果要用IP作为网站等内容,还需要工信部备案,冷不防的还会来查水表。所以这个时候,租一台便宜的服务器,用内网穿透的方式进行访问是很有必要的。

先用一张图来解释我现在做的:

下载

这边用的是当前最新版v0.56,Release v0.56.0 · fatedier/frp (github.com),进去后下载对应版本的frp。

这里仅对Windowsfrp_0.56.0_windows_amd64.zip和Linuxfrp_0.56.0_linux_amd64.tar.gz版本进行使用介绍,其他类似不常用不做解释。

下载后解压压缩包,里面一般有几个文件:

# 服务端
frps.exe  # windows
frps  # linux
# 服务端配置文件
frps.toml
# 客户端
frpc.exe  # windows
frpc  # linux
# 客户端配置文件
frpc.toml

部署服务端

编写配置文件frps.toml

主要就是配置文件的编写,以下是常用的几个:

# 服务端连接端口(必填)
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.addr = "0.0.0.0"  # Web监听服务端IP
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   # 每个客户端可以创建多少隧道

上面如果有报错的可以删除提示的那一条后再尝试启动
我推荐的必填几条:

bindPort = 7000
auth.method = "token"
auth.token = "{密码}"
webServer.port = 7001  # web端口就是7001
webServer.addr = "0.0.0.0"  # web监听服务端所有IP
webServer.user = "webUsername"
webServer.password = "webPassword"
vhostHTTPPort = 7002
vhostHTTPSPort = 7003  # 这个不会用

启动服务端:

# 在frp文件目录下
frpc -c frpc.toml

启动后,用浏览器访问IP:7001,就能看到web页面,输入自己设置的user、password即可登录查看

Windows部署:

配置启动文件

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

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

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

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

frps -c frps.tomlCMD

右键创建快捷方式后将快捷方式扔进下方目录即可
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 frpsCMD

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

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

部署客户端

编写配置文件frpc.toml

# 连接服务器
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

这里用一个黑群晖NAS的http的案例:

serverAddr = "x.x.x.x"
serverPort = 7000

auth.method = "token"
auth.token = "{密码}"  # 服务端设置的密码

[[proxies]]
name = "DiskStation"
type = "http"
localIP = "127.0.0.1"
localPort = 5000
transport.useEncryption = true
transport.useCompression = true
customDomains = ["ds.domain.com"]

启动客户端:

# 和启动服务端差不多
frpc -c frpc.toml

成功后即可在web中看到穿透的服务

然后在服务端上即可用中间件对IP:7002设置上反向代理到对应域名,做好DNS解析、SSL之类的设置,即可通过域名访问在家里的NAS了。

Windows部署:

配置启动文件

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

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

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

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

frpc -c frpc.tomlCMD

右键创建快捷方式后将快捷方式扔进下方目录即可
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 frpcCMD

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

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

后记

总之就是,非常好用,可玩性很高,但是要注意安全,不要泄漏密码、端口之类的,避免被不法分子有可乘之机。

有引用自:Frp 0.52及以上版本的全系统保姆级教程(包含frps和frpc的搭建与使用) | Mint’s Blog (hoshiroko.com)

评论

  1. Windows Chrome 124.0.0.0 来自 美国 CloudFlare节点
    7 月前
    2024-5-20 3:12:38

    (/ω\)

    • 博主
      薄荷の尾巴
      Windows Edge 124.0.0.0 来自 英国–英格兰–大伦敦–伦敦城 CloudFlare节点
      7 月前
      2024-5-20 10:26:21

      (☆ω☆)活捉一只野生精灵!

  2. 博主
    Windows Edge 123.0.0.0 来自 拉脱维亚–里加 CloudFlare节点
    9 月前
    2024-4-03 11:22:12

    无意间发现宝塔面板自带了

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
Source: https://github.com/MengXi2021/Argon-Emoji-DailyNotes
Source: https://github.com/Ghost-chu/argon-huhu-emotions
https://github.com/qs5667/argon_bilibili_emoji
https://github.com/qs5667/argon_bilibili_emoji
https://github.com/qs5667/argon_bilibili_emoji
https://github.com/qs5667/argon_bilibili_emoji
Source: github.com/zhheo/Sticker-Heo
颜文字
Emoji
小恐龙
花!
每日手帐
呼呼
B站基础表情
B站节日表情
B站游戏表情
B站活动表情
Heo
上一篇
下一篇