群晖可以这么玩 - 我不想记端口

2024-01-11 14:17:06 46点赞 401收藏 45评论

太长不看先总结

使用条件:

  • 家宽有公网IP(IPV6也可)

  • 有个可以修改NS服务器的域名,因为需要将域名托管到Cloudflare。

优劣分析:

  • 实现的方法是Cloudflare设置Origin规则,配合群晖的反向代理功能。

  • 起docker时无须指定端口,再也不用担心启动时端口冲突了

  • 路由器只需映射一个端口,不需要80或443。

  • 防火墙设置只允许Cloudflare源地址,减小暴露面增强安全性。

  • Cloudflare自动会生成ssl证书,同时解决了https的证书问题。

  • 使用子域名记忆服务,访问默认443端口,不用记忆端口号。

  • 唯一的缺点可能就是对访问速度稍有影响,不在外面看视频的我也没什么影响。当然你也可以优选IP。

原有方式

因为众说周知的原因,当使用公网访问家宽的NAS服务时在没有特殊处理的情况下是需要带上服务的端口号的。并且为了使用上的方便有些服务是要开到公网上的,比如Bitwarden,TTRss。虽然可以通过访问不同的端口去区分这些服务,但是服务开多了难免记不住,始终没有域名记忆来的方便。

常见的处理方式是将内网的NAS服务使用frp服务穿透到拥有公网IP的服务器,然后将域名绑定到对应的公网IP上。既可以解决部分家宽用户没有公网IP的问题,也可以解决需要使用非默认端口访问服务的问题。缺点就是需要一台拥有公网IP的服务器会产生额外的服务器租用费用。因为中间增加了一台服务器,所以上下行的链路也会受服务器链路速度的影响。

为啥还要用新方式呢。因为我的服务器在海外,为了安全还套了Cloudflare,相当于套了两层减速。

申请域名 - 教程太多不详细介绍

首先,当然你需要有一个域名,没有的话就申请一个。唯一需要注意的是要能修改NS服务器地址,这样才能把域名正常托管到Cloudflare。不想麻烦的话建议你可以买一个,本身域名也不是很贵,能用钱解决的问题就不要太浪费自己的实际。网上教程太多这里就不详细介绍了

托管域名 - 已托管的可跳过

有了域名之后注册一个Cloudflare账号,登录后点击添加站点,根据向导提示完成域名的托管。大致操作步骤如下:

  • 登录你的 Cloudflare 账号,点击 "添加站点" 按钮。

群晖可以这么玩 - 我不想记端口
  • 然后输入你的域名,点击 "添加站点" 按钮。

群晖可以这么玩 - 我不想记端口
  • 选择免费套餐,点击 "继续" 按钮。

群晖可以这么玩 - 我不想记端口
  • Cloudflare 会自动扫描你的 DNS 记录,并自动导入到 Cloudflare 的配置中。扫描完成后点击 "继续" 按钮。

群晖可以这么玩 - 我不想记端口
  • 回到你的域名注册商,修改域名的 NS 服务器为 Cloudflare 的 NS 服务器。

群晖可以这么玩 - 我不想记端口
  • 回到 Cloudflare ,点击 "检查名称服务器" ,激活你的网站。

群晖可以这么玩 - 我不想记端口

创建令牌 - 已生成的可跳过,用于DDNS

接下来需要准备Cloudflare的token用于更新域名的解析,Cloudflare 页面点击右上角 我的个人资料——API 令牌(或直接访问 https://dash.cloudflare.com/profile/api-tokens),开始申请

  • 点击创建令牌

群晖可以这么玩 - 我不想记端口
  • 选择API令牌模板中的编辑区域DNS模板

群晖可以这么玩 - 我不想记端口
  • 填写令牌名称,选择域名后点击继续

群晖可以这么玩 - 我不想记端口
  • 点击创建令牌

群晖可以这么玩 - 我不想记端口
  • 保存令牌

群晖可以这么玩 - 我不想记端口

动态域名解析

这里需要将你域名解析到家宽的公网地址上,因为家宽的公网地址会动态变化,因此叫做动态域名。推荐使用ddns-go,图形化界面,操作简单方便。

安装就不详细介绍了,可以使用docker安装,也可以使用第三方套件进行安装。安装完成后打开管理页面,选择Cloudflare,填写之前记录的token,勾选启用IPv4,在Domains中填写需要解析的域名,保存即可。如果需要使用IPv6,勾选启用IPv6,同样填写需要解析的域名保存。点击右上角日志可以查看日志。如果是docker方式启动的话,网络需要选择host,否则无法获取到IPv6地址。

群晖可以这么玩 - 我不想记端口

设置Origin规则 - 重点,这里去除端口号

完成上述步骤后应该就可以用域名+端口的方式访问你的NAS了,下面重点来了。因为要使用Cloudflare的规则,所以在解析记录里面需要把代理状态打开

  • 编辑添加的解析记录,把代理状态打开,即是 已代理,云朵图标为点亮状态,然后保存

群晖可以这么玩 - 我不想记端口
  • 进入所需修改域名【规则】-> 【Origin Rules】,创建规则。规则名称任意,选择自定义筛选表达式。字段选择主机名,运算符等于,值填写你nas的域名。目标端口填写nas的端口号,保存

群晖可以这么玩 - 我不想记端口
  • 规则创建完成后点击左侧菜单的SSL/TLS -> 概述,如果你的NAS已经开启了https,那么这里加密模式可以选择完全,如果你的NAS仅开启了http,那么你需要选择灵活。因为我后端是https的,这里设置了完全,http方式我并没有进行测试。如果设置完访问时有问题,可以调整一下SSL/TLS 加密模式。

  • 设置完成后正常情况下你就可以直接通过域名访问你的NAS了,如下图所示。当然,这只是示范,并不是很建议直接将NAS的登录页不加端口号挂出来。这将大大提高受攻击的风险。

群晖可以这么玩 - 我不想记端口
  • Cloudflare会自动申请SSL边缘证书,访问时直接使用https即可。


设置反向代理规则 - 重点,非群晖用户可以跳过

本来文章到这里就结束了,但是下面还有个重点。就是如何利用好群晖的反向代理功能。

正常情况下,你可以在控制面板->登陆门户->高级->反向代理服务器中找到这个功能。其界面如下图所示:

群晖可以这么玩 - 我不想记端口

下面我来说说有几个大家可能不知道的设置:

  1. 设置反向代理时来源的端口是可以复用的。一般的情况下来源这里我们会设置相同的主机名和不同的端口来区分我们的应用。知道了端口可以复用的情况下我们完全可以通过不同的域名相同的端口来区分应用,也就是说我们完全可以填写两条规则,a.test.com和b.test.com都使用端口5000端口。这样我们所有的应用都可以通过同一个端口出去,也就是说路由器上只需要配置一条端口映射规则即可,这样一是可以减少路由器上的相关配置工作,二是减少了暴露在公网的端口降低安全风险。

  2. 目的地的主机名这里我们除了可以填写nas自己的地址外,也可以填写docker容器的地址。对于开放到公网的服务,我们可以使用docker-compose在启动时指定容器的IP地址,而不映射任何端口。这样的好处是不需要占用群晖的端口号,我们完全不需要担心启动时的端口占用问题。当我们需要使用该服务时可以在反向代理的目的地主机名处填写docker容器的地址,端口处直接填写应用在docker容器内的端口。

  3. 为了提高安全性,可以在设置反向代理时设置访问控制配置文件。在使用Cloudflare托管域名后可以设置域名只允许Cloudflare的服务器ip访问,这也将提高系统的安全性。相关的服务器ip列表在这里

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
45评论

  • 精彩
  • 最新
  • 亲测,这样设置还不如部署cloudflare的“Zero Trust”来得快(网速和实施时间上),而且还不用因为穿透的端口变了还得自己登录维护。“Zero Trust”自动维护穿透的端口

    校验提示文案

    提交
  • 绕一圈cloudflare原来只是为了不用加端口号

    校验提示文案

    提交
    是的,为了输入偷下懒 [得意]

    校验提示文案

    提交
    lucky大吉里面也可以反带,端口号统一5000,ssl证书还能自动续签。就是没有隧道,不过我有nps

    校验提示文案

    提交
    收起所有回复
  • 完全没必要的东西,不想记端口号,搞个导航页不就可以了。饶了一圈少记端口号,但要多记域名前缀。

    校验提示文案

    提交
    每个人习惯不一样,给大家提供个思路

    校验提示文案

    提交
    你说的对,这几天我一直在捣鼓,反带同一端口和双域名去端口,是我着相了

    校验提示文案

    提交
    收起所有回复
  • 大佬我想问下
    我的域名是直接托管在cf上的,
    ip指向我的nas(unraid)可以通过域名正常访问nas
    但nas 域名 加端口号(docker服务)就无法访问,该如何解决
    现在用的是大吉lucky 之前用ddns go也是这个问题

    校验提示文案

    提交
    首先直接用局域网地址加端口访问,有问题的话应该是docker端口映射的问题或者反向代理的问题,没问题的话那大概就是路由器端口映射的问题

    校验提示文案

    提交
    谢谢大佬回复,但问题还是不知道怎么解决
    我有用另一个域名作解析dynv6的dns用的也是他自己的,没用cf,也没用https,在外网带端口打开就没问题
    我不清楚是不是docker的问题,但应该不是路由器的问题,换了个域名,还是一样的端口,他就能访问
    我怀疑可能是cf的问题? 要么就是https的问题

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 对于上海电信这种严查家用网络对外提供网络服务的就很有用了吧?

    校验提示文案

    提交
    这么一说好像是哦,你没暴露端口到自己ip上,域名解析出来也不是你的ip,没证据啊

    校验提示文案

    提交
    不对,我记错了,这种应该用cloudflare tunnel,文章里的方法还是会暴露端口

    校验提示文案

    提交
    收起所有回复
  • 只有v6绕一圈能否在v4下访问?

    校验提示文案

    提交
    开启代理状态就可以

    校验提示文案

    提交
    收起所有回复
  • 没有用,直接加端口国内直连,快如闪电,何必把访问搞得那么卡

    校验提示文案

    提交
  • 域名解析设置为CMNAME解析,群晖设置反向代理,照样能实现通过子域名+同一个端口号访问内网不同端口的服务

    校验提示文案

    提交
  • 我就问下怎么搞成https,

    校验提示文案

    提交
    ssl反带,搜这个关键词

    校验提示文案

    提交
    需要ssl证书,反向代理

    校验提示文案

    提交
    收起所有回复
  • Qc不就可以直接连接吗?

    校验提示文案

    提交
    速度不一样

    校验提示文案

    提交
    收起所有回复
  • 其实我有个办法啊,抛砖引玉一下。以我自己的服务为例,我部署了bitwarden 和 wallabag,ddns 和反向代理,我都是通过lucky 这个容器实现的。lucky 上面可以自动申请和续费 ssl 证书,那么你只需要申请个*.域名 的证书。然后关键一步来啦,在 lucky 里面设置反向代理的时候,可用二级域名➕一个端口号不同的服务。举例说明,假如我的域名是 a.com ,那么我在lucky 里面可以设计成b.a.com:1 来访问我的 bitwarden 服务,然后用 w.a.com:1来访问我的 wallabag 服务。同理,如果你部署了easy image 容器做图床,你完全可以设置成 e.a.com:1 来访问图床这个容器。发现没有,自始至终,你需要记的端口号也就一个 1,以及与应用程序相对应的子域名(可以像我一样用容器的首字母或者简称),这样也不麻烦。

    校验提示文案

    提交
    这样来说就是lucky其实就是为了方便登录是吧,速度上与自带的ddns效果也是一样把,不是QC,是的话可以完善下,服务多了端口号都记不住。

    校验提示文案

    提交
    对的,他其实就是一个融合了DDNS以及engines proxy manager

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 有空试试看,刚好cloud好像限制端口啊

    校验提示文案

    提交
  • 跑国外绕一圈.呵呵

    校验提示文案

    提交
  • 我同学的联通宽带虽然只有IPv6,但居然不限制443端口,羡慕至极

    校验提示文案

    提交
    看到ip我懂了

    校验提示文案

    提交
    啥??你懂了,我没懂

    校验提示文案

    提交
    收起所有回复
  • 用统一域名加端口 这种方式 https 证书 部署非常方便

    校验提示文案

    提交
    是的,就是有点不美观

    校验提示文案

    提交
    收起所有回复
  • 如果家里有公网ipv6,单位却只支持ipv4,走cf就能访问了…还是有点用的

    校验提示文案

    提交
  • https在群晖文件分享的时候打开空白,又重回了http,直接dnspod做动态域名解析直连

    校验提示文案

    提交
  • 阿里云99元/年的云主机3Mbps的速度,可以考虑下。cloudflare 的隧道太慢了。

    校验提示文案

    提交
  • 我的不行呢。最后提示Host

     Error

    校验提示文案

    提交
  • traefik 也很好用

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
401
扫一下,分享更方便,购买更轻松