Featured image of post 绿联云NAS DX4600 内网穿透FRP方案

绿联云NAS DX4600 内网穿透FRP方案

绿联云NAS DX4600 折腾记录

前言

【绿联云NAS DX4600】留了内存扩展口,为其扩展了8G内存后,就想着把他当作服务器使用。DX4600又可以使用docker,当个服务器用完全没问题。

所以接下来要解决的就是如何外网访问我的NAS了。本文介绍的就是我的第一招:FRP反向代理。

FRP 适用场景及优劣

首先FRP最大的劣势就是,你需要先有一台能公网访问的服务器。

可能会有疑问,都有公网服务器了直接把服务部署在公网服务器上不就好了,还费劲搞FRP代理内网服务器干嘛么?

NO NO NO 服务部署在自己的内网服务器的优势有很多。

首先公网的云服务器价格很高,2c4g没有优惠1年就得4位数的价格。然后各大云厂商的羊毛机器一般都是1c2g或者2c2g,当然这个配置也能部署nginx搭建静态网站, 但是要是涉及到JAVA服务1g-2g的内存就会非常紧张。自己的内网服务器很大程度上就没这个焦虑。 还有就是你薅的羊毛机器一般都是1年的,再续费会非常贵,到时候你就会面临数据迁移的问题很麻烦。

所以就可以买一台羊毛服务器,只用来做 frp、nginx 代理用,真正的服务都只部署在内网的机器上,用羊毛机反向代理内网服务器。

这样既不用定时迁移,也没有配置焦虑。但是这种使用公网服务器代理内网服务器的方案也有劣势,它依赖你公网服务器的带宽。
一般云服务器的羊毛机带宽都是3M-5M之间每月还有上限,用来代理一些静态、动态网站服务还够用,用来做家庭影音这种比较消耗网络资源的服务时就不合适了。

搭建过程(以绿联云DX4600+阿里云服务器为例)

部署规划

FRP 分为部署在内网服务器的 FRP Client 和部署在公网服务器上的 FRP Server

所有的服务部署均基于docker,基本的部署规划图如下:

FRP-C-S 部署规划图

FRP Client 部署

docker镜像使用:

1
snowdreamtech/frpc:latest

打开绿联云的【Docker】应用,选择【容器管理】-【添加】选择镜像snowdreamtech/frpc:latest

FRP-Client-Install

点击【下一步】-【网络】选择网络名称为host

FRP-Client-Host

【存储空间】-【添加】-【文件夹】d1/frp/frpc.toml到【装载路径】/etc/frp/frp.toml

其中第一个文件夹的路径可以自己定义,第二个装载路径是固定的

FRP-Client-Mount

点击【下一步】-【完成】完成创建容器步骤

打开绿联云的【文件管理】应用,创建d1/frp文件夹,上传 frpc.toml 文件到该目录下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# frpc.toml
transport.tls.enable = true # 从 v0.50.0版本开始,transport.tls.enable的默认值为 true
serverAddr = "公网服务器的IP地址"
serverPort = 7000 # 公网服务端通信端口

auth.token = "自定义令牌" # 令牌,与公网服务端保持一致

[[proxies]]
name = "www"
type = "tcp"
localIP = "127.0.0.1" # 需要暴露的服务的IP
localPort = 19019 # 本地端口
remotePort = 19019 # 暴露服务的公网入口

上传完成后,返回【Docker】应用启动 frpc 容器

FRP Server 部署

docker镜像使用:

1
snowdreamtech/frps:latest

首先SSH登陆阿里云服务器,首先创建挂载的配置文件:

1
mkdir -p  /root/frps

编辑 frps.toml 文件

1
vim /root/frps/frps.toml

配置文件内容如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# frps.toml
# 服务端监听端口(客户端连接用),默认7000
bindPort = 7000

# Web 管理面板配置(可选)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"        # 请修改用户名
webServer.password = "自定义密码"    # 请修改为复杂密码

# 客户端认证配置(强烈推荐设置
auth.method = "token"
auth.token = "自定义令牌"

执行docker命令创建容器:

1
docker run -d   --name frps   --restart always   --network host   -v /root/frps/frps.toml:/etc/frp/frps.toml   snowdreamtech/frps

测试&验证

浏览器访问```http://阿里云服务器IP:7500``

输入在frps.toml里面定义的用户名和密码后点击登陆,UI中显示有一个Clients就表示我们配置成功了。

此时我们再访问阿里云服务器的19019端口就会被代理到内网NAS的19019端口

FRP-WEB-UI

Powered by Hugo & Stack