type
status
date
slug
summary
tags
category
icon
password
网址
前言
在前面我们设置了一个已经成功搭建了一个nas系统,并且在其他设备上成功访问了nas。但是目前也就只能在同一个局域网中才能访问。还得用其他其他手段才能在外部网络中连接上家里的nas设备。如果还没有搭建nas系统,可以参考这篇文章
现在,让我们解决如何随地访问的问题。
我们在局域网访问nas,是通过在相关软件(比如浏览器和资源管理器)输入nas的ip地址和端口来访问,那么在同理在外地访问也是用同一套方案,在互联网上连接到我们家里面nas设备的ip地址即可。所以,解决思路是通过各种手段来在互联网来访问我们nas的ip地址。
可以在互联网直接访问到的ip我们称为——公网IP,公网ip现在也分两种:ipv4和ipv6。在我国,由于分配到的公网ipv4数量稀少,因此绝大部分人都没有公网ipv4(不同地区不同情况,据说在香港公网ipv4几乎是多到用不完,可恶);公网ipv6虽然数量很多且现在家庭宽带几乎都有,可以做到每台设备一个,但是还没有完全普及,而且给的公网ipv6基本都是动态会变动的那种;并且ipv4和ipv6又互不相通的,因此我们远程在互联网访问就分化出以下三个方案:
- DDNS转发公网ip
- 内网穿透
- 中继转发
DDNS转发公网ip
域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 DDNS(Dynamic Domain Name Server,动态域名服务)是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
简单来说,就是我们平时输入的网址其实是匹配一个一个服务器的ip,输入网址就会解析处相对的ip,这就是dns。为了避免因为动态ip问题而需要不停的修改网站对应的ip这个问题,把ip实时和域名组合在一起,叫ddns。
如果有静态公网ip那么可以在浏览器直接输入nas的公网
ip:端口
即可成功访问nas,手上没有相关静态公网ip但有动态公网ip的才需要用ddns技术。那么我们需要准备两样东西:个人域名、ddns软件个人域名
购买
个人域名的获取需要到各家互联网域名商去购买,我这边使用的是阿里云。
我们首先进入阿里云官网并注册登陆,然后再搜索栏搜索
域名注册
然后搜索你想要建立的域名,比如
asdadsahdah
挑选一个还未注册且价格便宜的入手即可,比如
asdadsahdah.top
。网站权限的账户密码获取
购买成功后,我们点击右上角
控制台>全部域名>域名列表
,确认购买的域名。确认入库后,点击右上角头像>AccessKey
,然后勾选提示并点击继续使用云账号AccessKey
。接着点击
创建AccessKey
,然后完成一系列验证后就可以拿到一个AccessKey ID和AccessKey Secret。请保管好这AccessKey ID和AccessKey Secret,拿到的人相当于对该网站拥有实际控制权!一定要保管好且不要泄密,就和你的steam号不外借是同一个道理!我们要复制好AccessKey ID和AccessKey Secret,这两个在关闭页面就无法在看到了,因此要提前存放好。DDNS软件的选择
我们下载完lucky并安装在nas上以后,启动lucky,并在右下角小图标处右键lucky图标,设置为
开机自启动
,然后点击打开lucky后台
进入到webui页面我们输入账号和密码(默认都是:
666
),点击设置
,把管理账号和密码修改成你自己的。外网访问按需打开。设置好并重新登陆lucky后台,我们点击
动态域名>添加任务
,然后把相关信息填写上,域名写刚刚购买的域名,AccessKey ID和AccessKey Secret就填写刚刚建立的。类型选择上如果有公网ipv4就选择公网ipv4,有公网ipv6就选择公网ipv6,都有的话建议多添加一次任务,把ipv4和ipv6都解析了。注意:我们购买的域名一般都是主域名,子域名是挂载在主域名下的,不需要额外购买,因此我们可以在域名列表处写入子域名。
子域名命名规则其实很简单,组合方式为:
你要的域名名称.主域名
,和之前一样,比如我购买的主域名为asdadsahdah.top
,那么子域名我可以设置为abc123.asdadsahdah.top
,其中这个abc123
可以是任何英文和数字。都填入正确并添加成功后应该可以看到这个页面
可以看到公网ip未改变或者成功上传ip的相关字样
远程访问nas
现在我们已经成功将ip和域名配置成功,那么就可以来访问测试一下。在浏览器输入
域名:端口
即可访问。前文我安装了飞牛os和emby服务器,运行的端口号分别是5666
和8096
,那么我在浏览器输入域名:5666
和域名:8096
既可。SSL证书
我们上面的一系列操作完成后都只是能在
http
上访问,而http
在现在互联网中其实相当于明文传输,相当不安全,因此建议加上SSL证书来达成https
访问。至于SSL是什么东西,请看下面的文章:添加SSL证书
之所以前面选择lucky作为ddns软件,就是因为它不单止可以作为ddns转发,还可以帮我们续签SSL证书。我们点击
SSL/TLS证书>添加证书
,添加方式选择ACME
,证书机构推荐使用Let's Encrypt
,验证方式选择阿里云
(在什么地方买得域名就选择什么),ID和Secret写入之前获取的AssessKey,域名写入刚刚ddns设置的域名(比如前文的abc123.asdadsahdah.top
),也可以写入你的主域名
和*.主域名
(比如asdadsahdah.top
和*.asdadsahdah.top
)反向代理
添加完SSL证书后,我们还需要设置反向代理,把
https
的域名指向本机的ip我们点击
web服务>添加web服务规则
,设置一个端口号,然后把TLS
打开。接着点击添加子规则
,前端地址写入ddns设置的域名,后端地址写入本机ip:端口
,在点击添加web服务规则
即可。如图,这样一番设置后,我在浏览器输入小姐姐就可以随时随地的来到我们身边了。
https://abc123.asdadsahdah.top:10010
,先是会通过ddns来解析到nas公网ip地址,然后通过lucky的反向代理,10010
端口的流量指向192.168.110.1:8096
,我们就可以浏览到192.168.110.1
这台设备8096
端口上的内容了。而前面emby服务是运行在8096
端口,因此输入https://abc123.asdadsahdah.top:10010
即可远程访问机器上的emby服务器。小技巧
反向代理的端口是可以复用的,因此你可以把
abc123.asdadsahdah.top:10010
指向emby,把gskandp.asdadsahdah.top:10010
指向nas系统等IPV4和IPV6互不相通
前面说了,ipv4的网络无法访问只有ipv6地址的网站,反过来也一样,因此你需要确认你的域名和你的流量都支持同一个网际协议版本(Internet Protocol version,缩写:ipv)。如果你和我一样,只有公网ipv6,那么在通过这样的办法连接家里设备之前,先去测试一下ipv6吧。
现在国内的绝大部分手机都是兼容ipv4和ipv6流量的,因此手机流量应该可以直接访问ipv6地址的网页。
目前阿里云平台的ipv6转ipv4是需按照流量收费的,而赛博善人cloudflare则是不用,我们可以免费使用cloudflare的cdn服务来实现v4v6均可访问。但由于cloudflare是美国公司,因此速度方面会比较感人,有舍有得吧。碍于篇幅这里暂且搁置不谈,以后有机会再填坑。(咕咕咕)
内网穿透
如果家里没有公网ip,那么我们得用内网穿透的方式来把两台设备连接在一起。内网穿透的定义是
内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
在这里,我选择zerotier作为内网穿透工具,它通过虚拟局域网(VLAN)技术将不同设备连接到一个“虚拟的局域网”中,让设备随时随地都可以互相访问。
注册并配置zerotier客户端
我们必须先去zerotier注册并并且建立一个虚拟局域网先。
设置zerotier局域网
注册并登陆zerotier后,选择
free
计划,然后我们可以看到这个页面我们点击上面的
Create A Network
就可以看到下面多出一个条目点击进入后,我们首先来到,我们需要注意以下几个地方
安装zerotier docker客户端
我们可以到zerotier的
Download
处下载到相关系统的客户端,想要安装在nas系统里面的可以选择docker
版本。以飞牛os的docker为例。在docker中搜索并安装zerotier
然后建立镜像,记得勾选
开机自启动
,在存储位置
处添加路径映射,把一个你想要放置zerotier文件的文件夹映射/var/lib/zerotier-one
文件夹,比如功能处选择使用
高权限执行容器
网络选择
host
(先取消勾选bridge
然后再选择host
)点击
设置>SSH
,打开SSH功能
,我们需要远程ssh来给zerotier容器添加Network ID
nas的ip地址可以再nas的
系统设置>网络设置
中找到对着左侧列表的ip地址右键选择
Connect as…
,然后输入自己nas的账户名,这样就成功连接上nas的ssh接下来所有的命令我们需要在root权限下,因此我们输入
sudo -i
,然后输入自己nas的密码来进入到root权限中。注意,输入密码的时候是不会显示密码的,要盲打接下来执行以下操作
此时再度进入zerotier的官网并进入你方才建立的局域网,现在你应该发现就会有一个设备出现在页面上
Name
是给添加进入的设备起名称,可以随意,Managed IPs
则是虚拟局域网内的ip,这个ip就是zerotier局域网的ip。这样一台设备就真正的加入到虚拟局域网中了。注意,zerotier局域网的网段和家里真实局域网的网段不能相同。可以尝试一下,比如家里的局域网网段是
192.168.110.x
,zerotier的局域网网段是192.168.193.x
,两台设备之间ping zerotierIP
可以ping通,就算成功。安装zerotier Windows端
我们还是来到zerotier官网的
Download
处,选择下载Windows版本下载下来应该是一个
.msi
文件。双击进行安装,安装完毕后在右下角小图标出应该可以找到zerotier的图标,接着右键>join new network
,弹出的提示框内输入虚拟局域网的Network ID
,然后跟上面的一样,在zerotier局域网管理页面运行设备加入即可。zerotier 路由转发
其实我们可以更近一步,通过设备的转发功能,实现一台设备安装zerotier,那么该局域网的所有设备都被添加进zerotier局域网的效果。由于本人使用openwrt作为旁路由进行zerotier转发,因此下面举例是基于openwrt的,飞牛OS和Windows的也各自有教程
我们进入openwrt的后台并输入
随后进入openwrt webui,来到
VPN>zerotier
,把启用
打开,并输入局域网的Network ID
到ZeroTier Network ID
处,并把自动允许客户端 NAT打开
,然后选择保存并应用。回到zerotier局域网管理页面,我们找到
Settings>Advanced>Managed Routes
,在Add Routes
进行路由表的配置。Destination
输入自己本地局域网的网段,比如我家里的nas ip地址是192.168.110.5,那么我就应该输入192.168.110.0/24
。Via
则是输入自己想要进行转发的设备,比如我要用opnewrt进行转发,该设备在zerotier的局域网中ip为192.168.193.2
,那么就输入192.168.193.2
。然后点击Submit
来提交。这样我外面的设备连接上zerotier局域网后,输入的设备就直接输入真实局域网的ip就可以了,再也不用多记ip且一个一个设备安装zerotier了。
中继转发
有些nas系统的服务商其实是配置了中继转发的,飞牛的中继转发叫做FN Connect。开启后输入指定连接后边可以直接连接。如果是在同一局域网内,那么它会自动帮你切换成局域网内连接,不然就会通过飞牛的服务器把你的外部设备和nas连接在一起。
由于是经过了飞牛的服务器,因此速度是有限制的,还是更加推荐zerotier或者是ddns。
我们进入到
设置>设备信息>飞牛账号
中,用自己的手机号注册一个飞牛帐户。注册完成后继续来到远程访问
中,把FN ID输入一个自己的id名(不可跟他人重复),然后打开FN Connect即可。我们再回到
设备信息
处,就可以看到FN Connect
处有一个连接,这个就是专属连接,直接再浏览器输入便可以连接到飞牛nas了当然我们用中继转发的话只能连接飞牛nas,是无法连接Windows电脑和emby之类的服务的。虽然仿佛简单,但是局限也大。
这么一大串下来,我们终于是把常用的远程连接都说完了。谁能想到,我本来只打算弄一个远程观看毛片的,结果把这一串玩意都折腾完了。忍不住感叹一句
好奇是科学发展的原动力,色欲也是。
- Author:cyilin
- URL:https://cyilin.top/article/nas-2
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts