x86 软路由&群晖使用指南

最近小米路由器 HD 发布,1299 元的价格让我意识到 —— 这是一个高价卖出旧款小米路由器的机会。当即挂上闲鱼以接近买入价格成交了。

顺带升级一下网络设备,总结自己的需求有:

  • 跑满外网千兆,上海电信民用千兆光纤普及也就这几年的事了。
  • 跑满内网千兆,局域网看片、看漫画。
  • 不需要多拨、科学上网、过滤广告、QOS等功能,稳定即可。

最终锁定 x86 主机,在做软路由的同时,可以充当 NAS 使用。无线信号部分购买斐讯 K3 作为 AP 使用,直接引用自己推文:

消费级的路由器就像能刷 CM 的 Android 手机,到手了总得刷机。而且常年放角落不碰的东西,路由器比手机更应该追求性价比。 家庭使用场景,买无线硬件规格高的做 AP 就行了,主路由还得是企业路由或者 x86 才稳定。

注意,黑群晖属于盗版,折腾完了发现确实很方便,已经准备购入正版群晖硬件。本文将侧重软路由结合群晖功能指南

介绍

x86、ESXi、软路由、群晖之间的关系

x86.png
  • x86 主机是一台小电脑,一般多网口,低功耗。
  • ESXi 是这台电脑的操作系统,不同于 Windows 或者 Mac,这个操作系统本身就是虚拟机平台。感兴趣你可以在 VMware Wiki 继续了解。
  • 在 ESXi 上我们可以创建虚拟机,比如软路由系统、群晖系统、Windows 等等。

当然也有别的 x86 方案,例如威联通。但基于 ESXi 的这套方案比较主流,能搜到大量教程和帮助,更适合新手。

硬件选购与配置

硬件选购部分,和我一样的小白用户请直接购买成品,DIY 可以参考 搭建一台真正的 All in One Home Server 篇一:硬件准备篇。 配置部分也不打算写,一是自身了解不足,仅仅是知其然。二是文章实在太多,送上两篇自己啃吧。

使用指南

如何更好的搭配软路由使用群晖,才是本文重点。

1. DDNS + 端口转发实现远程控制

一个最常见的需求,在外网想要访问家中的网络设备。最简单的办法是在你的路由器系统 (LEDE) 中,配置 DDNS 和端口转发。

先简单补充一下概念:

DDNS

由于我们重新拨号的时候,宽带运营商(比如电信)给我们的 IP 地址是容易变动的,需要通过一种手段来检测它的变动,才能长期访问正确的 IP 地址。DDNS 即 动态 DNS 能做到这一点,访问固定的某个域名,就能解析到你家中现在的 IP 地址。

推荐老牌的免费服务花生壳,几乎所有的路由器系统都支持,配置方法是在 LEDE 后台找到 DDNS 的选项,填入花生壳给你的域名、用户名、密码 即可。

端口转发

端口转发是将内网端口转发至公网,就可以访问 公网 IP : 端口 来进入内网。 详细举例:

  1. LEDE 的管理地址 192.168.1.1 ,即 192.168.1.1:80
  2. 内网 192.168.1.180 端口 转发至 公网 100 端口
  3. 假设公网 IP 为 111.222.333.44,那么访问 111.222.333.44:100 就等同于在内网访问 192.168.1.1:80
  4. 假设 DDNS 域名为 example.domain.com,直接访问 example.domain.com:100 即可。

常见端口转发用途

  1. 首先是管理后台的外网访问,同上面的例子。可以把路由器后台,群晖网页,EXSi 后台都配置端口转发。
  2. PC 的远程开机和远程控制,之前写过一篇 「远程唤醒与远程控制 Win10 PC」
  3. PT、Aria2 等下载工具的端口转发,实现远程下载,详情后文会提及。
  4. 在外网看家中群晖的电影或漫画,比较考验上传速度,详情后文会提及。

附上群晖官方文档「Synology 服务使用哪些网络端口?」

2. 在路由器挂 SS 实现科学上网

上一次我对路由器挂 SS 感兴趣时,还在用 TP-Link 的 mini 路由器,实际体验下来性能十分糟糕。换了软路由后用只做了一些简单测试:

gcp-hk-speedtest.png

在用 N3700 分配 2个核心给 LEDE 的情况下,墙外速度 200M 时 CPU 占用 70%,墙外跑满 220M 时 CPU 占用 85%。勉强达到了可用的程度,但显然换成千兆宽带后,我的软路由将无法胜任这项任务。我们可以考虑把 SS 挂在二级路由上,以备不时之需,比如 iPhone 恢复 iCloud 备份。

从规则定制的角度,路由器跑 SS 仍不如 Surge 的规则灵活,因此还是推荐神器 Surge 来实现 iOS/Mac 的科学上网,可以参考我之前写的 「2016 Surge 使用体验」。另外 Surge 在这里还可以实现内网访问的功能,详情后文会提及。

3. 普通下载、PT/BT 下载

DSM 的 Download Station 是群晖的主要下载工具,可以完成普通下载、PT/BT 下载任务。最新一次更新中写着修复了迅雷离线下载,迅雷使用了别的下载方法,没有去测试。

Download Station 的 BT 内核是 Transmission,实测可以跑满 200M 宽带。注意关闭启用 DHT 网络 ,并且配置 BT 端口的公网转发,不然会导致红种。

通过 iOS 客户端 DS get 可以在手机上查看下载进度和新增下载任务。

4. 百度云和迅雷离线下载

之前写过一篇 「Mac下使用Aria2在百度云不限速下载」,利用 Aria2 可以实现百度云和迅雷离线的下载,同样群晖也可以安装 Aria2。

安装 Aria2

操作过程直接参考 纯小白教程!群晖用Docker安装ARIA2,我补充几点教程中未提及,但是可能导致问题的地方:

  1. 在 Docker 中搜索,需要科学上网,提供两个简单的思路:
    1. 在软路由中直接开启 SS,群晖自然处于 fq 状态。
    2. 群晖支持 HTTP 代理,Surge for iOS/Mac 或者 GoagentX 都能通过局域网共享 HTTP 代理。
  2. 我们最终目的要实现远程使用 Aria2 下载,因此强烈建议开启 Aria2 的 token 验证: 用文本编辑器打开 aira2.conf ,在最下方加入一行 rpc-secret=password ,其中password 可以改成你想要的密码。
  3. 教程中没有提及,必须使用 root 用户,才能修改 download 文件夹 7777 权限。和一般 ssh 修改密码不同,群晖的 root 权限获得和密码修改操作比较诡异:
    1. 先在 DSM 控制面板中开启 admin 用户。
    2. 使用 admin 用户登录 ssh,输入sudo su - 提升到 root 权限。
    3. 输入synouser –setpw root password 修改 root 密码,其中password 可以改成你想要的密码。

Aria2 WebUI 配置

由于我们增加了 token 验证,配置上 Aria2 的服务器路径地址变成了 http://token:password@hostname:port/jsonrpc,在 Aria2 WebUI 的访问密码设置中也要填写 password

我们最终想要实现远程下载,hostname:port 可以在端口转发后变成 example.domain.com:port

百度云和迅雷离线配置

这里涉及两个 Chrome 插件,分别是 BaiduExporter迅雷离线助手

  • BaiduExporter 其实一直在默默更新,需要从 Github 下载源码,开启 Chrome 插件的开发者模式,将整个 Chrome 文件夹拖入插件页面即可。
  • BaiduExporter 可以同时配置本地 ( Mac ) Aria2 下载群晖 Aria2 下载,如图所示:
BaiduExporter.png

5. 局域网看电影、漫画

这个我使用 NAS 的核心需求,iPad 也放心的可以买乞丐版了。

SMB/AFP/NFS/WebDAV 的选择

DSM 的控制面板有这些文件共享方式: SMB ( CIFS )、AFP、NFS,但他们各自有各自的问题。

  • SMB (CIFS) 是微软开发的协议,各平台兼容性最好,但性能要求较高。更重要的是 iOS 上 SMB 的速度始终被限制在 5MB/s;
  • AFP 是苹果自己的协议,只支持 Mac 和 iOS;
  • NFS 性能最优,但 Windows 和 Mac 上都没有便捷的加载办法,iOS 更是束手无策。

后来发现 WebDAV 是性能和兼容性可以兼顾的好办法,iOS 上有 nPlayer、Comic Glass、Good Reader;Mac 在 Finder 中快捷键 Command+K 直接挂载;Windows 安装 NetDrive 即可。

启用 WebDAV 需要在 DSM 的套件中心安装 WebDAV Server。

附上一个 SMB/AFP/NFS/WebDav 的文件传输峰值速度对比,Mac 由于是 13 年款 Macbook Air,无线网卡性能可能有瓶颈。

SMB AFP WebDAV NFS
iOS 5 5 90 X
Mac 35 80 80 80
PC 115 X 115 115

最佳视频播放器 nPlayer Plus

最佳视频播放器,毫无疑问的 nPlayer Plus。我看到过一些最佳视频播放器的测评文章,下载了一堆免费播放器,评出一个最佳;截了很多图,然后谈交互,评出一个最佳;觉得一个播放器支持的格式多,就叫最佳。写出来搞笑吗?

nPlayer 拥有这些功能才称得上最佳:

  1. 对文件传输协议的全面支持,WebDAV/FTP/SFTP/SMB(CIFS)/UPnP(DLNA),传输速度非常好。
  2. 画中画、DTS 官方授权,这已经是一个播放器基本素质。
  3. 解码能力稳定,再高清也不卡不崩。
  4. 跨文件夹的字幕识别功能,看剧的时候字幕往往单独打包。
  5. 集成 The Movie Database。
nPlayer.jpg

Infuse Pro 曾独占高端播放器市场,后被 nPlayer 赶上,两者属于同一级别的产品。Infuse Pro 在我使用过程中出现过两次字幕识别乱码,两次播放中闪退,愤而卸载。而 nPlayer 一直非常稳定,留下它就足够了。

漫画软件 Comic Glass

漫画软件,推荐老牌的 Comic Glass。它支持 HTTP (包括 WebDAV)、FTP、SMB 协议,也可以自建 Media Server。默认只支持下载到本地后观看,开启浏览模式需要额外内购。 我没有搜到还有其他软件能支持这个功能,对于把漫画丢在 NAS 的人来说,Comic Glass 属于漫画必备软件。

6. Surge + SS 实现远程控制

前面我们提到,要从外网访问家里的软路由和群晖,需要借助 DDNS 和端口转发。但端口转发有一个缺点,容易把服务直接暴露在公网上,任何人知道了地址就可以访问,安全性较差。后来查到这篇文章「Surge Guide — 轻松访问家中的网络服务」,得知用 SS 就可以实现无缝访问家中网络。

其原理是,在家中的路由器上运行一个 SS 服务器,这个服务器不是为了给连上网络的人科学上网,而是为了让外网的人翻回家中的局域网,实现了更便捷的远程操控。

路由器 SS 配置

lede-ssr.png
  1. LEDE 路由系统默认支持这一功能,设定端口和密码后即可启动。
  2. 需要将 内网服务器端口 转发至公网,得到 SS 的服务器端口
  3. 已经设置好的 DDNS 域名就是 SS 的服务器域名

Surge 配置

按照 Surge Guide 教程的域名配置,我自己实验失败了,配置域名跳转到内网 IP 后解析成功,但始终无法访问。最后我使用了更简单粗暴,而且不需要可配置域名的办法。

    1. 假设你的 DDNS 域名是 example.domain.com,转发后的 SS 公网端口是 8388,密码为 password
    1. 配置 Surge 规则,加入 HomeProxy 这条代理。
HomeProxy = custom, example.domain.com, 8388, aes-256-cfb, password, xxx.module
    1. 当连上自家 Wi-Fi 时,说明你在内网,可以直连。
[Proxy Group]
Home = ssid, default=HomeProxy, HomeSSID=DIRECT, HomeSSID2=DIRECT

其中 HomeSSID 替换成自己的 Wi-Fi 名称。

    1. 加入规则
[Rule]
IP-CIDR,192.168.0.0/16,Home,force-remote-dns

其中 192.168.0.0/16 表示 192.168.0.0 - 192.168.255.255,要修改成你真实的内网 IP 地址。

    1. 删除规则 删除 [General]skip-proxy 后的 192.168.0.0/16,因为如果 skip 的话上面的规则就失效了。

其实这里 iOS 不用删除,但 Mac 必须删除。猜测是 iOS 上的 skip-proxy 本身是失效的。

无缝体验

到这里 SS 和 Surge 都配置成功了,打开 Surge 后无论身处何处,你都能愉快的访问家中的内网资源。

另外 Surge 本身支持多代理,我们通过规则让实现了:

  1. 访问墙内直连。
  2. 访问墙外连 HK 代理。
  3. 访问家中内网连路由器代理。
  4. 若使用家里的 Wi-Fi,访问局域网变成直连,避免降速。

安全和性能兼顾,更有无缝的体验。在 nPlayer 和 Comic Glass 等软件只需要保留内网的访问路径即可,访问速度取决于你家中网络的上传和所在网络的下载。实际使用中,通过 SS 能跑满 20M 的上传速度,在线看 1080P 完全没问题。

结语

在折腾 x86 的这几天,踩了很多网上教程没提及的坑,希望这篇文章能节约你的时间。如果发现错误,请务必告知,关于页面 可以找到我。