内网穿透Nas 基于Frp实现群晖的远程访问

今天将以群晖系统为例,通过Frp,实现Nas各大服务(包括但不限于ssh服务、DSM服务、移动端DS file)的远程访问。

一、梳理需要映射端口

首先梳理出公网想要访问的服务,自定义清楚访问端口:

【ssh】(本地默认端口:22)
自定义访问端口:2222

【DSM服务】(本地默认端口:5000-http 5001-https)
自定义访问端口:443

【DS file】(本地默认端口:5000-http 5001-https)
自定义访问端口:5001

【WebDAV Server】(本地默认端口:5005-http 5006-https)
自定义访问端口:5007【https】
自定义访问端口:5005【http】
#用https的5007访问WebDAV Server的https的5006端口;用https的5005访问WebDAV Server的http的5005端口

【emby】(本地默认端口:80096-http 不支持-https)
自定义访问端口:80096【https双重反代以访问http】

【举一反三:http项目】(本地默认端口:x)
自定义访问端口:x【通过https的x端口访问http的x端口】

二、环境准备

检查需要提前准备的材料:

  • 一台公网服务器(作为FRPS,实现内网穿透);
  • Nas一台(作为FRP客户端)
  • 域名解析至公网服务器
  • 为域名申请证书,并上传至Nas

根据访问需求,我们需要用到443端口即https服务,因此域名需要申请到https证书。这里以腾讯云为例,我们申请一个免费ssl证书

内网穿透Nas 基于Frp实现群晖的远程访问

三、穿透配置

3.1 公网服务器配置

防火墙开放相应端口,或者开通所有端口限制
内网穿透Nas 基于Frp实现群晖的远程访问

3.2 frps配置

安装frps客户需要尽可能和客户端都保证相同版本 (这里我使用最新的软件包进行安装)

#下载软件包
wget https://d.frps.cn/file/frp/v0.37.0/frp_0.37.0_linux_amd64.tar.gz

#解压
tar xf frp_0.37.0_linux_amd64.tar.gz

#修改配置文件
cd frp_0.37.0_linux_amd64
vim frps.ini

#修改下面的内容

[common]
bind_port = 7000            # 客户端与服务端进行通信的端口,即frp服务端口,需与客户端server_port一致
dashboard_port = 7500       # 控制台端口 通过 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示 通过 http://[server_addr]:7500 访问 Dashboard 界面,用户名密码默认都为 admin。

如果不会使用vim编辑器可以通过ftp将文件下载到本地,修改后上传

实际上Server端(frps.ini)需要添加的项目比较少,只需要监听端口,还可以添加token。接下来我们来启动frp

目前启动方式常用的有2种

#第一种,直接命令后台启动
nohup ./frps -c frps.ini &

#第二种,使用system管理
cd frp_0.37.0_linux_amd64/systemd/

#修改frps启动路径
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini   #需要修改对应的目录

cp frps.service /lib/systemd/system/
systemctl enable frps
systemctl start frps

启动成功后
内网穿透Nas 基于Frp实现群晖的远程访问

3.2 内网群晖客户端配置

映射关系我们需要在nas上安装frpc客户端

首先在nas上安装docker

点击-->套件中心--> 搜索docker--->安装docker

内网穿透Nas 基于Frp实现群晖的远程访问

打开docker
内网穿透Nas 基于Frp实现群晖的远程访问

搜索frp
内网穿透Nas 基于Frp实现群晖的远程访问

点击下载映像
内网穿透Nas 基于Frp实现群晖的远程访问

版本我们这里选择和frps服务端对应的版本即可

我这里安装的是frps-0.37.0版本,客户端我也使用相同版本。

内网穿透Nas 基于Frp实现群晖的远程访问

因为这个映像是在国外,如果国内网络不好可以使用下面的方法解决

  • 复制https://d.frps.cn/file/images/frpc/frpc_0.37.0.tar 到浏览器,下载我提供的包
  • 点击映像-->新增-->文件新增-->上传 (将frpc_0.37.0.tar包上传上去)

内网穿透Nas 基于Frp实现群晖的远程访问

接下来我们启动容器
双击映像,进行对应的设置,然后点击高级

内网穿透Nas 基于Frp实现群晖的远程访问

下面我们点击添加文件,添加frpc.ini (frpc客户端配置文件)
内网穿透Nas 基于Frp实现群晖的远程访问

接下来我们打开File Station进入docker目录,在进入到我们刚刚创建的frpc目录
内网穿透Nas 基于Frp实现群晖的远程访问

我们将配置文件保存到桌面,然后上传到刚刚创建的目录

后面中文注释建议删除掉

内网穿透Nas 基于Frp实现群晖的远程访问

完整配置文件如下

[common]
server_addr = nas.frps.cn       #server 填写我们的公网IP,或者对应的域名也可以
server_port = 7000

[ssh]
type = tcp
local_ip = 192.168.31.103 #必须填内网地址,不能填127.0.0.1
local_port = 22         #内网映射地址的端口
remote_port = 2222      #外网的端口

[dsm]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 5000
remote_port = 5443

[ds_file]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 5001
remote_port = 5001

[https_webdav]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 5006
remote_port = 5007

[http_webdav]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 5004
remote_port = 5005

[emby]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 8097
remote_port = 8096

把中文配置删除!!!(包含括号)
把中文配置删除!!!(包含括号)
把中文配置删除!!!(包含括号)

上传完成截图
内网穿透Nas 基于Frp实现群晖的远程访问

在点回我们的容器,选择文件
内网穿透Nas 基于Frp实现群晖的远程访问

添加对应的容器路径

/etc/frp/frpc.ini

内网穿透Nas 基于Frp实现群晖的远程访问

下面我们点击应用
内网穿透Nas 基于Frp实现群晖的远程访问

在启动容器即可
内网穿透Nas 基于Frp实现群晖的远程访问

如果我们启动了之后是下面的图这样可以点击右边在手动启动,如果还报错可以右击查看容器信息
内网穿透Nas 基于Frp实现群晖的远程访问

点击详细信息

内网穿透Nas 基于Frp实现群晖的远程访问

如果出现下面的日志信息,代表frps 服务端没启动成功
内网穿透Nas 基于Frp实现群晖的远程访问

正确效果图如下
内网穿透Nas 基于Frp实现群晖的远程访问

四、映射配置

接下来我们实际上就可以通过外网访问了
内网穿透Nas 基于Frp实现群晖的远程访问

4.1 ssh远程访问

我们将群辉的ssh映射到公网进行远程访问

1.首先开启群辉ssh端口 (控制面板-->终端机和 SNMP-->开启SSH)
内网穿透Nas 基于Frp实现群晖的远程访问

2.访问测试
通过公网(frps)ip+2222端口,管理员用户身份ssh登陆,sudo -i提权至root

我这里管理员写的是frps,所以我就使用frps登录,默认管理员用户名为admin

内网穿透Nas 基于Frp实现群晖的远程访问

如果公网连接不上请检查防火墙,以及检查内网是否可以正常连接

内网穿透Nas 基于Frp实现群晖的远程访问

4.2 DSM远程访问

对应frpc.ini配置文件

[dsm]
type = tcp
local_ip = 192.168.31.103
local_port = 5001
remote_port = 5443

由于现在是域名加端口的方式访问,比较不是很不太方便,接下来我们配置域名证书,使用https://dsm.frps.cn 访问群辉

我们通过宝塔上的Nginx代理,来进行映射
(宝塔安装不过多介绍了)

我们点击网站-->添加域名-->配置请跟我一致-->点击提交

内网穿透Nas 基于Frp实现群晖的远程访问
内网穿透Nas 基于Frp实现群晖的远程访问

接下来我们添加nginx反向代理
内网穿透Nas 基于Frp实现群晖的远程访问

添加代理的名称-->地址http://127.0.0.1:5443

这里的5443就是我们映射公网的一个端口(当然也可以修改其他)

内网穿透Nas 基于Frp实现群晖的远程访问

添加完成后我们就可以访问
内网穿透Nas 基于Frp实现群晖的远程访问

接下来我们把https添加进去
内网穿透Nas 基于Frp实现群晖的远程访问

我们把下载好的证书添加进去,如果没有可以点击Let's Encrypt生成新的证书

内网穿透Nas 基于Frp实现群晖的远程访问

接下来就可以愉快的访问了
内网穿透Nas 基于Frp实现群晖的远程访问

4.3 手机DS file远程访问

对应frpc文档中:

[ds_file]
type = tcp
local_ip = 192.168.31.103
local_port = 5001
remote_port = 5001

内网穿透Nas 基于Frp实现群晖的远程访问

当然我们也可以用之前的nginx反向代理,使用443端口进行访问。效果如下图
内网穿透Nas 基于Frp实现群晖的远程访问

五、说明

其它服务都是可以使用nginx反向代理,实现通过https不加端口的方式进行访问~

例如我的路由器~
内网穿透Nas 基于Frp实现群晖的远程访问

frp

利用FRP和Openvpn实现内网穿透外网访问

2021-7-1 23:20:14

frp群辉

群晖NAS使用Docker部署frpc客户端实现内网穿透

2021-11-22 13:13:35

3 条回复 A文章作者 M管理员
  1. 010

    有一点想问下,宝塔上的Nginx代理,来进行映射这一步是在frps服务端安装弄,还是在frpc客户端弄

    • FRPS

      代理肯定要在frps服务端配置,客户端只是配置一个端口映射,那么映射到frps服务器上了,修改frps服务器的nginx就可以

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索