外网 内网 vpn
之前给大家出过一期内网穿透教程,可以方便大家访问家里的NAS。但是内网穿透的缺点也很明显,首先需要花钱租一台服务器用作转发,其次国内便宜的云服务器带宽给的普遍只有3~5M,访问家里下载个文件都是龟速。
那么有什么办法可以让你方便访问家里的NAS,又能跑满家里的上传呢?您好,有的!只要你家里的设备可以获取到IPv6地址,那你就可以不需要IPv4公网,跑满你的NAS上传。而且IPv6即便DDNS映射到公网上,也不会被识别为PCDN,即便是山东这种对PCDN管理很严格的地区也可以直接使用。
不过这么做有好处也有坏处,因为是纯v6访问,所以在家外访问时,需要你的设备也有IPv6地址,才能正常访问。手机流量一般是没问题的,运营商一般都会给手机分配IPv6地址,但是在酒店这些地方,就纯碰运气了。
做这些之前,你要做一些准备工作,首先是去买一个域名,然后做好备案,防止网页被屏蔽无法访问。这个教程搜我以前的内网穿透教程就行,公众号有,不再赘述。
其次,准备一台可以刷OP的路由器或者软路由,再找宽带服务员把你的光猫从拨号模式改成桥接模式,要来宽带账号密码,基本就可以开始了。
首先自然是刷好OP去设置宽带上网,这里推荐x86软路由,固件多性能强,刷写方便。为什么一定要OP,主要有以下两个原因
设置宽带很简单,以QWRT固件为例,网络—接口—WAN—编辑,协议改成PPPoE,设置你的宽带账号密码就行了。WAN6不用设置,默认的DHCPv6就行了。
至于为什么一定要改成路由器拨号,因为现在新办宽带都是默认在光猫拨号,这种情况下下级接路由极大概率是没法用IPv6的,因为家用路由器v6默认大都是native,下发不到v6地址,自然也就用不了了,所以老老实实改桥接。
设置完成后拨号上网,看到IPv6 WAN状态是这样,有2408的前缀,就说明v6已经正常获取下发了。这里联通的前缀是2408,其他家的自己查一下,我也忘了。
正常获取v6地址后,就可以去你的NAS看一下你的设备有没有分配到IPv6地址了。这里以威联通为例,在网络和虚拟交换机里面查看v6信息,是这样,就说明设备已经分配到了v6的地址。而且这里要说的是,IPv6地址是直接由联通下发到设备的,并不像IPv4那样需要经过路由器NAT才能分配到192.168.1.2这种地址,是真正的一机一地址,访问的时候也是直接访问地址本身,这也是为什么v6可以不用做穿透的原因。
看到有地址之后,需要去OP里面设置好防火墙。另外如果你有在路由器上做魔法,则需要打开工具的v6解析才能正常使用v6功能。因为这类插件对v6的支持一般不好,所以大都默认关闭,这里以OC为例,在插件设置—IPv6设置里面把IPv6解析打开,才能正常使用IPv6功能。
防火墙的线防火墙,所以正常情况下,即便可以做到点对点连接,但是也会被OP拦截。这是因为OP的v6防火墙默认拒绝一切外来访问。当然,这是OP保护你家里设备的安全证明,并不是什么坏事,因为没有防火墙的情况下,直接v6地址访问这个设备,那就和DMZ到公网v4上没区别,相当危险。
所以需要在路由器的防火墙上开一个端口,让你在外面也能正常访问家里的设备。但是要注意,以QWRT为例,v6的转发是要去通信规则里面设置,而非端口转发。实测端口转发里面的设置只会对v4生效,v6不行。
名称自己随便定,限制地址为v6,协议TCP,源区域,源Mac,源地址都保持默认不用动外网 内网 vpn,端口填写你想映射在外网的端口。80和443不能用,这俩基本都封的。
目标区域不用动,地址选择你的NAS在内网的v4地址,端口填写你要转发的NAS的web页面端口,即可。
此时你在外网输入你设备的v6地址+端口号,就已经可以访问你这台NAS了。输入方法为地址]:端口号。不过v6地址太过难记,加上没有证书不安全,所以这里就需要去DDNS一下。
DDNS的方法也很简单,现在的nas基本都有docker功能,SSH后台利用docker安装一个ddns-go就行了。
安装命令:docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
建立完成后,输入你NAS的内网地址:9876端口访问DDNS-GO的web后台。首次会让你设置账号密码,设置一个你想要的就行。然后在后台这里,以阿里云为例,填写你在阿里云的access key和秘钥,至于怎么获得,网上一大把教程,很简单。这里要注意的是,我的域名是在阿里云买的,所以需要填阿里云的秘钥用作DDNS解析,其他的同理。
由于我们是使用v6访问,所以下面需要把v4的勾打掉,只保留v6,选择网卡获取,选择你获取到v6地址的网卡。
Domains对应你想映射在公网上的域名,比如你在阿里云买了一个chinochan.online的域名,你可以填写nas.chinochan.oline,这样你NAS的V6地址映射在公网上的域名就是nas.chinochan.oline,输入这个域名加上你在路由器上转发出去的端口号,就能在公网上访问你的NAS。设置完成后保存,DDNS-GO就设置好了。
当然只有这样还不够,因为你虽然映射了域名,但是却没有SSL证书。虽然自己也可以在阿里云或者其他地方申请SSL证书替换NAS原本的证书,但是目前免费的SSL证书基本只有90天有效期,到期就要手动更换,比较麻烦。那有什么办法可以让机器自动更换呢?您好,有的。
如果你是群晖,那恭喜你,很简单。去这个网站申请证书就行了。方法很简单,网站有详细的教程。并且官方提供了群晖一键更新证书的脚本,只要SSH进入群晖的后台输入这串命令即可。
并且httpsok还提供了证书监控功能,可以实时监测你的证书有效期,快到期了还会微信公众号通知你,挺方便。
但是对于威联通,飞牛这些NAS,就比较麻烦一些。这里推荐docker安装acme来自动更换与托管证书。这里以威联通为+阿里云例,首先去你习惯的docker程序文件夹建立一个acme使用的文件夹。比如我的就是/Container/acme。然后在container station中创建容器,映像输入为neilpang/acme.sh:latest,点击下一步。
容器名称随意,然后点击左下角的高级设置,在第一页的命令处点击覆盖,输入daemon,让容器以守护进程的方式运行。
第二页的网络选择host,然后第三页的环境,新建两个子项,分别是Ali_Key和Ali_Secret,输入的内容对应DDNS-GO里面输入的Key和秘钥。
输入你前面建立的文件夹地址,比如我刚刚建立的是/Container/acme,那就在主机地址输入这个文件夹,映射为/acme.sh
点击应用,回到创建容器的页面,点击下一步,这个容器就创建好了。然后去度盘这里下载大佬给威联通写好的脚本
下载里面的update_cert_docker.sh脚本,放到你刚刚建立的acme文件夹里面。
剩下的需要admin账号才能操作,如果你没开,去后NAS的管理页面打开admin账号和ssh功能,打开后用ssh访问后台,这里推荐使用mobaxterm。
用admin账号进入命令后台后,依次输入Q,回车,Y,回车,进入可打命令的界面。输入cd /share/Container/acme进入脚本文件夹,威联通的共享文件夹都在/share目录下,所以路径是/share/Container/acme。输入chmod +x update_cert_docker.sh,给这个脚本最高的可执行权限。
然后在右边的文件浏览器中找到这个文件夹,右键选择open with default text editor,用mobaxtrem自带的文本编辑器打开这个文件,不要用windows的记事本,否则可能会出现字符编码不同无法运行的问题。
需要改的部分是两行,其中把DOMAIN这一行’’号内的内容改为你刚刚映射的域名,CERT_FILE=这一行,=号后面改为前面创建的acme文件夹,比如我的就是,CERT_FILE=/share/Container/acme,修改后点击保存按钮,弹出的提示选择yes to all
到这里,脚本设置就完成了,输入 ./update_cert_docker.sh运行这个脚本,就会自动替换你威联通里面的证书了,第一次比较慢,因为有120秒的sleep时间,耐心等待。
然后输入vi /etc/config/crontab,打开crontab自动任务的配置,定位到最后一行,按下ins,输入: 0 1 2 * * /share/Container/acme/update_cert_docker.sh /share/Container/acme/update_cert_docker.log &
这行命令意义是在每月2日晚上1点,执行一次更换证书的指令,并保存对应的日志到/share/Container/acme/update_cert_docker.log。完成后按ESC,输入:wq,回车保存,再输入crontab /etc/config/crontab && /etc/init.d/crond.sh restart重启corntab即可。
然后你去到控制台-安全-SSL证书,就可以看到证书已经被替换好了,并且定期自动更新证书,不用担心过期。
实测威联通的app输入地址也可以连接,下载NAS的文件可以跑满我家里上传。不过仍旧要注意的是,这个方法虽然可以访问,但是如果你上传量过大的话,仍旧是有概率被运营商限制上传的哦