Guangzhou

R7500v2 刷 DD-WRT 和安装 aria2 简易教程

因为以前一直在用的 Asus RT-AC66U 在搬房子后 5G 的信号一直不好,因为购入的是台湾版,TX power 固定在一个比较低的值,原本可通过刷 Asuswrt-Merlin 固件修改地区为美国,让路由器使用美国的标准 (美国标准的 TX power 值约为台湾标准的两倍) ,从而提高信号强度,但在我的 AC66U 一直是修改失败。在多次尝试后,我决定放弃并购入 NETGEAR R7500v2 以解决信号不足的问题。

R7500v2 是一款神奇的产品,它的硬件性能和 R7800 差不多,但价格便宜不少。R7500v2 的主要缺点在于固件──官方固件更新较慢,功能堪用,易用性和稳定性则极差,而由于它的 CPU 是高通的,加之它的铺货量不多,可用的第三方固件不多,相关教程亦少。

我购入 R7500v2 的主要原因是价格和信号强度,市面流通的基本是美国版,而在 $100 多一点的价格范围内,难有更好的选择。经过 3 个月的使用,它很好地证明了自身的价值──它的信号完美地覆盖了 100 平的房子。然而它附带的 NETGEAR Downloader 体验糟糕到让我不得不考虑刷第三方固件以使用 aria2

在逛 MyOpenRouter 时发现 DD-WRT Kong Mod 已经支持 R7500v2,并且更新过几次 (写下本文时最新的是 2017-05-12 版本) ,那就让我们动手吧!

DD-WRT 固件

MyOpenRouter 有一个专门的分类发布和 R7500/R7500v2 有关的 DD-WRT 固件,可以根据需要下载适合版本的固件,基本上是越新越好。

  1. http://www.desipro.de/ddwrt/K3-AC-IPQ806X 下载 R7500v2-factory-to-ddwrt.imgddwrt-netgear-R7500v2.bin 两个文件。
  2. 进入路由器的管理界面,在管理标签里把选择升级固件,先选择 R7500v2-factory-to-ddwrt.img,确认后会进入更新固件的操作,如果顺利,路由器设置会被重置,Wi-Fi 里出现一个无密码的 dd-wrt 项,连接后进入路由器管理界面,此时管理界面应为 DD-WRT 的管理界面。
  3. 在管理界面的 Administration 下的 Firmware Upgrade 页面选择 ddwrt-netgear-R7500v2.bin 并确认。
  4. 路由器完成重启后就可以进行正常的设置。

存储设备

我的 R7500v2 刷完 DD-WRT 后,内部存储空间显示是满的,只能将 aria2 安装到外部 USB 存储设备。

由于 DD-WRT 只支持 ext2/3/4 的格式,所以需要将存储设备格式化为对应格式。请注意备份数据。

本文仅以 macOS 为例。首先确保安装了 Homebrew,打开终端,依次执行以下命令:

# 让 macOS 可以处理 ext2/3/4 格式
brew instsll e2fsprogs

# 列出当前已挂载的存储设备,请根据列出的信息确认对应的名字,一般是 /dev/xxx 格式,在这里以 /dev/disk2 为例
diskutil list

# 如果目标设备是 macOS 可识别并挂载的,需要先 unmount
diskutil unmountDisk /dev/disk2

# 在这里是把存储设备格式化 ext3 格式,输入命令回车后再输入 macOS 登录密码即可
sudo $(brew --prefix e2fsprogs)/sbin/mkfs.ext3 /dev/disk2

存储设备格式化完成后,接入路由器,依照下图所示对路由器进行配置,完成后重启路由器。

Image Alt

如果在该页面见到类似 /dev/sdb mounted to /opt 的字样即为成功。

aria2

打开终端,输入 telnet 192.168.1.1 连接到路由器,用户名是 root,密码则是路由器密码。

登录成功后,先安装 Entware

wget -O - http://pkg.entware.net/binaries/armv7/installer/entware_install.sh | sh

然后安装 aria2:

opkg update
opkg install aria2

aria2 安装完成后需要创建配置,在这里以 /opt 为例。

cd /opt
mkdir -p aria2/downloads
touch aria2/aria2.session

另外可能需要 dht.dat 文件,下载该文件后,将其移动到路由器的共享文件夹内,本文以 /opt/file_server 为例,然后在路由器的终端执行以下命令:

mv /opt/file_server /opt/aria2/dht.dat

不在 DD-WRT 内下载 dht.dat 是因为 wget 无法下载 https 文件,而 aria2 需要配置证书。

创建 aria2.conf 配置文件:

vi /opt/aria2/aria2.conf

复制粘贴以下内容:

# Aria2 configuration

# RPC Setting
enable-rpc=true
rpc-listen-all=true
rpc-allow-origin-all=true
rpc-listen-port=6800
rpc-secret=aria2_secret

# General Setting
dir=/opt/file_server/
input-file=/opt/aria2/aria2.session
save-session=/opt/aria2/aria2.session
save-session-interval=60
dht-file-path=/opt/aria2/dht.dat
log=/opt/aria2/aria2.log
log-level=warn
disk-cache=8M
file-allocation=prealloc

# Connection Setting
continue=true
max-concurrent-downloads=3
min-split-size=10M
split=5
max-overall-upload-limit=200K

lowest-speed-limit=1K
auto-save-interval=120
check-certificate=false

# BT/PT Setting
bt-require-crypto=true
follow-torrent=true
bt-save-metadata=true
bt-seed-unverified=true

seed-ratio=1
seed-time=5

disable-ipv6=true

为了更方便使用,创建一个启动脚本:

touch /opt/aria2/run.sh
chmod 755 /opt/aria2/run.sh
vi /opt/aria2/run.sh

复制粘贴以下内容:

#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin:/mmc/sbin:/mmc/bin:/mmc/usr/sbin:/mmc/usr/bin:/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin:$PATH

restart(){
  echo "starting aria2 ..."

  killall aria2c
  sleep 1

  iptables -D INPUT -p tcp --dport 48028 -j ACCEPT
  iptables -I INPUT -p tcp --dport 48028 -j ACCEPT
  iptables -D INPUT -p udp --dport 48028 -j ACCEPT
  iptables -I INPUT -p udp --dport 48028 -j ACCEPT
  iptables -D INPUT -p tcp --dport 6800 -j ACCEPT
  iptables -I INPUT -p tcp --dport 6800 -j ACCEPT

  aria2c --conf-path=/opt/aria2/aria2.conf -c -D

  echo "aria2 started"
}

if [ ! -d "/opt/aria2/" ]; then
  echo "/opt/aria2/ not found"
  exit 1
fi

for var in "$@"
do
  if [ "$var" == "--restart" ]; then
    restart
    exit
  fi
done

if [ -n "$(ps | grep "\s\{2,\}aria2c")" ]; then
  echo "aria2 already running"
else
  restart
  exit
fi

启动 aria2:

/opt/aria2/run.sh

执行 ps | grep aria2,如果列出了两个条目,则表示 aria2 启动成功。

至此,aria2 已经配置完成,但为了保证路由器重启后 aria2 能自动启动,需要使用 cron 来完成这个工作,按图示配置一下即可:

Image Alt

OK,这样一个简易下载服务器就搞定了!

另外,