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

2023年 5月 4日 125.0k 0

今天将以群晖系统为例,通过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
    打开docker1626360270841.png
    搜索frp1626360338863.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.png1626363189262.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

    相关文章:

    1. CentOS 7 ETCD集群配置大全
    2. Kubernetes 1.14 二进制集群安装
    3. 利用FRP和Openvpn实现内网穿透外网访问
    4. Kuerbernetes 1.11 集群二进制安装

    相关文章

    LeaferJS 1.0 重磅发布:强悍的前端 Canvas 渲染引擎
    10分钟搞定支持通配符的永久有效免费HTTPS证书
    300 多个 Microsoft Excel 快捷方式
    一步步配置基于kubeadmin的kubevip高可用
    istio全链路传递cookie和header灰度
    REST Web 服务版本控制

    发布评论