Netgear4300折腾记
在同事的推荐下,入了 WNDR4300 路由器。天猫 335 买的,好像比某东做活动的时候还贵不少。anyway,等不到那个时候啦。配合上次买的树莓派,可以开始折腾啦。
首先,把目标定下来,我理想中的样子应该是:
- 能够远程下载。不管是在外面还是在家里,直接在 web 上操作一下即可
- 小型 NAS。可以多个设备访问移动硬盘中的资源,包括在线播放远程下载的电影等
- 外部直接能 SSH 到我的树莓派上,例如
ssh pi.xxxx.com
- 路由器应该直接翻墙,这样家里所有的设备都可以透明访问被墙网站
路由器刷 OpenWRT
首先,咱们要把路由器刷成openwrt系统,这样才能让一切 成为可能。去 openwrt 官方网站下载针对 4300 的 rom:openwrt-ar71xx-nand-wndr4300-ubi-factory.img 。
刷机方法:
有线连上路由器的一个 LAN 口,并把电脑 IP 设置为 192.168.1.2,掩码设成 255.255.255.0
在 Windows 控制面板 -> 程序 -> 打开或关闭 Windows 功能 里面勾选 TFTP 客户端
关闭路由器。用小针按住路由器后面的 reset,然后打开路由器电源。刚开始会是电源灯在黄色闪烁 ,然后变成绿色闪烁。此时可以松开 reset
打开命令行,输入如下命令,如果出现传输成功的字样,说明刷机开始
tftp -i 192.168.1.1 put openwrt-ar71xx-nand-wndr4300-ubi-factory.img
待确认路由器重启成功后(比如可以登录http://192.168.1.1),直接关闭路由器电源等待 5 分钟然后再打开电源,否则可能出现 5G WiFi 不可用的问题
配置 OpenWRT
路由器刷完之后,还不是很好用,比如默认无线是关闭的,么有中文界面等等。下面就来一个一个配置
配置无线网络
进入 Network -> Wifi 会看到两个无线(2.4G 和 5G)都被禁用了,点击 Edit 配置一下即可
设置拨号上网
进入 Network -> Interfaces -> Wan -> Edit 将 Protocol 改为 PPPoE, 然后设置用户名密码即可
安装 Luci 中文包
这一步我们需要 SSH 到路由器上进行,使用 putty ssh 上去即可。首先,更新软件源:
opkg update
注意,由于众所周知的网络原因,有时候根本更新不了。此时可以通过代理来更新。在/etc/opkg.conf 中加入如下代理配置(根据你的代理来设置)
option http_proxy http://192.168.1.100:1080
然后安装中文包
opkg install luci-i18n-chinese
安装完成之后,进入 luci 界面。然后到 System -> System -> Language and Style,将语言改成中文。
至此,路由器基本的设置已经完成。如果要求不高,设置到这里就行了。但是既然刷了 OpenWRT,有几个会满足只到这里呢?
OpenWRT 插件
Shadowsocks 代理
下载Shadowsocks 安装包(选择 ar71xx 系列) 和 Luci app shadowsocks用于界面管理
使用 WinSCP 将文件传到路由器(注意选择 SCP 协议,否则会报错)
使用如下命令安装 Shadowsocks
opkg install shadowsocks-libev-spec-{版本号}-{架构}.ipk
opkg install luci-app-shadowsocks-spec-{版本号}.ipk
- 安装完成后到 Luci 界面的 服务 菜单里面就会看到 Shdowsocks 选项了。界面上稍微配置配置就能 FQ 了,爽歪歪:)
挂载移动硬盘
- 安装 USB 驱动
opkg update
opkg install kmod-usb-storage #安装usb存储设备驱动
opkg install kmod-usb-storage-extras
opkg install usbutils #安装了这个后可以用 lsusb
opkg install ntfs-3g #挂载NTFS
opkg install block-mount #安装之后luci的系统->挂载点下可以直接查看挂载点信息
使用如下命令挂载硬盘
lsusb #查看usb设备
mkdir /mnt/seagate
#加载移动硬盘,且使用big_writes等参数提高性能
ntfs-3g /dev/sda1 /mnt/seagate -o noatime,big_writes,async
可以把上面最后一句加入到/etc/rc.local 中实现开机自动挂载
文件共享 Samba
opkg install luci-app-samba
安装完成后,重启路由器。此时服务菜单下面会多一个 网络共享, 简单配置一下即可,没什么好讲的了。
BT 下载 Aria2
首先,安装 aria2。注意,不要从自带软件源里面安装 aria2,自带的是 1.18.7 版本,这个版本默认不支持 BT 和磁力链接。所以推荐下载 1.18.5 版本的手动安装aria2
opkg install aria2_1.18.5-1_ar71xx.ipk
opkg install yaaw_all.ipk
opkg install luci-app-aria2_all.ipk
安装完成后,重启路由器。此时服务菜单下面会多一个 Aria2 配置, 简单配置一下即可,也没什么好讲的。 配置完成后,打开 http://192.168.1.1/yaaw 就可以访问了
动态域名解析
我们这里使用 DNSPod 提供的动态域名解析方案。首先,你得有一个 DNSPod 的域名,然后你得通过如下两个请求获得一些关于这个域名的基本信息:
获取域名列表得到 domain_id
curl -X POST https://dnsapi.cn/Domain.List -d "login_email=<your login email>&login_password=xxxx&format=json"
获取域名的记录列表得到 record_id:
curl -X POST https://dnsapi.cn/Record.List -d "login_email=heddom&login_password=xxx&format=json&domain_id=11078351"
然后再将获得的 domain_id 和 record_id 放在下面的语句中请求
#!/bin/bash
curl -X POST https://dnsapi.cn/Record.Ddns -d 'login_email=xxxxxxxxx&login_password=xxxxxxx&format=json&domain_id=xxxx&record_id=xxxxxx&record_line=默认&sub_domain=your_subdomain'
最后把上面这段加入到 Crontab 中,让他定时运行即可。
有了固定了域名,下面就可以做些有意思的事情了。
暴露树莓派的 SSH 端口
点击网络->防火墙->端口转发,新建一个 22 到 22 的端口转发即可
暴露离线下载到外网
在树莓派的 nginx 做如下配置,这样在访问 subdomain.domain.com 的时候就直接是下载界面了。
server {
server_name subdomain.domain.com;
location / {
proxy_pass http://192.168.1.1/yaaw/;
}
}