今天将以群晖系统为例,通过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证书。

1626154810766.png1626154810766.png

三、穿透配置

3.1 公网服务器配置

防火墙开放相应端口,或者开通所有端口限制
1626155206572.png

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

 

启动成功后
1626179741313.png

3.2 内网群晖客户端配置

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

首先在nas上安装docker

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

1626360067155.png

打开docker
1626360270841.png

搜索frp
1626360338863.png

点击下载映像

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

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

20210715_224714.png

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

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

1626361319580.png

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

1626361438096.png

下面我们点击添加文件,添加frpc.ini (frpc客户端配置文件)
1626361567571.png

接下来我们打开File Station进入docker目录,在进入到我们刚刚创建的frpc目录
1626361603131.png

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

后面中文注释建议删除掉

1626361766470.png

完整配置文件如下

  1. [common]
  2. server_addr = nas.frps.cn #server 填写我们的公网IP,或者对应的域名也可以
  3. server_port = 7000
  4. [ssh]
  5. type = tcp
  6. local_ip = 192.168.31.103 #必须填内网地址,不能填127.0.0.1
  7. local_port = 22 #内网映射地址的端口
  8. remote_port = 2222 #外网的端口
  9. [dsm]
  10. type = tcp
  11. local_ip = 192.168.31.103(内网地址)
  12. local_port = 5000
  13. remote_port = 5443
  14. [ds_file]
  15. type = tcp
  16. local_ip = 192.168.31.103(内网地址)
  17. local_port = 5001
  18. remote_port = 5001
  19. [https_webdav]
  20. type = tcp
  21. local_ip = 192.168.31.103(内网地址)
  22. local_port = 5006
  23. remote_port = 5007
  24. [http_webdav]
  25. type = tcp
  26. local_ip = 192.168.31.103(内网地址)
  27. local_port = 5004
  28. remote_port = 5005
  29. [emby]
  30. type = tcp
  31. local_ip = 192.168.31.103(内网地址)
  32. local_port = 8097
  33. remote_port = 8096

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

上传完成截图
1626361917105.png

在点回我们的容器,选择文件
1626361951605.png

添加对应的容器路径

  1. /etc/frp/frpc.ini

1626362027946.png

下面我们点击应用
1626362098240.png

在启动容器即可
1626362116774.png

如果我们启动了之后是下面的图这样可以点击右边在手动启动,如果还报错可以右击查看容器信息
1626362219017.png

点击详细信息

1626362272504.png

如果出现下面的日志信息,代表frps 服务端没启动成功
1626362320898.png

正确效果图如下
1626362388060.png

四、映射配置

接下来我们实际上就可以通过外网访问了

4.1 ssh远程访问

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

1.首先开启群辉ssh端口 (控制面板–>终端机和 SNMP–>开启SSH)

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

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

1626364232835.png

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

4.2 DSM远程访问

对应frpc.ini配置文件

  1. [dsm]
  2. type = tcp
  3. local_ip = 192.168.31.103
  4. local_port = 5001
  5. remote_port = 5443

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

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

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

1626363140610.png
1626363189262.png

接下来我们添加nginx反向代理
1626363229965.png

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

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

1626363281349.png

添加完成后我们就可以访问
1626363344943.png

接下来我们把https添加进去
1626363385061.png

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

1626363404984.png

接下来就可以愉快的访问了

4.3 手机DS file远程访问

对应frpc文档中:

  1. [ds_file]
  2. type = tcp
  3. local_ip = 192.168.31.103
  4. local_port = 5001
  5. remote_port = 5001

当然我们也可以用之前的nginx反向代理,使用443端口进行访问。效果如下图

五、说明

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

例如我的路由器~

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。