群晖 NAS

家里的群晖 NAS 已经用了一年了,好话就不多说了,谁用谁知道。一年内成功安利了三位朋友买了群晖。(群晖是不是要给我点推广费?)

去年开始运营商网络挟持很猖狂,各种嵌入广告,国内互联网公司也都纷纷上了 HTTPS。

我一个个人 NAS 也不太可能被盯上,但是在这种网络情况下,只要有人针对你,那么挟持你的相关信息是分分钟的。

所以我也开始在自家的 NAS 上折腾 HTTPS 了。

除了这块的教程,我也顺便也把 NAS 如何暴露到公网相关的教程都写一下,包含了很多个部分:光线猫破解,光纤猫改桥接,端口转发设置,DDNS 设置,NAS 设置等。

暴露到公网后用起来就很方便了,再配合 HTTPS,基本不用担心安全问题了。

 

上海电信光纤猫破解和设置

破解

我家已经用上了上海电信 200M 宽带,那速度…

因为多次升级带宽,家里的光纤猫也换过好几个了,光纤猫也是越来越难破解了。

其实,在上海的话非常简单,直接给电信打电话,说要超级管理员密码改桥接,电信就会联系你区域的维修师傅,他们会把密码给你的。

你可以找他们上门帮你改桥接,也可以自动动手改,其实改起来也非常简单。

其他地区是怎么个情况我不是很了解,总之需要想办法获得光纤猫的超级管理员权限,这样才能把家里的 NAS 暴露到公网中。

 

光纤猫和路由器的设置

Modem

进入光纤猫后,连接名称里找到Internet,模式改成Bridge,然后选一个端口。

我这里选了端口2,然后把光纤猫的端口2和路由器的 WAN 口相连,在路由器中设置宽带账号密码即可。

如果你没有账号密码,打电话找电信要。

 

路由器端口转发

光纤猫改桥接,并由路由器拨号后,你的路由器就已经成功暴露到公网了。但是为了安全起见,外网当然是无法访问任何内网机器的。

这时候就需要配置端口转发了。

为什么要用端口转发而不用 DMZ 主机呢?因为用 DMZ 主机的话,相当于把整个 NAS 暴露到了公网,而你局域网内的其他机器就没什么机会出头了。

所以用端口转发的话就会更灵活一点,不同的端口给不同的机器。例如群晖 NAS 常用的端口是 5000, 5001, 80, 443 等,然后家里的 PS4 常用端口是 1935, 3478-3480。

然后如果局域网内还有机器在下 BT,它还可以利用 UPnP 协议向路由器申请临时的端口转发,非常灵活。

 

端口转发在不同的路由器中配置方法不太一样,但非常简单,我这里就简单地截个图。另外,需要用端口转发的目标机器最好固定一下 IP,不要使用 DHCP,否则 IP 变了转发就失效了。

Port

 

DDNS

上面的步骤全部搞定后,网络就已经打通了。但是家里的宽带出口 IP 每次都会变,那解决方案当然也是有的,配置一个 DDNS 就行了。

DDNS 主要是在路由器中配置,家里的华硕路由器有免费的 DDNS 功能,最终会给你分配一个域名。另外国内的花生壳也可以有一个免费的 DDNS 域名,国内卖的路由器基本都支持花生壳。

有了一个免费的 DDNS 域名后,再到自己的域名中配置一个 CNAME 就可以了。

DDNS

大致的原理就是,路由器每次获得一个新的公网 IP 后,都会向 DDNS 服务供应商注册,然后 DDNS 供应商的免费域名就会指向这个 IP 了。你可以直接用这个域名,但是一般都很丑,所以我更喜欢用自己的域名,做一下 CNAME。

 

免费 SSL 证书

免费 SSL 证书有这几种方案:

  • 自签发
  • Let’s Encrypt 免费证书
  • WoSign 免费证书

 

自签发

Self

群晖的 NAS 做自签发很简单,界面点点就行了,然后下载根证书,需要用的地方安装一下根证书即可。

但这样毕竟麻烦啊,特别是很多 Android 系统,支持的不好。

 

Let’s Encrypt 免费证书

Let’s Encrypt 是最近很火的开源免费证书供应商,现在还在 Beta,它最大的问题是,每次只能签3个月,3个月后就要续签。

但是群晖在最新版本的系统中竟然整合了 Let’s Encrypt,同样也是界面点点就可以申请了!

Let's Encrypt

但是悲剧的是,在证书签发过程中,Let’s Encrypt 服务器需要访问你机器的80端口来验证你对这个域名的拥有权,而电信是封家庭用户的80端口的!

就算你做了端口映射,80端口也是无法在外网正常访问的,最终导致证书签署失败。

所以如果你不是电信而是别的运营商,可以试试可不可以用。

 

WoSign 免费证书

最后,找到了国内的 WoSign 免费证书,一次可以签署2年,算很厚道了。

国内的机构干过几次伪造证书的恶心事,所以大家普遍对国内的机构不信任,但对我一个个人用户来说,WoSign 来伪造我证书的可能性非常低。

而且安全不是一件绝对的事情,我只要让我的 NAS 变得更安全了,就行了。

WoSign 免费证书申请非常简单,几十分钟就搞定了。然后下载证书和密钥,解压其中的 Nginx 版本,导入群晖即可。

Import

 

群晖 NAS 设置

最后到 NAS 中开启 HTTPS 即可,非常简单。

最终效果如下:

Website

 

重温 HTTP 协议

全套搞定后,让我们重温一下 HTTP 协议吧!(很多细节就不展开了,只说和上述配置相关的)

  1. 浏览器输入 NAS 域名,我的是 my.dozer.cc
  2. 我的域名在 Godaddy 买的,然后解析服务交给了 DNSPod ,浏览器查询到后询问 DNSPod 具体 IP 是多少
  3. DNSPod 告诉浏览器,我这个域名其实是 xxxx.free.ddns.com ,你去问它吧
  4. 浏览器再次找到 DDNS 供应商的域名解析服务器,最后得到了我家的公网 IP
  5. 浏览器要开始发起TCP连接了,第一个SYN包来到了我家的路由器中,目标端口是443
  6. 路由器根据端口映射发现,这个包应该发送个局域网中的10.0.0.11机器
  7. 最后,我的 NAS 收到了这个包,三次握手后,成功地建立了TCP连接
  8. 连接建立成功后,浏览器随机生成了一串数作为后续对话密钥,利用 WoSign 公钥进行加密后发给 NAS
  9. NAS 收到后用自己的私钥解密,得到对话密钥
  10. 双方开始和平友好地交流

本作品由 Dozer 创作,采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。