浅谈家用宽带的利用以及私人资源盘的实现

  1. 云栖社区>
  2. 博客>
  3. 正文

浅谈家用宽带的利用以及私人资源盘的实现

ruterfu 2018-11-04 13:22:48 浏览1760
展开阅读全文

声明

  1. 本文是本人想法, 里面不包含具体的实现, 也不包含软件安装与配置, 文中有不对的地方请指正, 内容仅供参考.
  2. 本人生活在杭州, 使用200M电信宽带, 因此本文具体数值基于杭州电信宽带所测试/提供的数值, 本文所有想法基于电信宽带.
  3. 提到的服务器可以选用阿里云立即购买, 阿里云服务器293/1年 或者 个人阿里云推广返还, 购买最多折上9折

家用宽带上行大提速

现在的家用宽带都已经是100M, 200M的时代, 电信宽带自从2018年起, 其上行速度进行大幅提速, 100M从原来的4-5M约480KB/s提速至20M约2.5MB/s, 而200M宽带从原来的4-5M约480KB/s提速至30M约3.8MB/s, 这个提速直接提升了传文件的速度, 电信宽带拨号获得的IP是公网的IP, 所以说这么大的带宽(还是国内宽带), 只是用来传个文件啥的, 是不是有点太浪费了点...

家用宽带的路由器获取的IP地址

_2

阿里云杭州服务器ping家用宽带的延迟以及上传速度(使用阿里云服务器下载)

部分路由器防火墙默认开启忽略来自WAN口的PING, 需要手动关闭.

_3

这3.9MB/s的网速, 在我眼里这就是30M超大带宽的宽带
而且, 自己的资源自己做主, 别人又删不了你的资源

设想, 它是属于自己的资源盘

一般情况下, 家用宽带肯定是全天开着的, 很少人会用的时候开一下, 不用的时候不开了吧, 而且大部分云盘不会那么开心的像阿里云OSS一样提供一个SDK, 自己能做出文件的列表, 然后还能随时访问它. 但是无奈阿里云的带宽价格过于昂贵, 5M的带宽已经远超像我这样技术小白的支付能力了, 更何况30M了(就算是上CDN也不便宜), 而且收藏多年的资源再怎么说至少是G级别, 甚至T级别的吧, 云服务器购买百G的存储价格也是也是不少, 但是我们买一个1TB的硬盘, 也就400不到而已, 还能用好几年.

所以我就冒出几个设想

  • 如果能把它作为一个资源服务器, 放自己收藏多年的电影或者个人的照片, 那不是随时都能看到这些了么?
  • 假设我们的一部电影是10G的(应该没有哪个视频网站能提供这么高清的吧), 播放时间是2小时, 那每秒的流量是1.44MB/s, 也就是说只要有1.44MB的网速*, 再装个FTP啥的, 那不就是一个超高品质的随身影院了么?
  • 如果同时会做UI的话, 自己再做一个UI, 放点图片, 不就变成在线的随身图库了么?
  • 如果正在旅游, 旅馆里面突然想看自己硬盘的高画质的电影, 但是硬盘又没带, 这个时候不就可以看了么?

网速*: 请注意手机的流量, 毕竟现在都是不限量, 但是4G的量是有限的.

家用宽带利用思路

设备

  1. 一台闲置的电脑或者树莓派+硬盘是组合(以下称为主机)
  2. 光猫, 以及能桥接拨号的路由器如果路由器连接着光猫但是用DHCP方式的话, 拨打10000号, 让客服将宽带改为桥接模式, 然后让客服重置下密码, 再用PPPOE方式连接即可

思路

  1. 无非就这2步, 首先, 我们需要知道家里主机的IP
  2. 然后, 就像访问aliyun一样, 访问到这个IP获取数据.

遇到的问题

  1. 首先家用宽带可不是像阿里云等其他云服务器一样有着固定的IP, 它的IP是会变动的, 大概每2.5天会变一次, 而且电信不会那么好心的推送给你IP变化的消息, IP变化需要自己去检测和判断.
  2. 一般家里都是用路由器的, 而不是通过直连的方式.
  3. 电信宽带似乎默认屏蔽80, 443等端口

问题解决

  1. 说到底就是要知道家用宽带的IP, 这个解决方案很简单么

    1. 如果自己有阿里云(低配也成)就好办了, 让家用宽带定时访问一次云服务器的某个接口, 这个接口会临时缓存这个IP, 同时缓存时间(因为如果家里异常断电的话, 就意味着IP不会定时汇报了), 代码非常简单, 就这么几行, 获得IP缓存一下, 然后定义一个接口来获取这个IP, 然后redirect到这个IP:端口, 然后进行直连访问.
      image

      这样做的好处是:
      1. 你只需知道自己服务器的IP, 无需知道家用宽带的IP, 而且可以通过当前时间 - 上一次汇报时间来获得差时, 如果差时超过定时汇报设定的时间可以判断主机已经不能汇报了, 可以设置成1分钟汇报一次, 这样如果超过1分钟没有收到汇报, 就可以判断为timeout了. 
      2. 可用性极高(timeout最大也就1分钟, 1分钟访问一次, 不频繁吧.),然后访问阿里云另一个接口获得IP, 最后拼接IP进行跳转.
    2. 访问ip.cn等可以获得外网IP的网站, 获得IP, 然后定时调用云解析的API(每天, 每1小时或更快), 可用性没有上面的高, 因为域名修改解析要想全球同步, 可是需要1-20分钟的等待的(如果是用阿里DNS则做到实时更改).

      这里可以建议凌晨进行更新, 因为你睡觉的时候总不会在访问吧. 凌晨让主机模拟发送http请求来重启路由器, 然后在若干分钟后访问一次云解析API, 这样只要不断电, 确保每天都能用.

    3. 还是要一台服务器, 访问服务器时, 由服务器进行http请求到我们放家里的主机, 然后获得返回结果, 这样看上去就犹如服务器提供的服务一样, 然后等到访问jpg, mp4时, 服务器redirect到真正的家用主机地址, 实现资源直连访问, 获得列表服务器直接返回.
    4. 可以通过其他第三方来进行存储和获取(这类将不再说明)
  2. 第二个问题更简单了, 现在路由器肯定有设置静态IP的功能以及设置虚拟服务器的功能.

    1. 首先, 将主机的Mac绑定静态IP, 例如说10.0.0.100
    2. 然后, 设置虚拟服务器, 当访问路由器8000端口的时候如果光猫连着路由器并桥接模式, 此时访问外网IP实际上是访问这个路由器, 转发到10.0.0.100:8000端口

    部分路由器支持访问8000端口转发到其他任意端口, 例如80

  3. 这个问题这个问题无解, 强烈不建议使用家用宽带搭建web服务, 搭建web服务强烈建议使用服务器, 例如阿里云ECS, 腾讯云等.

使用家用宽带搭建的web服务因不稳定导致损失, 请自行承担.

最后就是在自己主机上装一个可以用来列出文件的工具, 可以尝试FTP(适合手机播放器), Nginx的AutoIndex(适合浏览器, 配合一个文件列表UI可以实现更个性化的功能)

其他大胆的设想

  1. 既然能访问到家里的主机, 如果家里主机性能好一点呢? 是不是可以提供一个API来实现远程视频转换啥的, 或者是图片转换的, 因为家里的宽带也像aliyun一样, 在主机上下载文件特别快(100M), 上传限速(20M), 土豪或不差钱的人士, 请购买GPU服务器吧.
  2. 是不是可以装一个bt下载服务, 远程访问然后远程添加任务呢? 等你回家就下好了, 从本地主机拷贝出来, 千兆本地带宽, 比迅雷啥的强多了吧(部分服务器商对流量使用过猛会有一定的管制, 但是自家的宽带开迅雷下个7天7夜, 谁管你呢)?
  3. 家用宽带对于周边省市访问比较理想, 远一点或者使用移动联通的就可能打折扣了, 这时候可以考虑使用阿里云ECS的BGP宽带优势为其加速(但是此时就只限于api访问了, 看视频啥的就算了吧).

最后说明

  1. 本文是对家用宽带利用提供细微思路, 本人已经实现任意地方访问我自己的视频库.
  2. 自己的资源自行维护, 请勿产生利益, 产生利益而导致的一切责任请自行承担.
  3. 资源的安全以及访问认证请自行实现, 请自行保障家用主机的系统安全.
  4. 受地域影响, 杭州地区周边省市直连速度理想稳定, 但是如果偏远地区,海外或者跨运营商则无法保证.
  5. 家庭宽带线路无法和阿里云的BGP宽带进行比拼, 运营web网站请使用更加稳定的服务器, 例如阿里云等.
  6. 主机硬盘长时间运行会发热, 或导致不稳定现象, 做好主机散热稳定, 读写优化, 并且请定时检查硬盘性能以及及时更换.
  7. 可以使用RAID阵列来组建更高性能的硬盘组, 请自行实现.

网友评论

登录后评论
0/500
评论
ruterfu
+ 关注