完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

2021-07-20 17:51:22 109点赞 1528收藏 61评论

创作立场声明:投#我家NAS装了啥#的稿,准备把那篇里面有意思的都好好写一写,治治自己懒的毛病。欢迎收藏、点赞、关注、打赏,以后还有一系列的文章。对了本篇有点长,可以先收藏再观看,阅读预计需10分钟以上。0准备,然后亲自动手抄作业预计需要半天以上时间。

【写作说明】:前几天投稿了我家NAS装了啥,原文在这里

我家NAS装了啥?可多了创作立场声明:作为一个懒人,本人立场坚定的想一直懒下去,只是看着奖品口水止不住的流,所以也来凑个热闹。追加修改(2021-07-1912:21:44):漏了一个默默无闻的Docker镜像:containrrr/watchtower它能将我们所有的latest版本的镜像和容器都自动更新到最新版本,不用frLab| 200 评论178 收藏2k查看详情

欢迎过去点赞、评论、收藏。那一篇其实只能算是个目录,当时心里就在想,关注度比较高的话,接下来就把内容拿出来单独写一写,这就是开篇,先做好网络环境接下来才有的玩。

先说说头图的问题,这是我家现在的网络结构,只画重点,其它已经省略。该网络结构并不完美,应将AP2连接到Switch2,让Switch2直接接入Switch1,无奈Mesh有线回程会在Switch2上产生环路,各种办法都没有解决,包括联系了交换机厂商和AP厂商,就只能先这样把AP2既当AP又当个交换机用着,有大佬能解决的请一定联系下我完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

前置条件

1、移动宽带,若你的宽带为电信或联通,它们都可以申请到公网IPv4地址,不需要这么复杂,可以参见站内阿文菌的文章。

2、主路由为OpenWrt系统,若你的路由器为其它系统,可以参考思路。

3、域名,可以使用免费的二级域名、也可以购买一级域名,它真的香。

光猫桥接调整

光猫桥接部分本想写到前置条件,因为大部分同学家的光猫型号可能是千差万别,确实没什么好写的内容。简单说一下两种方式,第一种是在新装宽带时要求安装人员进行设置。第二种自行修改,在光猫背面找到自己家猫的型号,然后用型号加上桥接两个字上百度进行搜索就能找到啦,要是实在找不到,可以留言咨询哦,还可以万能的淘宝完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

另外改桥接之前一定要记下自己的宽带账号(光猫改桥接的时候在光猫后台能找到),密码一般是手机号后6位,可以打电话给移动客服进行验证,没问题后再调整,完成后登陆路由器(OpenWrt)的管理页面在左边,网络->接口找到WAN点击修改,将协议选择为PPPoE,点击切换协议,然后填入用户名和密码就OK了。

OpenWrt的IPv6设置(其它路由系统的话需要自己想办法哦)

OpenWrt本身就是支持IPv6的,所以光猫改桥接后只需要进行简单的设置就能看到IPv6已经OK了

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

下面说说怎么设置,登陆OpenWrt后台:

1、修改全局网络选项:在左边网络->接口找到全局网络选项,清除”IPv6 ULA 前缀“中的内容后点击保存&应用,如下图:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

2、修改WAN接口配置:网络->接口找到WAN点击修改,在高级设置里面取消“使用内置的IPv6管理”的勾选,如下图

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

3、修改LAN接口配置:网络->接口找到LAN点击修改,同样高级设置里面取消”使用内置的IPv6管理“的勾选,如下图

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

然后往下滑动,在IPv6设置中,照下图进行选择:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

4、DHCP/DNS设置,网络->DHCP/DNS在高级设置中取消”禁止解析 IPv6 DNS 记录“的勾选,如下图:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

5、最后一步设置防火墙,在网络->防火墙的基本设置页面,照着下图进行设置即可(如果图片看不清楚,需要选择的地方全部都是选择接受就对了)。这里可能有点安全性的问题,有兴趣的同学可以自己去写防火墙规则。

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

按照以上步骤设置后IPv6环境就OK了,如果没有OK,请检查每一步是否都点击了保存&应用,然后可以重启路由器一试,也可以留言和百度哦。

验证IPv6环境是否正常,除了网络属性外,也可以打开test-ipv6.com 进行测试,这里就不再截图说明,很容易看懂。

科普时间

现在对IPv4和IPv6做一些简单的说明,便于大家理解。一般来说在家庭网络IPv4环境中,只有路由器能获得到公网地址,外网设备想要访问到内部服务,都需要通过端口转发来进行。举个例子就是打某个公司前台电话,由前台帮你转接到你想找的部门的分机。而IPv6环境下,局域网中每一台设备都有独立的公网地址。同样的例子,现在找这个公司的某个部门,不用再拨前台转分机,因为他们公布了每个部门的独立号码,可以直接拨打。

基于以上情况,如果你之前是使用IPv4环境,通过端口转发访问内网,需要切换到IPv6环境,那么一定要理解上面那段话,因为在IPv6中不再有端口转发这事儿了。

域名与路由器的DDNS

虽然有了IPv6环境,同样有IPv6环境的外网已经可以用过每台设备的IPv6地址访问到它,但是没人这样干,第一:地址很长记不住,第二:它是动态的,过段时间就变了,所以需要用到域名和DDNS(动态域名解析)。

域名就是我们平时浏览器打开baidu.com,这个就是域名,他对应了一个ip地址,当我们访问baidu.com的时候,我们的电脑(或者手机)会先去DNS服务器查询这个域名对应的ip地址,然后去请求ip地址并拿到返回的数据再渲染显示在浏览器中。这里只是个简单的说明,有兴趣的同学可以通过百度进行详细的了解。

现在我们知道域名和ip地址是有对应关系的,通过域名就能找到并访问ip,那么我们只需要在ip变了的时候将新的ip重新和域名进行绑定即可,完成这个功能的就叫DDNS。

下面回到正题:

如果你没有域名,个人建议在阿里云购买一个(wanwang.aliyun.com),如果已经有域名又不是在阿里云购买的,建议添加到阿里云进行管理(因为我们后面的DDNS是用的阿里的。在登陆阿里云控制台->云解析DNS中添加域名,然后DNS服务器状态会显示运行异常,鼠标指向它,点击查看帮助,照着登陆原域名管理后台设置下就好了)

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

以下所有的内容都假设使用的域名是xxxxx.com(你的域名是什么后面内容里把xxxxx.com都替换成自己的就行),并且要不就在阿里云上买的,要不就已经添加到阿里云进行管理了(如果过程中还有疑问,可以留言,也可以多多百度)

我们还需要在阿里云的控制台找到AccessKey,登陆阿里云,鼠标指向自动的头像,选择AccessKey 管理

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

在打开的页面中点击创建AccessKey

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

创建好后,我们记下AccessKey ID和Secret,也可以一会儿再来复制。

回到路由器OpenWrt后台,在服务->动态DNS中随便命个名,点击添加:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

在基本设置中选择IP地址版本为“IPv6地址”,DDNS服务提供商[IPv6]为“aliyun.com”,上面的查询主机名填入:xxxxx.com,下面的域名是用来访问路由器的域名,比如我想通过http://router.xxxxx.com来访问我的路由器,我就填写router@xxxxx.com,用户名填写刚刚记录的AccessKey ID,密码填写它对应的Secret。

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

接下来在高级设置中按下图进行设置:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

设置完成后,再次点击左边的动态DNS,看看是否已经启用和运行,没有的话勾选下,点下启动,正常运行后是这个样子:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

到这里我们还需要最后一步设置就能外网访问到路由器了,就是设置监听接口,因为80端口和443端口一般情况下已被运营商封锁,我们需要在uHTTPd(如果您路由器中没有uHTTPd,可以在系统->软件包中进行安装,也可以ssh到路由器后修改配置文件,这里就不展开了,可以自行百度或留言咨询)中进行设置,参考下图:

这里需要说明下,这里是两个监听器,一个http一个https,照着上图设置,既能在内网用路由器的IPv4地址(如:192.168.1.1)访问路由器又能外网通过router.xxxxx.com:90或者router.xxxxx.com:100访问到路由器,看您是用http还是https。这里需要说明下,这里是两个监听器,一个http一个https,照着上图设置,既能在内网用路由器的IPv4地址(如:192.168.1.1)访问路由器又能外网通过router.xxxxx.com:90或者router.xxxxx.com:100访问到路由器,看您是用http还是https。

到这里路由器就已经可以外网访问了,细心的同学可能看到了我部署了证书,所以我用的是https,在外网IPv6环境下,通过:https://router.xxxxx.com:100进行访问,如果没上传证书前不要勾选“将所有 HTTP 重定向到 HTTPS”,用http://router.xxxxx.com:90访问,避免提示不安全的链接。

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

插一句(SSL证书)

本来准备把证书申请的内容加到前面购买域名部分,但是登陆控制台一看已经申请好了没办法截过程图,就在这里几句话说清楚吧。

在阿里云控制台里面找到:SSL证书(应用安全)点击进入,在左侧菜单找到SSL证书,点击免费证书,然后点击立即购买。

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

按照提示0元购买可以创建20个证书的资源包后,回到此页,点击创建证书,列表就会出现一个待申请的证书,点击后面的立即申请按钮,按提示进行申请即可。

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

申请成功后稍等几分钟就能通过,然后可以在同一个页面上下载我们需要的证书文件,下载后在路由器uHTTPd页面上传,然后“勾选上将所有 HTTP 重定向到 HTTPS”,这样访问到http端口也会自动重定向到https的端口。

证书的申请需要注意下,免费的证书是不能申请通配符证书的,也就是说我们申请了router.xxxxx.com这个域名的证书用在路由器上,群晖不管你用什么域名也是需要单独申请的,阿里云的免费包最多可以申请20个,所以不用担心不够用。

证书下载时很多同学会发现服务器类型有很多,不知道下哪一个,路由器用的下载服务器类型是apache的就行。遇到别的不知道下什么的,都下载来试试就试出来了,也可以百度下,不用担心,不会试坏的。好了,证书的问题就说到这里,回归主题。

NAS部署IPv6的DDNS

前面我们说到,IPv6的环境下是没有端口转发这件事的,所以路由器的DDNS只能解决域名和路由器IPv6地址的绑定关系。NAS有独立的IPv6地址,它也需要单独部署DDNS来完成这件事。台式机如果需要直接使用系统自带的远程连接,也可以设置独立的DDNS,这里也不展开。

在这里我使用的是python脚本(放在了GitHub上:github.com),主要有两个文件:aliddns.py(DDNS主文件)、check_gateway.sh (IPv6网关检查脚本,我的群晖IPv6网关会偶发性丢失,一直没找到问题,只能用脚本检测到丢失后刷新下),将这两个脚本(如果不需要网关检查,可以不下载sh后缀的文件,但py文件也需要相应的修改哈,不然要报错)下载到群晖的home目录,其它目录也行,后面设置定时任务时跟着修改就好。

然后打开群晖控制面板->任务计划->新增->计划的任务->用户定义的脚本,然后照下发的截图进行设置:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

注意:最后一张截图的路径和域名一定要改成自己的哦。设置好点击确定后,可以选择任务点击运行,如果没报错基本就OK了,也可以登陆阿里云后台查看是否生成了解析的记录。

如果此时您的群晖没有部署证书,那么强烈建议你参考前面内容进行证书的申请,然后在群晖控制面板->安全性->证书页面将您针对群晖所用域名申请到的证书部署上去(证书下载是选择服务器类型是其它的即可)。就可以通过https://xxxxx.com:5001访问到群晖的管理页面了。

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

至此,IPv6的外网访问就全部设置完毕,网速跑满杠杠的。

IPv4环境怎么办?内网穿透,让IPv4环境获得和IPv6环境同样的体验!

很多同学会遇到和我一样的问题,在公司怎么办,一般情况下公司的网络是没有IPv6环境的,我们可以PC连手机热点暂时用用,但始终不方便,这时候就需要借助内网穿透来实现访问了。用到的工具是zerotier(也有很多别的工具,大家可以自由发挥,这里只是抛砖引玉),官网在这里:zerotier.com

首先打开my.zerotier.com,点击Register进行账号的注册。注册完成后打开:my.zerotier.com ,点击Create Network创建一个新的网络,记下NETWORK ID,页面暂时不要关闭,后面还要用。我已经创建好了如下图:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

有了ID以后我们让路由器加入这个网络(群晖也行,我的路由器上带有ZeroTier,所以用路由器,如果你的路由器没有ZeroTier,又无法安装的话,在群晖上使用docker版本的ZeroTier也是可以的,具体可以百度下),在路由器管理页面,VPN->基本设置里面填入刚刚记下的Network ID,并勾上两个复选框,保存&应用。如下图:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

接下来回到ZeroTier后台点击我们刚刚创建的ID,往下拖动,可以看到列表里面已经有了一台设备,但是它还没有分配到ip地址,需要把它前面的复选框勾上表示同意它加入我们创建的网络。

继续如法炮制,在公司电脑上安装ZeroTier客户端,并且也加入到刚刚的这个Network ID,回到ZeroTier后台,电脑也应该进入后台了,同样勾选它前面的复选框。这样我们的网络里面就有两台设备了,如下图(我的比较多):

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

ZeroTier网络中的两台设备已经能够通过上图中10网段的地址进行相互访问了,比如我路由器在ZeroTier后台分配的是10.10.10.70的地址,在公司电脑就能通过https://10.10.10.70访问到路由器,有同学可能会有疑问,这里为什么不加端口,因为使用ZeroTier后,它们已经相当于在一个局域网中了,还记得前面路由器的监听器截图吗,我们https的监听器IPv4地址监听的是443端口,所以不需要加端口号进行访问。这里也是唯一一个修改了hosts文件后IPv6环境和IPv4环境需要区别的地方。

接下来还需要进行小小的调整,因为如果局域网内设备都通过ZeroTier分配的地址进行访问,那么所有的设备都需要加入到ZeroTier的网络,这很明显是有难度的,所以前面设置路由器的时候我们勾选了“自动允许客户端 NAT”,这样就能直接通过内网设备的IP地址来访问到他们,当然,NAS一定要设置个固定的IP哦。要实现这一点,还需要在ZeroTier后台的Advanced部分设置下路由,如下图:

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

Destination填写的是您家的网段,(Via)填写的是ZeroTier给你路由器分配的10段的地址。然后点击提交。

现在就能通过内网IP访问了,比如我在公司电脑能通过https://192.168.1.100:5001访问到家里的群晖。但是这样还是有一点不完美,使用https始终会提示不安全的链接,而且ip访问也不是我们的目的。

接下来就需要最后一步,修改公司电脑的hosts文件。它是用来干什么的呢?前面我们说到,在访问域名的时候,是先拿域名到DNS服务器查询它所对应的IP地址,然后再去访问IP地址。而hosts文件可以用来简化这个步骤,它相当于一份本地的IP与域名的绑定关系,计算机访问域名时优先打开它看一看,如果在它里面找到了域名对应的ip地址就以它记录的IP地址进行访问,如果没有,再去查询DNS服务器。所以我们需要做的就是把绑定关系写入到它里面。

在Windows系统中它在这个目录:C:WindowsSystem32driversetc,hosts文件用记事本就能打开,但一般情况下没有办法直接修改,可以先复制一份到桌面,修改完成后再复制回去。也可以百度下,因为我找了两台电脑都能直接改,没办法试验和截图。

确保能成功修改和保存hosts文件后,我们只需要在文件最后加入下面两行:

192.168.1.1 router.xxxxx.com

192.168.1.100 xxxxx.com

即可通过https://router.xxxxx.com访问路由器(为什么不加端口的原因前面已经介绍了),通过https://xxxxx.com:5001访问到群晖及使用不同端口访问到群晖中的服务,和使用原生IPv6环境没有任何区别(除了网速)。

至此,不管是IPv6环境还是IPv4环境,我们都能通过域名完美的访问到内网的所有服务。接下来会写一些好玩的服务,敬请期待。

反向代理

最后做个补充,群晖上部署的docker也好,其它服务也好,若需要外网访问都可以通过群晖的反向代理功能来处理。在群晖控制面板->登陆门户->高级->反向代理服务器设置中新增。

举个例子,群晖升级7.0后Docker的NodeRed无法通过IPv6直接访问了,这时只需要在反向代理服务器设置中点击新增:

然后按照下图设置

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

自定义标题中新增WebSocket,根据运行的是什么服务选择性添加,大部分服务不需要加这个自定义标题中新增WebSocket,根据运行的是什么服务选择性添加,大部分服务不需要加这个

即可通过https://xxxxx.com:1991访问到,甚至可以不用部署https使用群晖的即可。这里只是顺带提下就不展开了,咱们下次再见。

欢迎打赏、三连,有任何疑问欢迎评论和讨论。

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

展开 收起

群晖(Synology)DS418play双核心4盘位NAS

群晖(Synology)DS418play双核心4盘位NAS

3850元起

Synology 群晖 DS918+ 4盘位NAS(J3455、4GB)

Synology 群晖 DS918+ 4盘位NAS(J3455、4GB)

4680元起

Synology 群晖 DS218+ 2盘位NAS (RTD1296、2GB)

Synology 群晖 DS218+ 2盘位NAS (RTD1296、2GB)

3812.41元起

Synology 群晖 DS218play 2盘位NAS (RTD1296、1GB)

Synology 群晖 DS218play 2盘位NAS (RTD1296、1GB)

1920元起

Synology 群晖 DS218j 2盘位NAS(Armada 385 88F6820、512MB)

Synology 群晖 DS218j 2盘位NAS(Armada 385 88F6820、512MB)

907.91元起

Synology 群晖 DS418play 4盘位NAS(J3355、2GB)

Synology 群晖 DS418play 4盘位NAS(J3355、2GB)

3850元起

Synology 群晖 DS216play 2盘位NAS (STiH412、1GB)

Synology 群晖 DS216play 2盘位NAS (STiH412、1GB)

1553.9元起

Synology 群晖 DS216 2盘位NAS (88F6820、512MB)

Synology 群晖 DS216 2盘位NAS (88F6820、512MB)

1882.79元起

Synology 群晖 DS218 2盘位NAS (RTD1296、2GB)

Synology 群晖 DS218 2盘位NAS (RTD1296、2GB)

2180元起

Synology 群晖 DS220J 2盘位NAS (RTD1296、512MB)

Synology 群晖 DS220J 2盘位NAS (RTD1296、512MB)

1117.2元起

Synology 群晖 DS214 play 2盘位 NAS网络存储

Synology 群晖 DS214 play 2盘位 NAS网络存储

2499.93元起

Synology 群晖 DS119j 单盘位NAS 网络存储服务器

Synology 群晖 DS119j 单盘位NAS 网络存储服务器

799元起

Synology 群晖 DS1019+ NAS存储服务器 黑色

Synology 群晖 DS1019+ NAS存储服务器 黑色

5900元起

Synology 群晖 iosafe1019+ 5盘位防水防火NAS(J3455、4GB)

Synology 群晖 iosafe1019+ 5盘位防水防火NAS(J3455、4GB)

暂无报价

Synology 群晖 DS220+ 双盘位NAS (J4025、2GB)

Synology 群晖 DS220+ 双盘位NAS (J4025、2GB)

2047.63元起

群晖(Synology)DS218play四核心2盘位NAS

群晖(Synology)DS218play四核心2盘位NAS

1980元起
61评论

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

相关好价推荐
查看更多好价

相关文章推荐

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