声明
- 本文是本人想法, 里面不包含具体的实现, 也不包含软件安装与配置, 文中有不对的地方请指正, 内容仅供参考.
- 本人生活在杭州, 使用200M电信宽带, 因此本文具体数值基于杭州电信宽带所测试/提供的数值, 本文所有想法基于电信宽带.
- 提到的服务器可以选用阿里云立即购买, 阿里云服务器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地址
阿里云杭州服务器ping家用宽带的延迟以及上传速度(使用阿里云服务器下载)
部分路由器防火墙默认开启忽略来自WAN口的PING, 需要手动关闭.
这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的量是有限的.
家用宽带利用思路
设备
- 一台闲置的电脑或者树莓派+硬盘是组合(以下称为主机)
- 光猫, 以及能桥接拨号的路由器
如果路由器连接着光猫但是用DHCP方式的话, 拨打10000号, 让客服将宽带改为桥接模式, 然后让客服重置下密码, 再用PPPOE方式连接即可
思路
- 无非就这2步, 首先, 我们需要知道家里主机的IP
- 然后, 就像访问aliyun一样, 访问到这个IP获取数据.
遇到的问题
- 首先家用宽带可不是像阿里云等其他云服务器一样有着固定的IP, 它的IP是会变动的, 大概每2.5天会变一次, 而且电信不会那么好心的推送给你IP变化的消息, IP变化需要自己去检测和判断.
- 一般家里都是用路由器的, 而不是通过直连的方式.
- 电信宽带似乎默认屏蔽80, 443等端口
问题解决
-
说到底就是要知道家用宽带的IP, 这个解决方案很简单么
-
如果自己有阿里云(低配也成)就好办了, 让家用宽带定时访问一次云服务器的某个接口, 这个接口会临时缓存这个IP, 同时缓存时间(因为如果家里异常断电的话, 就意味着IP不会定时汇报了), 代码非常简单, 就这么几行, 获得IP缓存一下, 然后定义一个接口来获取这个IP, 然后redirect到这个IP:端口, 然后进行直连访问.
这样做的好处是: 1. 你只需知道自己服务器的IP, 无需知道家用宽带的IP, 而且可以通过当前时间 - 上一次汇报时间来获得差时, 如果差时超过定时汇报设定的时间可以判断主机已经不能汇报了, 可以设置成1分钟汇报一次, 这样如果超过1分钟没有收到汇报, 就可以判断为timeout了. 2. 可用性极高(timeout最大也就1分钟, 1分钟访问一次, 不频繁吧.),然后访问阿里云另一个接口获得IP, 最后拼接IP进行跳转.
-
访问ip.cn等可以获得外网IP的网站, 获得IP, 然后定时调用云解析的API(每天, 每1小时或更快), 可用性没有上面的高, 因为域名修改解析要想全球同步, 可是需要1-20分钟的等待的(如果是用阿里DNS则做到实时更改).
这里可以建议凌晨进行更新, 因为你睡觉的时候总不会在访问吧. 凌晨让主机模拟发送http请求来重启路由器, 然后在若干分钟后访问一次云解析API, 这样只要不断电, 确保每天都能用.
- 还是要一台服务器, 访问服务器时, 由服务器进行http请求到我们放家里的主机, 然后获得返回结果, 这样看上去就犹如服务器提供的服务一样, 然后等到访问jpg, mp4时, 服务器redirect到真正的家用主机地址, 实现资源直连访问, 获得列表服务器直接返回.
- 可以通过其他第三方来进行存储和获取(这类将不再说明)
-
-
第二个问题更简单了, 现在路由器肯定有设置静态IP的功能以及设置虚拟服务器的功能.
- 首先, 将主机的Mac绑定静态IP, 例如说10.0.0.100
- 然后, 设置虚拟服务器, 当访问路由器8000端口的时候
如果光猫连着路由器并桥接模式, 此时访问外网IP实际上是访问这个路由器
, 转发到10.0.0.100:8000端口
部分路由器支持访问8000端口转发到其他任意端口, 例如80
- 这个问题这个问题无解, 强烈不建议使用家用宽带搭建web服务, 搭建web服务强烈建议使用服务器, 例如阿里云ECS, 腾讯云等.
使用家用宽带搭建的web服务因不稳定导致损失, 请自行承担.
最后就是在自己主机上装一个可以用来列出文件的工具, 可以尝试FTP(适合手机播放器), Nginx的AutoIndex(适合浏览器, 配合一个文件列表UI可以实现更个性化的功能)
其他大胆的设想
- 既然能访问到家里的主机, 如果家里主机性能好一点呢? 是不是可以提供一个API来实现远程视频转换啥的, 或者是图片转换的, 因为家里的宽带也像aliyun一样, 在主机上下载文件特别快
(100M)
, 上传限速(20M)
, 土豪或不差钱的人士, 请购买GPU服务器吧. - 是不是可以装一个bt下载服务, 远程访问然后远程添加任务呢? 等你回家就下好了, 从本地主机拷贝出来, 千兆本地带宽, 比迅雷啥的强多了吧(部分服务器商对流量使用过猛会有一定的管制, 但是自家的宽带开迅雷下个7天7夜, 谁管你呢)?
- 家用宽带对于周边省市访问比较理想, 远一点或者使用移动联通的就可能打折扣了, 这时候可以考虑使用阿里云ECS的BGP宽带优势为其加速(但是此时就只限于api访问了, 看视频啥的就算了吧).
最后说明
- 本文是对家用宽带利用提供细微思路, 本人已经实现任意地方访问我自己的视频库.
- 自己的资源自行维护, 请勿产生利益, 产生利益而导致的一切责任请自行承担.
- 资源的安全以及访问认证请自行实现, 请自行保障家用主机的系统安全.
- 受地域影响, 杭州地区周边省市直连速度理想稳定, 但是如果偏远地区,海外或者跨运营商则无法保证.
- 家庭宽带线路无法和阿里云的BGP宽带进行比拼, 运营web网站请使用更加稳定的服务器, 例如阿里云等.
- 主机硬盘长时间运行会发热, 或导致不稳定现象, 做好主机散热稳定, 读写优化, 并且请定时检查硬盘性能以及及时更换.
- 可以使用RAID阵列来组建更高性能的硬盘组, 请自行实现.