宝塔面板搭建内网穿透frp服务端+泛域名解析+SSL证书达到内网设备直接域名免端口访问
NAS

宝塔面板搭建内网穿透frp服务端+泛域名解析+SSL证书达到内网设备直接域名免端口访问

rongyan
2025-11-16 / 1 评论 / 285 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2025年11月16日,已超过161天没有更新,若内容或图片失效,请留言反馈。

搭建环境:Ubuntu 22.04 LTS+BT Panel 11.2+Nginx 1.26.3

frp官方下载(这里我没有用官方的下载渠道,贴出来供选择):
https://github.com/fatedier/frp/releases

frp官方文档(可以看一下以便了解):
https://gofrp.org/zh-cn/docs/examples/ssh/

前提条件:
1、需要有台云服务器,有固定IPV4.
2、内网有台能装frpc(客户端)的NAS或者路由(我这里用的是群晖,并在群晖套件中安装好frpc。
3、注册好一个可用域名并解析到云服务器上,解析三个记录如下:
域名解析记录图
第一条CNAME记录,用于www.testnas.cc自动跳转testnas.cc,这条根据自己的喜好来,我个人比较喜欢去掉www,直接用testnas.cc这样的形式来访问设备
第二条为A记录,名称填“@”,意思是将testnas.cc本体解析到服务器
第三条为A记录,名称填“*”,意思是泛域名,即将任意二级域名(如home.testnas.cc)解析到服务器。

云服务器安装宝塔面板的教程:
宝塔面板安装说明
我这里是Ubuntu,可以直接ssh工具连上服务器(root帐户)后,用宝塔官方提供的一键安装命令直接安装:

wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ed8484bec

安装成功后会有登陆信息,把这些信息记录下来:
宝塔面板信息

登陆之后进行简单的帐户名称、密码、安全口令等的一些设置,自己做好这些信息的备忘。
然后在应用商店安装Nginx,最好编译安装,不要快速安装。
宝塔Nginx版本

然后去宝塔的Docker里,搜索frps服务端并安装。
宝塔面板frps安装教程图

这里的端口根据自己的情况设置:
名称:任意
版本:默认即可
允许外部访问:默认勾上
web端口:默认7500(frp服务器的web管理端口,安装成功后可以用http://服务器ip:7500这样的地址进入frps管理界面查看信息。)
服务端口:默认7000,内网设备与服务器互相通讯的端口
http监听端口:默认40800(不要设置80,不然后期就没办法用反代了)
https监控端口:默认40443(不要设置443,原因同上)
用户:web管理端的登陆用户(7500端口的那个)
密码:web管理端的登陆密码(7500端口的那个)
其它设置默认即可。
安装完成后,可以看到服务端已经成功运行:
frps运行截图

先点击(停止按钮)停止服务端的运行。
然后点运行中三个小字的右侧文件夹按钮进入frps目录
frps目录图

再进入data目录,打开frps.toml配置文件
frps.toml配置说明图

在vhostHTTPPort = 40800上方增加一条
subdomainHost = "testnas.cc"
testnas.cc是我们购买的域名,根据实际情况填写
默认生成的token密码最好重新设置一下
auth.token = "A@1236987"

设置完成后,保存退出,去frps面板,重新启动它。
接着我们试着登陆一下,能成功登陆说明服务端配置成功:
frps后台

如果连接不上,有可能是服务器端口没有打开,需要到防火墙放行端口。

去内网设备安装frpc客户端,我这里以群晖为例:
群晖frps配置图

配置参数说明:

serverAddr = "201.212.198.14" #填云服务器IP
serverPort = 7000  #服务端口
auth.method = "token"
auth.token = "A@1236987"  #token密码

[[proxies]]
name = "dsm"  #唯一性,不可重复
type = "http"  #http协议
localIP = "127.0.0.1"  #因为是群晖本体,所以这里可以设置为127.0.0.1,如果是内网其它设备,则需改为其它设备的内网地址。
localPort = 5000  #群晖http访问的端口号
subdomain = "dsm"  #自定义二级域名前辍

设置完成后,若无误的话,则可以用http://dsm.testnas.cc:40800来访问了
现在知道前面设置的那两个参数:

http监听端口:默认40800
https监控端口:默认40443

作用了吧?

假如要穿透其他内网设备,则在群晖的frpc的配置文件下方再增加一栏,我这里以我在NAS布署的一款Docker应用Memonts为例:
默认内网访问地址http://192.168.66.4:19847
memonts应用图


在群晖的frpc套件中增加如下设置:
[[proxies]]
name = "memont"  #唯一性,不可重复
type = "http"  #http协议
localIP = "192.168.66.4"
localPort = 19847
subdomain = "memonts"

成功后则可以用http://memonts.testnas.cc:40800来访问了:
memonts应用图2

接下来,我们再在云服务器的宝塔面板上,做一下反代,及布署SSL证书,让我们可以把后面的端口号去掉,改为用域名,并且是https的形式直接访问内网设备。
在宝塔面板网站里,添加一个网站
我们是要把主域名泛解析,但是如果直接添加*.testnas.cc它会提示主域名不能泛解析:
主域名不能泛解析图

我们先改成testnas.cc,就可以成功添加网站了:
宝塔面板网站列表

接着我们打开此网站的设置:
在域名这里再添加泛域名,即可成功添加:
宝塔面板添加泛域名1
宝塔面板添加泛域名2

我们再把主域名删除,只保留泛域名:
宝塔面板添加泛域名3

这样在域名这里就只有泛域名这一个了:
宝塔面板添加泛域名4

我们再给这个泛域名申请一个SSL证书:
宝塔面板申请SSL

SSL证书即可布署完成:
宝塔面板申请SSL证书成功图

现在免费的证书都只有三个月有效期,不过宝塔有个好处就是可以到期提醒然后再续签,有能力的还可以设置脚本自动续签,这个是另话了。

然后我们再进入网站的设置,做一个反向代理:
宝塔面板反向代理设置图

代理名称根据需要填写
目标URL:云服务器IP+http监控端口,这里就填http://127.0.0.1:40800
发送域名:$host
其它默认,确定即大功告成。

访问moments应用看看(即没有http的不安全提示,也不再需要端口号了):
memonts应用访问图

我们来看看反代前后对比:

内网设备原来访问方式:
路由器:http://router.testnas.cc:40800
朋友圈应用:http://memonts.testnas.cc:40800
群晖:http://dsm.testnas.cc:40800

现在:
路由器:https://router.testnas.cc
朋友圈应用:https://memonts.testnas.cc
群晖:https://dsm.testnas.cc

注:内容中的testnas.cc为虚构,请根据实际情况填写。

0

评论 (1)

取消
  1. 头像
    andychan
    MacOS · Google Chrome

    写得太详细了,解决了我的大问题。

    回复