在使用NAS的时候,偶尔会需要异地访问,虽然白群晖的QuickConnect已经可以实现异地登录DSM,但是如果涉及到比如说Jellyfin之类的媒体库就十分捉襟见肘。大部分情况下自家宽带可以联系运营商申请公网ip,只需要打个电话就可以很方便的获取公网ip,再通过DDNS设置一下就可以使用。但是总会有各种状况导致无法使用常规网络,比如我现在搬到商住两用房,大楼里的宽带是被运营商垄断的,接的是房东办好的企业宽带,想要公网ip的套餐一年要六千元,那这条路肯定行不通。查阅资料之后找到了可以通过FRP实现内网穿透的方法。
FRP实现内网穿透需要一个服务器,目前主流的有阿里云和腾讯云。之前看到说阿里云学生优惠有10元一个月的服务器,但是我实在是找不到,但是发现腾讯云有新人112元包年的轻量服务器,带宽为4M,实测可以支持全高清的1080p流畅在线观看不卡顿(压缩过的mp4格式,非蓝光原盘),不过拖动进度条的时候加载时间还是比较长。以及实测发现阿里云可以很简单的在DDNS里设置用群晖的域名访问,但是腾讯云必须在腾讯云平台上注册域名,并且实名认证,整个过程花费了我大概一个星期时间。但是不得不说这是开销最少的一个方法,所以本文以腾讯云的轻量服务器为例,进行FRP内网穿透。
登录腾讯云 腾讯云官网
选择最新活动的上云·精选
第一个就是我们想要的服务器了
系统选择CentOS7.6 64位,地址在哪就选哪,延迟更低
买好之后进入控制台,点开轻量应用服务器
在这里可以看到购买的服务器,在右下角会显示公网IP地址
点击左侧密钥,再点击创建密钥
进行密钥的创建
创建好之后会发现浏览器下载了一个login.pem,稍后有用。然后点击绑定/解绑实例。
绑定的时候会显示需要关机才能生效,这时确保虚拟机没有在使用。
这里我用的是FInalShell进行ssh连接,依次点击下面按钮
名称按照自己喜好,主机输入公网IP,端口22。
认证方法选择公钥,用户名填写root,选择刚刚的私钥
浏览-导入,浏览选择刚刚的密钥文件
连接管理器出现服务器,右键点击连接
第一次打开会显示下面界面,点击接受并保存
连接成功显示如下页面
FRP相关中文文档
先去github上下载FRP
我使用的CentOS下载linux_amd64的版本
直接在服务器上下载会比较慢,我推荐是用VPN下载到本地,然后通过FinalShell直接传上去,FinalShell下方会自动打开根目录,直接拖拽就好
解压压缩文件
tar -zxvf frp_0.51.0_linux_amd64.tar.gz
解压后右键刷新就能看到文件
选中右键重命名文件夹为frp,双击打开,打开客户端设置文件frps.ini
在最后一行加入token = password2020
然后ctrl+s保存。这里的密码用的是明文的方式,不要用常用的密码。
接下来进行服务器的端口配置,点击查看详情
点击防火墙-添加规则
我干脆直接把所有可能会用到的端口都开放了,其他默认,端口填写5000-9000
然后设置FRP客户端的自动运行
vi /lib/systemd/system/frps.service
将以下内容复制进去
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/root/frp/frps -c /root/frp/frps.ini #此处安实际情况修改
[Install]
WantedBy=multi-user.target
点ESC,然后输入:wq
保存
启动FRP客户端
systemctl start frps
设置自动启动
systemctl enable frps
完成后如下所示
此时重启服务器
重启完成后输入ps auxw
向上翻能看到frps就成功了
群晖打开Docker(最新系统里叫Container Manager),点击 映像-操作-导入-从URL添加
复制这个链接https://hub.docker.com/r/chenhw2/frp
,点击导入
下载速度会很慢,因为需要,可以通过设置代理的方式进行下载。趁着下载期间先准备一些工具,在电脑上新建一个文件重命名为frpc.ini,输入以下内容
如果有别的需要映射的端口可以按照同样的格式进行转发,括号里的名字修改一下不要重复
[common]
server_addr = 服务器IP地址
server_port = 7000
token = password2020
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[DSM]
type = tcp
local_ip = 127.0.0.1
local_port = 5000
remote_port = 5000
在群晖的Docker文件夹下创建frp文件夹,进入后点击上传-覆盖,将frpc.ini文件上传
然后进行容器的创建,docker里选中点击运行
点击下一步然后配置环境参数,默认是frps,因为在群晖上是客户端所以改为frpc
映射文件路径
选择frpc.ini
点击选择
拉到下面网络选择host
然后就可以启动了,点击日志出现success
至此,FRP设置已经完成,可以通过公网IP访问群晖了。
使用公网IP麻烦的一个地方就是一串数字就是不如有逻辑的英文好记,这里就需要申请一个域名,之前我用阿里云测试的时候可以很方便的把服务器的公网IP和群晖域名进行绑定,不用花一分钱就能实现域名登录,但是腾讯云就会要求你对域名进行备案。具体备案的流程这里就不赘述了,选一个自己能记得住倒是稍微长一些的域名,一年的价格在29元,也还可以接受,然后按着给的指示进行实名制注册就好了。不得不说腾讯云的域名有一个好处就是比群晖域名还短一些。