内网穿透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证书

1626154810766.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

点击下载映像
1626360371805.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

完整配置文件如下

[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

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

上传完成截图
1626361917105.png

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

添加对应的容器路径

/etc/frp/frpc.ini

1626362027946.png

下面我们点击应用
1626362098240.png

在启动容器即可
1626362116774.png

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

点击详细信息

1626362272504.png

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

正确效果图如下
1626362388060.png

四、映射配置

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

4.1 ssh远程访问

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

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

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

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

1626364232835.png

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

1626364593271.png

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代理,来进行映射
(宝塔安装不过多介绍了)

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

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

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

4.3 手机DS file远程访问

对应frpc文档中:

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

1626364891378.png

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

五、说明

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

例如我的路由器~
1626365056303.png

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就可以

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