黑群晖FastConnect:自定义域名+内外网访问,比QC更顺滑
〇、前言
我原本是5月底发这篇文章的,但是因为马上要搬家了,一拖再拖就到了现在。原文是基于长城/移动宽带写的,搬家后我换成了联通宽带。虽然我已经脱坑了,但决定把之前的折腾经历分享出来,希望能帮到有需要的朋友。
前段时间「矿难」,我跟着某个 QQ 群里的老司机们上了「蜗牛星际」的车,以300元不到的低成本也体验了一下早有耳闻的 NAS,确实是个好东西啊。装黑群晖的过程我就不再赘述,网上很多教程,挺简单的。
然而在使用黑群晖的过程中,我和大部分人都碰到了一个难题:「如何通过外网访问家中的黑群晖?」
黑群晖无法使用官方的 QuickConnect 服务(虽然可以洗白,但不太推荐);
很不幸,家里的长城/移动宽带都没有公网 IP,也无法使用各种 DDNS 服务。
关于官方的 QuickConnect(简称QC),二级域名不够个性化,听说速度也不是很稳定,而且咱用着黑群晖,群晖老板都睁一只眼闭一只眼了,如果还去蹭群晖的 QC 资源,不合适吧?
更换一个有公网 IPv4 地址的宽带运营商,比如电信和联通,此方法一劳永逸。
部分地区的宽带没有公网 IPv4 但支持 IPv6 ,尝试获取公网IPv6 地址也是一样的效果。
购买内网穿透硬件,按月收费、操作较简单(如花生棒、公网IP盒子),但性价比可能不如换宽带。
使用内网穿透软件,有免费和付费的,操作灵活但有一点小门槛。
我在搬家前是合租,最开始图便宜瞎选的100M长城宽带,后来换成月消费58元+50M移动宽带,当时使用的是比较折腾的第4种方法。目前的新家是一个人住,使用的是月消费59元+100M联通宽带,比较省心了,算第1、2种方法吧。
顺便附送一个小科普:
IPv4 地址的总数为 4 294 967 296(约43亿),而互联网已经发明60余年,目前地球上的联网终端规模过百亿,早在2011年IPv4地址已经分配完毕了,其中我国占了3 .38亿个。2017年某机构调查数据显示,中国7.51亿互联网用户仅有3 .38亿个 IPv4 地址,人均0 .45个。目前 IPv4 在向 IPv6 过渡中,作为互联网的下一代协议,IPv6 地址的总数为3.4×10^38个,比 IPv4 地址的数目大 10^28倍,可以说是一个天文数字了,基本上IPv6可以分配到地球上的每一粒尘埃。
一、FastConnect
我家中的斐讯K3路由器刷了「梅林」固件,里面内置了一个很厉害的「ddnsto内网穿透」插件,和 QC 的效果差不多了,但有一点小问题:
定期需要微信扫码验证,比较适合个人使用。
可能是我路由器是改版固件的原因,偶尔会抽风断开连接一段时间。
为了多一个备份方案,于是我翻遍各种论坛和博客,最后找到了一个比较合适的方案,我把它命名为「FastConnect」吧,因为其中的两项重要服务都是 F 开头,小小恶搞一下~
OK……不卖关子了,所谓的 FastConnect (简称FC)是指:
Tip:注册个人域名属于个性化需求,并不是必须的。
当你在外面使用手机流量访问fcnas.cf,域名会解析到frp服务器,通过内网穿透连接NAS。
当你在家中使用手机WiFi访问fcnas.cf,域名会被家中的路由器劫持DNS,绑定到NAS的本地IP,局域网直达NAS,避免frp中转绕远路。
使用我这套 FastConnect 和群晖官方 QuickConnect 体验基本一致,甚至速度可能更快。
以上为个人理解,如有错误请指正。
看到这里,老司机应该心里有数了,FastConnect 的原理其实很简单,只是我觉得以前看的教程都不够简洁,于是自己动手写了。下面我就说说下实现的步骤,如果只需要外网访问,直接看下文的「内网穿透」部分即可。
二、注册域名
2.1 免费域名
网上有很多提供免费域名的服务商,如Freenom可注册.TK / .ML / .GA / .CF / .GQ后缀的免费一级域名。有效期最长一年,部分还能延期。
不过也有很多老司机不推荐免费域名,问题多多(比如域名使用不当,有可能被收回),请自行考虑后决定。
简单过一下注册流程:
挑选一个你喜欢的免费域名,有效期最长12个月。
选择【Use DNS】-【Use your DNS】,推荐改成国内的DNSPod,输入下面的地址:
http://f1g1ns1.dnspod.net
http://f1g1ns2.dnspod.net
下一步使用邮箱提交注册,或者直接使用 Google、Facebook 关联登陆。
最后随便填写一下个人信息,都不需要手机验证,注册成功的界面忘记截图了。
2.2 付费域名
国内的腾讯云和阿里云也有很多低价域名可购买,最便宜的才1元/第一年。因为我没买就跳过了,需要的自己下单,需要教程问度娘。
三、内网穿透
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。frp 由frps 服务端和frpc 客户端组成,版本要一致,需配合使用。
3.1 选择frps服务器
网上有许多互联网分享精神的站长共享了自己搭建的 frp 服务器,其实这个玩意挺小众的,服务器利用率不算高,速度基本够用。
我从搜索引擎找到了一些可用的 frp 公共服务器,不保证长期有效,自己 ping 一下找个速度快的。
选择公共服务器要留意 frps 版本,待会儿你在群晖 Docker 里安装的 frpc 版本要一致,否则出现谜之 bug 后果自负。
如果你担心隐私问题或者有云服务器想自己折腾,可以在一台有固定公网 IP 的 VPS 上搭建 frps 服务端,GitHub 有官方教程。你也可以使用这个一键安装脚本。
3.2 安装frpc客户端
打开群晖 DSM ,在「套件中心」里搜索并安装「Docker」,然后在 Docker 「注册表」里搜索并下载frpc(frp客户端)。
frpc 客户端版本与 frps 服务端版本保持一致
我示例选的是 leonismoe/frpc 的 v0.26 版本镜像,更新比较及时
3.3 配置frpc
新建一个文本文件,复制以下内容,另存为frpc.ini文件(注意改后缀名),然后上传到你的 NAS 的 /docker/frp 默认文件夹,也可以选其他位置。
下面分享我原创的、可能是全网最容易看懂的 frpc 配置图示:
白色部分直接复制
蓝色部分按需修改
绿色部分备注说明
灰色部分自备域名
[common] server_addr = frp1.chuantou.org server_port = 7000 token = www.xxorg.com user = ccav admin_addr = 192.168.2.33 admin_port = 7400 admin_user = admin admin_pwd = admin [nas] type = http local_ip = 192.168.2.33 local_port = 5000 subdomain = fc custom_domains = fcnas.cf [feixun_k3] type = http local_ip = 192.168.2.2 local_port = 80 custom_domains = k3.fcnas.cf
3.4 启动frpc
准备好配置文件,我们可以来尝试启动 frpc 客户端了。
在「Docker」的「映像」里选择刚才下载的文件「启动」创建容器,「常规设置」默认即可,点击左下角「高级设置」。
首先「高级选项」默认选项卡勾选「启用自动重新启动」,然后在「卷」选项卡,用刚才上传frpc.ini配置文件替换默认的/etc/frpc.ini文件 。
在「网络」选项卡勾选「使用与Docker Host相同的网络」,最后点击「应用」,继续下一步完成启动。
如果你设置了公共服务器的 subdomain(二级域名),可以打开类似http://fc.frp1.chuantou.org的网址测试连接。若出现谜之bug,请查看日志然后去问度娘。如果你要绑定使用自己的 FC 域名,请继续下一步操作。
之后想修改 frpc 配置文件,可以直接打开群晖IP:7400进入管理后台。
四、域名解析
接着我们来说说如何绑定自己的 FC 域名,打造自己独一无二的 FastConnect。
4.1 微信小程序
本文以腾讯云 DNS 域名解析为例(DNSPod 现在属于腾讯云了),加上腾讯云支持自家的微信小程序,比较方便。
如果你是在阿里云购买的域名,可以直接使用阿里云解析,过程大同小异,有问题找度娘。
微信小程序搜索「腾讯云助手」,授权登录和验证步骤略过。
在小程序的「管理」页选择「域名解析」,添加域名。
选择你在腾讯云购买的域名或添加免费域名(注册的时候咱已经关联了 DNSPod)
添加域名后继续点击「添加解析记录」,建议添加「@」和「*」这2条解析记录。
记录类型:公共服务器选「CNAME」,自建服务器选「A」记录
主机记录:填写「@」直接解析和「*」泛解析
记录值:填写 frps 服务器地址
保存后过几分钟域名解析就会生效了(可以重启一下群晖的 docker 容器),打开浏览器测试一下吧~ 比如我的一级域名是fcnas.cf。
4.2 设置群晖应用别名
登录群晖 DSM,在「控制面板」-「Synology 应用程序门户」-「应用程序」里可以分别设置你需要单独访问应用门户别名和登录样式等。
我直接设置了默认的几个别名,然后群晖会自动识别你的 FC 域名并关联别名,例如浏览器打开fcnas.cf/drive,这样就省去了修改 frpc 配置文件的麻烦,一步到位。
偷偷晒下壁纸哈~
4.3 域名使用小贴士
如果遇上谜之bug,先去「解析记录」-「立即诊断」,查看原因后问客服或度娘。
群晖全家桶里的 Drive、Moments 等 App 可以直接填写fcnas.cf登录,无需加端口。
但群晖管家、DS file、DS audio、DS video 等 App 必须填写fcnas.cf:80登录,这个问题困扰了我很久。
五、内外网切换
群晖自带的 QuickConnect 虽然二级域名很长(类似xxx.cn1.quickconnect.to),但是 QC 有一个好处,只需在群晖全家桶 App 填写一次 QC ID(如xxx),它会自动识别内网或外网,达到最佳的连接速度。
一般用内网穿透或 DDNS 搞定外网访问后,在群晖全家桶 App 里填写fcnas.cf,不管你在外面还是家中,所有数据都要经过中转,下载或备份的速度比较一般。常见的解决办法是手动修改地址:
都填fcnas.cf,外网访问方便了,在家却变龟速,千兆局域网没有利用起来。
在外填fcnas.cf,在家填192.168.2.33,群晖 App 可以记住地址,手动切换略麻烦。
接下来就是 FastConnect 的最后一步,搞定内外网切换功能。
5.1 路由器DNS劫持
这个步骤需要你使用基于 OpenWrt 的路由器固件(如LEDE、梅林、老毛子,小米等),其他的开源路由器固件我不熟悉,只要支持修改Dnsmasq或hosts的都行。
因为市面上路由器型号各异,我不展开说了(我的路由器是梅林固件,出国留学插件里刚好有 Dnsmasq 的选项)。
请大家先问问度娘,找到家中路由器的 DNSmasq 或 Hosts 管理页面,添加加下面的内容。然后路由器会劫持你的 FC 域名,直接解析到群晖本地 IP。
如果修改Dnsmasq文件,这样填你的FC域名和群晖本地IP address=/fcnas.cf/192.168.2.33 如果修改hosts文件,这样填你的FC域名和群晖本地IP 192.168.2.33 fcnas.cf
5.2 群晖套件 DNS Server
如果你的路由器不支持修改 Dnsmasq 或 hosts ,建议换一个智能路由器,捡垃圾首选 K2P(开玩笑的~)
那么你可以去群晖「套件中心」下载「DNS Server」,也可以实现类似的效果。文章写到后面有点累了,偷懒贴一个网友的 DNS Server 设置教程吧。
我上次发布的效率集合导航站,就是利用这个办法搭建的,感兴趣的可以顺便看看。