搜索
您的当前位置:首页正文

如何用 Frp 实现外网访问群晖 NAS

来源:二三娱乐

如何用 Frp 实现外网访问群晖 NAS

为什么写这篇文章

因为有在外面访问家里 NAS 的需求,群晖自带的动态域名解析访问又太慢(因为群晖自带动态域名的 DNS 服务器在国外)。所以需要用内网穿透技术来实现通过其他公网 IP 来访问家里的 NAS 设备的需求。所以才有了这篇文章。

概念解释

  • NAS - 简单的说就是一个存储中心。
  • Frp - 一种内网穿透技术。
  • 内网穿透 - 就是通过其他公网 IP 来访问本地没有公网 IP 网络环境的一个技术。

内网穿透

内网穿透技术众多,比如花生壳内网穿透、Ngrok、Frp 都是现在主流的内网穿透技术。
但我个人认为 Frp 是目前最好用配置最简单的(经过测试)

  • 花生壳
    配置简单方便,比较傻瓜化。但要收费。虽然也有免费版,但由于免费版的流量限制,基本上没有什么实际作用。

  • Ngrok
    发布时间相对较长,对象较为成熟的一种内网穿透技术。但由于功能的强大。配置较为繁琐。因为折腾许久没有成功过,最后放弃。

  • Frp
    配置简单,第一次用就配置成功了。并且适用于各大主流平台设备。

具体过程

准备工作

  • 一台有公网 IP 的服务器 (VPS、云主机)

    之前注册了一个国外的 VPS, 准备做内网穿透和 vpn 用,但由于访问速度。果断放弃,最后换成了自己阿里云 ECS。

  • NAS (客户端)

    群晖 DS 416 play

基本步骤

服务器端配置:

  1. wget 
    

    实例中:我的阿里云 ECS 用的 centos7 所以我选择 linux_amd64 64位的
    Frp 0.12.0 最新测试版的

  2. 使用 tar 指令解压 tar.gz 文件

    tar -zxvf frp_0.12.0_linux_amd64.tar.gz
    
  3. 进入 frp 目录

    cd frp_0.12.0_linux_amd64
    
  4. 删除不必要的客户端文件

    rm -f frpc frpc_full.ini frpc.ini
    

    版本不同可能稍有差异,
    frpc 为客户端文件
    frps 为服务器端文件

  5. 配置服务器端文件

    vi frps.ini
    

    frps.ini 为服务器配置文件

  6. 编辑配置文件

    [common]
    bind_port = 7000
    vhost_http_port = 8080
    dashboard_port = 7500
    dashboard_user = 用户名
    dashboard_pwd = 密码
    max_pool_count = 5
    authentication_timeout = 900
    
    subdomain_host = lekee.cc
    
    [ssh]
    listen_port = 6000
    auth_token = 和客服端 token 对应
    

    简单解释:

    [common] 必填的
    [ssh]

    listen_port ssh 访问端口
    auth_token 用户身份认证

    详细配置
  1. 保存上面配置文件吗,启动 frp 服务器

    ./frps -c ./frps.ini
    

    需要后台运行,请看下面

服务端配置结束。

客户端配置

客户端就是您本地需要做外网服务的设备,可以是 PC、Mac、NAS、路由器、或者虚拟机里的 liunx 系统。

这篇文章主要是利用 Frp 技术访问在群晖 NAS 服务的应用。实例也是 NAS 系统。

  1. SSH 登录群晖 NAS (群晖必须开启 ssh)
nas_ssh_start.png
```
ssh nas
```

> 我设置过别名,详情查看我的另一篇文章[MAC 终端 SSH 别名代替 IP 的方法](https://lekee.cc/904.html)
> ssh nas = ssh user@ip
  1. 下载 Frp, 删除服务端文件。(因为和服务端配置一样,不再一一赘述。)

    sudo -i // 切换 root 用户
    wget  
    tar -zxvf  frp_0.12.0_linux_386.tar.gz
    cd frp_0.12.0_linux_386
    rm -f frps frps_full.ini frps.ini
    
  2. 编辑 frpc.ini 文件(客户端配置文件)

    vi frpc.ini
    
  3. 编辑配置文件如下

    [common]
    server_addr = ip
    server_port = 7000
    auth_token = 和服务器端对应
    pool_count = 1
    
    [ssh]
    type = tcp
    local_ip = NAS 局域网ip
    local_port = 22
    remote_port = 6000
    
    [nas]
    type = http
    local_port = 5000
    subdomain = nas
    
    [web]
    type = http
    local_port = 80
    subdomain = web
    

    简单解释:

    [common] 必填的

    server_addr 服务器端公网
    server_port frp 服务端口,和服务器端 bind_port 一致
    auth_token 和前面服务器端 [ssh] auth_token 一致
    pool_count 连接池数量

    [ssh]
    [nas] NAS 管理界面
    [web] NAS web Station 服务,没用可以不用设置
    详细配置
  4. 保存,运行。(后台运行,请看下面)

    ./frpc -c ./frpc.ini
    

    此时在服务端会看到"start proxy sucess"字样,即连接成功。

测试运行

ssh 测试
ssh -p 6000 user@服务器ip 

user 为你登录群晖 NAS 的用户名

nas 界面
nas_login.png
NAS web Station
nas_web.png

域名后面 8080 端口可以隐藏,下面介绍如何隐藏 8080 端口。

扩展应用

后台运行

后台运行服务的方法有很多,这里只说一种可以在服务器端(Linux)和客户端(NAS)都可以用的 nohup指令

服务器端
nohup ./frps -c ./frps.ini &
客户端
nohup ./frpc -c ./frpc.ini &

自动启动

隐藏 8080 端口

总结疑问

使用状态

目前使用一切正常,能满足我的日常需求。
在外面需要访问 NAS 里的的文件的时候速度还比较满意。
今天还测试在外面看 NAS 里的视频,也一点都不卡。

我的担心

但我的担心就是在外面观看 NAS 里的视频的时候,流量有点害怕。
因为我现在使用阿里云 ECS 计费方式是按流量计费的。
不知道这样在外面看视频,用阿里云做中转。流量到底是怎么计算的。
还需要进一步探究。不过之前阿里云上预存1000元,都好几个月了。还有999.78元。

展望

这个技术伟大之处就是,只要设备能上网。不管有没有公网 IP,都可以让任何一个能上网的机子访问该设备。该设备可能是一台 PC,一个服务器,一个路由器,一个NAS,一个摄像头,一个... 无限扩展无限衍生,无限可能...
希望本文能您带来帮助!

Top