马上要出上班了,就不能访问家里的服务器了。服务器上有一个Python爬虫,会定时爬取一些图片,用来做壁纸或者博客背景的图片。

图片的筛选工作是我手工完成的,访问爬虫的管理Web页面,将喜欢的图片保存到电脑上,然后删掉不喜欢的图片。我在想出门在外怎么才能访问这个服务器,下载我中意的图片。

一个方法是走我的服务器中转,但是我的服务器是流量计费的,爬虫一天能抓好几个Gb的内容,流量费吃不消。

另一个方法是用一些内网穿透软件,比如花生壳,樱花映射,但是看了下也有流量限制,每天多少个G来着,也不太好用。

最后我打算试试用IPv6进行访问,只要不是特别旧的机器或者路由都可以支持v6,而且ipv6自带公网属性,也就是不需要配置任何映射就可以从公网进行访问,属实是Minecraft服主的一大福音了,真怀念当初我做服务器的时候怎么没有普及这个东西。

ipv6地址根本用不完,所以我们家里每一个网络设备(电脑,手机,路由,开发板)都有一个自己的ipv6地址,可以从世界上任何一个地方进行访问。你可以用这个v6地址开服,做监控,挂远程桌面或者各种玩法都可以,但是有一点:尽量不要走http和相关的变体协议(webdav,websocket),因为在我国,搭建网站是一定要备案的,没有备案是不可以建设网站的,就算你用v6建设了,也有很大概率会被阻止访问。

那么我是如何在外面访问家里的网页的呢,很简单,利用ssh隧道进行访问。这是ssh自带的一个功能,主流的linux操作系统都支持(Windows也支持),相当于一个内置的frp,可以让你远程访问服务器端的另一个端口,也可以反过来让服务端可以访问你的一个端口。最方便的是这个功能不需要装任何额外软件,只要能连ssh就可以使用。

我只需要ssh连回家里的主机,然后开启隧道功能,就可以访问家里局域网里的各种设备了,而且ssh还可以加密这个通信,不让别人截获。这样就能顺利访问我家里服务器上的图片爬虫的Web页面了,还不用担心会被他人恶意访问和攻击。同时ipv6还不用额外花钱可以免费用,最大的上传速度就是家里带宽的上传速度,可以随意使用。

美中不足的是这个v6的地址不是永久的,它每隔一段时间会变化一次,就需要一个ddns动态解析域名,我使用的是jeessy2/ddns-go这个ddns,他有全中文的图形界面,傻瓜式的操作,很简单。

如果在家里用ipv6做服务器,一定要记得设置防火墙,因为你的机器不是云服务器,有安全组和各种厂商的安全工具护航,一旦机器被攻破家庭网络会面临严重的威胁。Windows系统可以打开系统自带的防火墙,Linux系统可以使用firewalld进行保护,封禁所有未使用的端口。

这里有个地方要说明一下,firewalld和docker会有冲突,因为他俩会同时读写iptables里的内容,导致功能错乱,具体解决方法需要自行百度,我琢磨了半天还是不太会,索性就把firewalld卸载了,没有防火墙直接裸奔。但庆幸的是这个服务器只有我自己用,不会把这个地址告诉任何人,从某种意义上来说也算是减小了安全风险。如果你要把v6公开搭建服务,防火墙是必不可少的。

我后面会打算给这个服务器挂硬盘,做成NAS,但是目前我的网络文件系统还没有写好。到时候就可以把NAS上的硬盘挂载“我的电脑”中的一个“本地磁盘”,就像对本地硬盘一样访问,很方便。

总的来说ipv6的普及真的是一个很好的开始,再也不用为没有ipv4苦恼了。16年那会,我玩MC口袋版,用PocketMine搭建了一个好厉害的服务器,插件,主城都很齐全了,但就是没有公网地址可以开服,真的好可惜啊。然而现在有了ipv6这个新选择,我却过了折腾的年纪。