文章

一步步把路由器变成NAS—离线下载+文件共享 AND MORE

提示
请注意本文写作的历史环境,当时家用 NAS 尚未流行,本着折腾的态度让路由器承担了太多。如今看来这不是一个好的做法,路由器作为网络底层设备,应尽可能的精简与稳定。切忌 All in BOOM。有需求的同学建议上专业的 NAS,至少可以选择轻量级 NAS。至于路由器,就让它做好本职工作吧。

家里升级了电信200M宽带,上行也提高到了20M,原来的百兆路由器已经不能满足需要了,经过一番比较最终入手了华硕AC86U。不过那么快的网速加上辣么棒的路由器,不做点别的实在太可惜了。折腾了一会后,成功实现媒体服务器、离线下载、远程管理、文件共享等诸多功能,着实提高了生活质量。

软硬件准备

路由器

路由器:华硕AC86U
固件:梅林

其他设备例如部分网件路由器也可以刷梅林固件,不行的话只好找其他固件或插件实现。本文提供的是一个思路,不同设备固件有不同的实现方法。

外接存储设备

我选择了一块闲置东芝USB3.0移动硬盘,直接插到路由器USB口即可。格式推荐用NTFS,路由器和windows都可以识别。

因为USB3.0与2.4G WIFI 有干扰,路由器默认限制了USB性能以减低干扰。不过家里大多数常用设备都使用5G频率,故这里关闭此功能。这个设置位于无线网络—专业设置—2.4G频段下。

媒体服务器

顾名思义,媒体服务器专门提供媒体资源,与FTP等文件传输协议不同,媒体服务器不需要预先下载到本地,可以在终端设备在线观看视频,并支持拖拽快进等操作。需要强调的是,媒体服务是协议级别的,因此它并不需要特别的设备、特别的系统或指定某公司的APP,简而言之就是任意一个设备接入局域网后都可以实现流媒体播放。如此一来路由器可以作为全家的媒体库,其中储存的电影可以在电脑、手机、平板、电视等设备随时播放。

梅林固件开启媒体服务非常简单,在USB相关应用—媒体服务器下可以轻松开启。
默认情况下会共享存储设备里所有媒体,如果不想这样可以选择手动设定媒体服务器路径,然后在下方添加想要共享的目录以及文件类型即可。

PS:媒体服务器中文件目录并不是按照实际路径显示的,而是根据类型自动分类。因此看到的文件位置不代表其真实路径。

PC端观看

以 WIN10 系统为例。打开网络,即可在媒体设备分组中找到我们的媒体服务器。右击选择打开媒体播放机即可浏览媒体库并在线播放。

桌面没有「网络」?
在桌面右击,选择「个性化」,在打开的设置页面左侧选择「主题」,在右侧点击「桌面图标设置」,勾选「网络」即可。

在 WIN7 等系统中,「网络」也叫「网上邻居」。

PC播放视频

手机、平板观看

以 Android 系统为例。其实手机端大多数播放器都支持播放流媒体,但不是所有都支持扫描发现局域网中的媒体服务器。所以首先需要安装可以扫描发现媒体的应用,「VLC」以及「ES文件浏览器」等是具有此功能的。这里以 VLC 为例。

VLC 是著名的开源、跨平台的媒体播放软件。支持 Windows、Linux、Mac、Android、IOS 主流系统。

进入 LVC 点击左上角菜单按钮,选择本地网络,即可扫描到我们的媒体服务器,点进去选择文件就可以播放了。

电视观看

首先得确定电视是智能设备,或者有小米盒子之类智能机顶盒也行。这里以小米盒子为例。

小米盒子内置应用「高清播放器」自带局域网发现功能。打开高清播放器,在主页就可以看到路由器的视频已经扫描到并聚合在一起了,点击即可播放。如果想单独浏览,可以切换到设备选项卡,在DLNA设备中可以看到我们的媒体服务器。

PS:在设备选项卡,可能会看到一个名称类似的网络共享设备,点进去也可以浏览文件并播放,这是后面要讲的文件共享。他和媒体服务器功能有一定重叠。

离线下载

离线(远程)下载与媒体服务器(文件共享)简直是绝配。试想:在外面提交一个电影下载任务,回到家正好下载完,此时随便一个设备接入WIFI就可以开始欣赏,甚至可以中途切换设备。生活岂不美滋滋 (′▽`〃)

华硕固件自带一个离线下载器,位于USB相关应用 — Download Master,不过感觉并不是很好用,只能支持传统的下载链接。而国内情况是好多资源在百度云、115等网盘。所以这里使用「Aria2」实现。

Aria2 是一个跨平台轻量级下载工具。支持 HTTP(s)、FTP、SFTP、BT、Metalink 多种协议。其本身是纯命令行控制的,但是可以通过 RPC 协议实现可视化远程控制。亦可以通过 RPC 接入百度云等网盘。
听不懂这些?没关系,只要知道它很好用就OK了。

幸运的是,梅林固件软件中心有 Aria2 插件,大幅简化了安装配置。

Aria2 服务器配置

从软件中心安装 Aria2,点进去开始配置。开启后,大多数保持默认即可。下载存储目录是默认的文件保存目录,默认是第一个USB设备的根目录,如果没有USB设备则默认是路由器内存(小的可怜)。磁盘缓存大小指的是下载的数据缓存多少时再一次性写入存储设备,可以减少硬盘读写次数,一定程度延长硬盘寿命。默认是0,不要改得太大,否则内存也不够用。

Aria2 基本设置

然后切换到RPC设定选项卡,最下面会随机生成一个 token,这是一会远程控制时候需要的,如果觉得太复杂可以自己改。端口号默认是6800也可以改(注意别冲突了),记住一会需要用。

Aria2 RPC 设置

Aria2 控制台配置

在上面可以看到推荐有3个控制台可供选择。建议使用 yaaw)或 webui(全)。

Aria2 控制台

点击链接进入 yaaw 控制台,首次使用要点击右上方的扳手按钮进行配置。主要需要配置的是 JSON-RPC Path,也就是告诉控制台如连接你的 Aria2 服务器。

在这里填入的你路由器地址 + Aria2 服务端口号 + /jsonrpc. 例如我路由器IP是192.168.50.1,Aria2 端口号是6800,则应该填入 http://192.168.50.1:6800/jsonrpc. 如果设置了 token,则在协议后面加上 token:xxx@,例如我 token 是 123123123,则应该填入 http://token:123123123@192.168.50.1:6800/jsonrpc.

保存后没有任何错误提示则是成功连接,可以点击添加来添加下载任务了。

yaaw 配置

webui 控制台类似,不过是各个参数分开设置了。依然是刚才的例子,在 webui 配置如下:

webui 配置

到此离线下载就配置完成了,把挂机任务交给路由器吧 (๑•ᴗ•๑)

上面的三个控制台其实是公网链接,也就是说即使不在家里局域网也可以访问并添加任务。但是要注意,控制台仅仅是提供一个界面,真正的下载任务还是要提交的路由器执行的,所以如果路由器不支持远程访问,即便能够访问控制台也无法添加下载。

那怎么实现远程访问腻?往下翻↓

接入百度云等网盘

为了方便,接入第三方下载建议使用插件。你可以自行搜索对应的浏览器插件配置使用。但这里更建议使用油猴脚本。

油猴(tampermonkey) 是跨平台浏览器脚本管理器,以浏览器插件形式存在,本身又提供了一个框架可以部署诸多脚本。支持 Chrome、Microsoft、Opera Next、Firefox诸多主流浏览器。(包括Chrome内核的QQ浏览器、360浏览器等)你可以在各自浏览器的插件中心搜索安装,或从官网下载安装。

安装了油猴之后,可以安装Ci-Aria2百度云增强版,当然,你也可以选择其他喜欢的插件。

随便打开一个百度云的分享,比如这个,首次使用记得配置插件,和配置控制台一样,填入相关参数即可。然后点击CiAria2-下载,点击发送,就可以提交给路由器下载啦。

115等其他网盘同理,类似配置。 推荐一个115的脚本:115网盘Aria2助手,配合 fake 115 实现浏览器账号登陆。

远程管理

远程管理不仅仅是从外面登陆路由器的管理后台,而是提供了一个外网访问内网的通道,作为一个底层架构,使得离线下载、文件共享等诸多功能打破局域网的限制,能够在世界各地使用,成为一个简易的私有云。

实现远程管理的前提是家里拥有公网IP. (其实也不是没有别的办法,「内网穿透」就是专门应对这种情况的解决方案,比如花生壳内网穿透,但免费的穿透服务往往速度慢稳定性差,不建议折腾了。具体原理与配置不在本文讨论范围内)

公网IP
每一个接入网络的设备都有IP地址,列如我的路由器IP是192.168.50.1,通过这个地址就可以访问。但是这个IP是内网IP,也就是说只有在我接入家里路由器局域网后才可以访问,如果我在公司,那么就无法访问了。
公网IP是一个全球可路由的地址。说人话就是拥有公网IP的设备可以从全球任何一个接入互联网的地方访问到。无论是家里、公司、还是移动流量。
不过很可惜,由于IP资源枯竭(IPv4),越来越多的运营商分配的是经过NAT转换的内网地址。说人话就是家里的IP不是公网的,无法实现从任意一个地方可访问。也就无法实现远程管理。

如何判断是否是公网IP
一个简单的方法是比对路由器WAN口IP与实际出口IP是否相同。在这里可以查看实际出口IP。在路由器网络地图页面可以看到WAN口IP. 若两个相同则是公网,否则不是。

PS:对于电信用户,若WAN口IP是100开头则一般不是公网的。

那么如何获得公网IP呢?

不同区域的不同运营商的不同套餐,获取公网IP的难度是不一样的。一般来说,电信联通这种一级运营商容易些,移动长城等二级运营商困难些,三级运营商基本上没希望了。同一运营商标准宽带套餐容易些,免费赠送/提速的宽带困难些。

我是电信标准套餐,直接致电10000客服要求换公网IP就轻松拿到了。

如果不给换的这里给个技巧:不要说换公网,而是说家里买了个网络摄像头或NAS,但是在外面用不了,商城客服说是运营商的问题,问能不能解决下。如果客服装傻就再点播一下:听说要什么公网IP之类的不知道是怎么回事。

如果还不行那就放弃吧,或者有精力也可以去工信部在线申诉。

配置DDNS

有了公网IP我们就需要DDNS服务来动态解析

虽然我们有了公网IP,但是IP不是固定的,每次拨号都可能变化,甚至运营商会强制变化。而作为服务器,是需要有固定的IP的,于是有了DDNS动态域名解析服务。域名解析就是把域名和IP对应起来,动态解析就是把域名动态地和IP对应起来,IP变化时解析也会变,从而实现无论IP怎么变,都可以使用固定的域名访问。

在国内推荐使用花生壳的免费DDNS服务。先去注册个账号,然后进入后台管理。在域名—壳域名添加域名

选中喜欢的免费域名,输入喜欢的前缀查找。然后按照流程注册即可。

回到路由器配置界面,对于梅林固件,在外部网络—DDNS选项卡下面可以配置DDNS服务。服务器选择花生壳,按图填写设置即可。梅林固件可以自动获取域名,有的固件需要手动填写,就填写刚才注册的那个即可。

启用远程管理

系统管理—系统设置里开启「从互联网设置」,端口默认8443. 注意:运营商把80/443/8080等常见网页端口都给封了,要避开这些。

不出意外,现在在浏览器输入刚才注册的域名+端口号就可以访问路由器后台了。例如我注册域名是test.iok.la,端是8443,那么访问的网址就是https://test.iok.la:8443 注意,必须是https。 刚才在路由器设置的时候已经有提示了。

但是!出现了一个安全警告:

这是因为路由器强制外网管理使用https,https需要证书,当前使用的是路由器自己签发的证书,仅仅能够加密流量但本身不受信任,于是出现了警告。梅林固件本身提供了一个方案,就是通过 Let's Encrypt 来获取一个普遍受信任的证书。但是使用这个服务需要开放80端口,这个这国内很难做到。

当然也有很多曲线救国的策略,例如:把自签发证书添加信任、自己去申请一个证书等等。但是这些要么操作复杂或者需要顶级域名、云空间、服务器等额外付费的东西,不适合新手。如果你是技术宅,相信不看教程也知道怎么搞了。所以最后给出的方案就是:忽略警告(别打我( ̄_, ̄ ))

远程下载

还记得上一节讲的离线下载可以远程化嘛。现在配置好DDNS后就可以实现啦。很简单,只要把控制台的 Aria2 地址改成我们注册的域名即可。其他网盘插件的地址记得都要修改哦。

例如原先配置是 http://token:123123123@192.168.50.1:6800/jsonrpc,现在把它改成 http://token:123123123@test.iok.la:6800/jsonrpc 就OK啦~ 现在我们可以在任何一个地方访问控制台并添加下载任务。建议把控制台放浏览器书签栏,一键直达嘿嘿。

文件共享

终于到最后一个啦。文件共享是一个广义的概念,可以用诸多协议实现。

SMB 网络共享

此方式的特点是无需输入,类似媒体服务器,可以自主扫描发现,但仅支持局域网内使用。

对于梅林固件,在 USB相关应用—服务器中心—网络共享 可以轻松启用配置共享。需要注意的是,默认版本是v1+v2,这在 WIN10 上会有兼容性问题,所以改成了v1. 因为凡是能接入局域网的用户默认都过了认证,因此这里允许访客登入来简化使用。

对于 WIN10 系统,打开网络,在计算机分组就可以看到扫描到我们的共享了。点击去可以进行文件管理,与媒体服务器不同,网络共享里面文件是安装实际目录显示的。

WIN10

同样,在 MAC、Android、IOS 等系统借助支持网络共享协议的应用也可以管理文件。例如「ES 文件浏览器」 中,在网络—局域网下面就可以看到路由器文件啦。

ES 文件浏览器

FTP

FTP 是文件传输协议,它需要建立连接并登录使用,不能够自主发现,但是可以支持公网访问。

梅林固件也内置了FTP服务器功能,在 USB相关应用—服务器中心—以FTP共享硬盘 可以轻松配置FTP. 如果开启了公网登录,务必禁止匿名登录并确保路由器密码足够复杂,否则万一被别人进去就不好玩了。

也可以添加更多的用户,每个用户分配不同的权限来实现更高级、安全的管理。R指读取,W是写入,No是禁止。

FTP 配置

对于 Windows 系统,可以直接在我的电脑里输入FTP地址来访问,例如ftp://192.168.50.1,如果设置好了DDNS,那么也可以使用域名访问,这样即使在外面也可以连接了。

当然,也可以选择其他FTP客户端来获得更好的使用体验。其他系统也分别有适配的FTP客户端软件可供选择。

AiCloud

AiCloud 是华硕(梅林)自有的一个文件共享功能。他的特点是基于HTTP,无需任何客户端,任何设备只要有浏览器就可以访问并管理文件,也支持在线播放。在AiCloud2.0中开启 USB云盘 就可以了。

上面列出了路由器地址和服务的端口号,在浏览器打开并登录就可以使用了。个人觉得这个虽然方便,但体验不是很好,尤其是视频在线播放,做的比较粗糙,甚至不能全屏 =、= 适合临时下载或上传个小文件。

END

到此,我们已经实现了远程下载、远程管理、文件共享,好好搭配使用这些服务,基本可以零成本搭建私有云和家庭媒体中心。

最后再说一下安全问题。一旦配置了DDNS,就相当于任何人都可以从公网访问到路由器,此时用户名和密码显得尤为重要。作为一个简易系统,并不具备腾讯百度那种风控机制,对于密码爆破等攻击基本上束手无策。所以还是不要在里面放什么敏感文件,以免又搞出个XX门就不好了。