完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代 您所在的位置:网站首页 优码网改域名了 完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代

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

2023-03-28 01:05| 来源: 网络整理| 查看: 265

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代 2021-07-20 17:51:22 376点赞 4591收藏 161评论

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

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

完美版外网访问家里NAS:桥接、IPv6、域名、SSL、Aliddns、ZeroTier、反代我家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来访问我的路由器,我就填写[email protected],用户名填写刚刚记录的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、反代



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有