〇、前言
我原本是5月底发这篇文章的,但是因为马上要搬家了,一拖再拖就到了现在。原文是基于长城/移动宽带写的,搬家后我换成了联通宽带。虽然我已经脱坑了,但决定把之前的折腾经历分享出来,希望能帮到有需要的朋友。
前段时间「矿难」,我跟着某个 QQ 群里的老司机们上了「蜗牛星际」的车,以300元不到的低成本也体验了一下早有耳闻的 NAS,确实是个好东西啊。装黑群晖的过程我就不再赘述,网上很多教程,挺简单的。
然而在使用黑群晖的过程中,我和大部分人都碰到了一个难题:「如何通过外网访问家中的黑群晖?」
关于官方的 QuickConnect(简称QC),二级域名不够个性化,听说速度也不是很稳定,而且咱用着黑群晖,群晖老板都睁一只眼闭一只眼了,如果还去蹭群晖的 QC 资源,不合适吧?
如果想解决这些麻烦,常见的有以下办法:
我在搬家前是合租,最开始图便宜瞎选的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 的原理其实很简单,只是我觉得以前看的教程都不够简洁,于是自己动手写了。下面我就说说下实现的步骤,如果只需要外网访问,直接看下文的「内网穿透」部分即可。
二、注册域名
不过也有很多老司机不推荐免费域名,问题多多(比如域名使用不当,有可能被收回),请自行考虑后决定。
简单过一下注册流程:
国内的腾讯云和阿里云也有很多低价域名可购买,最便宜的才1元/第一年。因为我没买就跳过了,需要的自己下单,需要教程问度娘。
三、内网穿透
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
frp 由 frps 服务端和 frpc 客户端组成,版本要一致,需配合使用。
网上有许多互联网分享精神的站长共享了自己搭建的 frp 服务器,其实这个玩意挺小众的,服务器利用率不算高,速度基本够用。
我从搜索引擎找到了一些可用的 frp 公共服务器,不保证长期有效,自己 ping 一下找个速度快的。
选择公共服务器要留意 frps 版本,待会儿你在群晖 Docker 里安装的 frpc 版本要一致,否则出现谜之 bug 后果自负。
如果你担心隐私问题或者有云服务器想自己折腾,可以在一台有固定公网 IP 的 VPS 上搭建 frps 服务端,GitHub 有官方教程。你也可以使用这个一键安装脚本。
打开群晖 DSM ,在「套件中心」里搜索并安装「Docker」,然后在 Docker 「注册表」里搜索并下载 frpc(frp客户端)。
- frpc 客户端版本与 frps 服务端版本保持一致
- 我示例选的是 leonismoe/frpc 的 v0.26 版本镜像,更新比较及时
下载完映像后,不急着启动,咱们要先准备 frpc.ini 配置文件。
下面分享我原创的、可能是全网最容易看懂的 frpc 配置图示:
- 白色部分直接复制
- 蓝色部分按需修改
- 绿色部分备注说明
- 灰色部分自备域名
准备好配置文件,我们可以来尝试启动 frpc 客户端了。
在「Docker」的「映像」里选择刚才下载的文件「启动」创建容器,「常规设置」默认即可,点击左下角「高级设置」。
首先「高级选项」默认选项卡勾选「启用自动重新启动」,然后在「卷」选项卡,用刚才上传 frpc.ini 配置文件替换默认的/etc/frpc.ini文件 。
在「网络」选项卡勾选「使用与Docker Host相同的网络」,最后点击「应用」,继续下一步完成启动。
如果你设置了公共服务器的 subdomain(二级域名),可以打开类似http://fc.frp1.chuantou.org的网址测试连接。若出现谜之bug,请查看日志然后去问度娘。如果你要绑定使用自己的 FC 域名,请继续下一步操作。
之后想修改 frpc 配置文件,可以直接打开群晖IP:7400进入管理后台。
四、域名解析
接着我们来说说如何绑定自己的 FC 域名,打造自己独一无二的 FastConnect。
本文以腾讯云 DNS 域名解析为例(DNSPod 现在属于腾讯云了),加上腾讯云支持自家的微信小程序,比较方便。
如果你是在阿里云购买的域名,可以直接使用阿里云解析,过程大同小异,有问题找度娘。
- 选择你在腾讯云购买的域名或添加免费域名(注册的时候咱已经关联了 DNSPod)
- 记录类型:公共服务器选「CNAME」,自建服务器选「A」记录
- 主机记录:填写「@」直接解析和「*」泛解析
- 记录值:填写 frps 服务器地址
登录群晖 DSM,在「控制面板」-「Synology 应用程序门户」-「应用程序」里可以分别设置你需要单独访问应用门户别名和登录样式等。
我直接设置了默认的几个别名,然后群晖会自动识别你的 FC 域名并关联别名,例如浏览器打开fcnas.cf/drive,这样就省去了修改 frpc 配置文件的麻烦,一步到位。
偷偷晒下壁纸哈~
- 如果遇上谜之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 的最后一步,搞定内外网切换功能。
这个步骤需要你使用基于 OpenWrt 的路由器固件(如 LEDE、梅林、老毛子,小米等),其他的开源路由器固件我不熟悉,只要支持修改 Dnsmasq 或 hosts 的都行。
因为市面上路由器型号各异,我不展开说了(我的路由器是梅林固件,出国留学插件里刚好有 Dnsmasq 的选项)。
请大家先问问度娘,找到家中路由器的 DNSmasq 或 Hosts 管理页面,添加加下面的内容。然后路由器会劫持你的 FC 域名,直接解析到群晖本地 IP。
如果你的路由器不支持修改 Dnsmasq 或 hosts ,建议换一个智能路由器,捡垃圾首选 K2P(开玩笑的~)
那么你可以去群晖「套件中心」下载「DNS Server」,也可以实现类似的效果。文章写到后面有点累了,偷懒贴一个网友的 DNS Server 设置教程吧。
至此,一个专属于你的 FastConnect 方案就算圆满成功了,祝大家玩机愉快~
我上次发布的效率集合导航站,就是利用这个办法搭建的,感兴趣的可以顺便看看。
如果觉得本文对你有帮助,欢迎「➕关注➕点赞➕收藏」鼓励一下我。
最后是惯例的 GIF 彩蛋环节,我们下次见~
原文链接:https://www.zhihu.com/tardis/bd/art/73482384