对于程序员们来说,一台多功能的路由器是提升生产力的有力武器。
除了某些网站的加速之外,还可以在路由器上运行Frp/Ngrok、组建NAS、挂机BT下载/百度云下载等等。
这些功能,在普通的家用路由器上是无法实现的。要享受它们,就得使用 “软路由”了。
一般来说,“软路由”是特指将x86 PC或服务器通过特定软件实现路由功能。但本文的内容广泛一点。为了便于表达,我们暂且把所有可以运行自定义系统的路由器称为软路由吧。可以自行安装OpenWRT、DD-WRT的设备,我们都称为软路由。
本文来讨论一下软路由的系统、应用程序,还有常见的路由器硬件,尤其是近几年很火的“矿渣”路由器。
Part 1:基础知识软路由是什么路由器各位Freebufer应该非常熟悉了。提起这个,您的第一反应可能是TP-Link、腾达、水星等品牌的家用路由器。它们有一个特点:路由器的系统是由厂商基于Vxworks等系统,自行开发的嵌入式系统。一般来说,只能使用原厂的系统,而且功能不多。腾达的路由,要刷个水星的系统,是不可能的。
接下来回到 动作 页面,点击 更新软件包 按钮,即可更新软件包列表。稍作等待后,您就可以在过滤器中搜索并安装需要的软件包了。
SSH中管理软件通过Web界面管理软件,虽然简单,但是只能使用官方软件源的包。如果您要安装一些第三方软件,或者是自己编译的软件,就要用SSH手动安装了。
OpenWRT内置了OPKG软件管理器,和我们熟悉的apt、yum有点像,它也可以安装、卸载软件包。OPKG的软件安装包,是.ipk格式的。
这里我们以luci-app-commands_git-20.194.72626-2aaac38_all.ipk为例,演示通过SSH安装软件包。
首先需要使用SCP将安装包上传到路由器上。SSH的用户名和密码与Web界面相同,默认为root:password。在Linux上可以直接使用SCP命令,在Windows上可以使用WinSCP。
登录后将安装包上传到路由器上,接下来使用Putty或者其它SSH软件登录。通过以下命令安装:“opkg install 软件包路径”:
如图所示,就成功安装了一个软件包。
OPKG对比起常用的包管理器,比较“简洁”,对依赖的处理不是很好,如果出现缺少依赖文件,则可能需要您一个个的手动安装。如果出现包或者文件的冲突,则可能需要添加“-nodeps”参数强制安装。
Part5:常用软件介绍OpenWRT的软件包非常之多。本章介绍一些笔者常用的软件。
如果软件包的名字有luci的前缀,这说明它们是依赖在OpenWRT的Web界面下的。换句话说,就是有图形界面,比较方便使用。
luci-app-filetransfer用于在Web页面上传并安装ipk软件包,可以省去使用SSH的麻烦。同时提供了从路由器上下载文件的功能。
不过要是安装过程稍微复杂一点的话,还是得老老实实用SSH。
luci-app-ssr-plus某神奇软件,可以实现全内网无感知科学上网。它不仅支持原生酸酸乳,还可以支持v2和trojan等新技术。可以配置多种白名单、黑名单,自动更新网站列表。比常见的客户端高到不知道哪里去了,一个软件满足你的所有需求!
luci-app-aria2著名的下载工具,安装了它之后就可以在OpenWRT上挂着下载任务了,而不需要把电脑开机挂着下载。不过当然得有U盘或者硬盘,才能使用它。
luci-app-frpc内网穿透工具,可以转发内网的远程桌面、FTP、Web服务等到外网。现在很多家用宽带已经没有公网IP了,在公网的服务器上搭建frp,然后在内网通过frpc进行外网穿透是很好的解决方法。OpenWRT还支持Ngrok,如果有公网IP也可以使用DDNS。笔者使用frp转发远程桌面,很香。
luci-app-unblockmusic网易云音乐辅助工具,可以用QQ音乐等的链接替换无版权歌曲,实现无视版权限制。
luci-app-sambasamba共享工具,可以共享路由器上的目录。配合U盘可以实现共享文件。比如放点电影电视剧,手机上用es文件浏览器之类的工具可以直接在线播放。
luci-app-vsftpdftp服务器,同上,也是文件共享工具。
luci-app-vlmcsdKMS服务器,用于激活Windows和Office。
Web服务器套件OpenWRT上可以安装nginx、php、mysql等组件,但是对路由器的性能要求会比较高。如果使用的是比较高级的设备,可以在上面配置这三个软件包,并部署Web服务。
例如部署KodExplorer,就可以构建一个私人云平台了。在线管理文件、处理简单的工作都很方便。
附加章节:OpenWRT的编译在文章的最后,我们增加一章,简述一下OpenWRT的编译。
一般来说,用编译好的固件是最方便的。不过,当遇到一些比较小众的硬件平台,或者需要自己添加一些应用程序的时候,就只能自己编译了。而且自己编译的固件,可以自己选择需要的软件包,只添加想要的功能,节约空间和性能。同时也可以保证软件包最新。
手动编译固件是高级玩家的必备技能,而且OpenWRT的编译机制已经相当成熟了,编译并不复杂。一般来说,只要网络没有问题,都能一次成功。本章我们来简述一下编译OpenWRT的流程。
构建编译环境编译OpenWrt需要在Linux环境中进行,物理主机或虚拟机中均可。不推荐使用Windows的Linux子系统进行编译。
笔者采用的是在VirtualBox上安装Ubuntu操作系统。
首先我们去Ubuntu的官网下载桌面版的Ubuntu。笔者使用的版本是18.04,一般而言系统版本不会影响编译。
地址:https://ubuntu.com/download/desktop
同时我们还需要VirtualBox虚拟机,可以在此处下载:
安装完VirtualBox后,配置一个新的虚拟机。请按照您机器的配置调整虚拟机的CPU、内存大小。
请注意,编译OpenWrt所需的硬盘空间较大,考虑到扩容虚拟机硬盘镜像较为复杂,推荐在创建虚拟机时就配置大于100G的硬盘空间。
安装Ubuntu的过程并不复杂,并且网上有大量的详细教程,这里就不再赘述。
Ubuntu完成后修改软件源为国内的服务器以加快软件包的下载速度。
在应用菜单中运行“Software & Updates”,修改其中的“Download From”到CN的服务器。笔者这里选择了阿里云的镜像服务器。
接下来我们打开终端,使用 “sudo apt-get update” 命令更新软件列表。sudo的密码为Ubuntu安装时填写的密码。
编译过程所需的各项软件,可以通过以下命令一键安装: