好久不写点东西了。。。嗯。。。非常久

最近从淘宝上折腾来了一个DD WRT的路由器[贝尔金 F7D3302zh畅享版]…带个USB2.0口…

刚买的时候只给了5V电源,驱动不起移动硬盘,后来卖家下重新发了一个12V电源,总算移动硬盘转起来了

本人DD WRT版本为 DD-WRT v24-sp2 (06/14/11) mega

硬盘分区

….

大多数文章都是只提到把硬盘完全格式化为ext格式分区。但这么做会使移动硬盘失去其“移动”的意义

我的做法是,500G硬盘,分三个区

第一个分区分128M,格式化为ext2,这个分区主要装optware和软件

第二个分区为路由可访问的数据分区,按个人需要分,格式化为ext3,注意分块大小一定要为4096[Paragon Partition Manager11默认就好]

剩余分区分为NTFS,注意NTFS不可被路由器挂载,此分区将会在可移动介质接入Windows操作系统的时候被显示

硬盘挂载

如何打开USB功能我不多描述,自行谷歌

网上很多文章都说关闭自动挂载然后添加一个开机时运行的脚本命令,但如果移动硬盘在开机时未接入那么接入时不就还得重启一次路由。【这里我没测试过,不过如果移动硬盘没插入那么mount命令应该是无效的】

而且我这里不知道为什么如果不打开自动挂载,就会不管用什么命令什么挂载路径都挂载不了,所以自动挂载还得打开。。。

自动挂载分区设为/jffs,挂载时运行的脚本暂时置为空

插入USB可移动介质到路由器USB口

使用FileZilla或者FlashFXP或者WinSCP等支持SFTP的客户端登录路由器,账号为root,密码为管理面板密码

进入/jffs目录

将以下脚本保存为script.sh,并上传至/jffs

mount /dev/scsi/host0/bus0/target0/lun0/part1 /jffs
mount -o bind /jffs/opt /opt & mount /dev/discs/disc0/part2 /mmc

将script.sh赋予777权限[路由器基本不用担心什么安全问题]

理论上说默认挂载在/jffs下就不需要使用第一句重复挂载了的,但如果不使用就会出现Device not ready的情况,所以还是加上吧

第二句由两个语句合并而成,本来我不想连起来但是如果分成两个语句那么第一条语句总是无效。。。。。。

上面的所有语句的意思总结起来就是,挂载分区一[128M]到/jffs,将/jffs/opt挂载到/opt下[因此这里要求在jffs目录下创建一个opt目录],将分区二挂载到/mmc目录下

进入路由器服务-USB处,挂载时载入脚本填入:/jffs/script.sh,保存设置

使用telnet登陆路由器,注意win7默认不开启telnet客户端,需要手动进入windows功能处打开。或者用putty的SSH也行

键入命令reboot,重启路由器。重启后进入路由telnet使用df -h查看挂载情况,如果像这样说明挂载成功:

 

root@Privace:~# df -h

Filesystem                Size      Used Available Use% Mounted on

/dev/root                 6.1M      6.1M         0 100% /

/dev/mtdblock/4         131.2M     13.1M    111.4M  11% /jffs

/dev/discs/disc0/part1  131.2M     13.1M    111.4M  11% /jffs

/dev/discs/disc0/part1  131.2M     13.1M    111.4M  11% /opt

/dev/discs/disc0/part2   47.6G    294.3M     44.9G   1% /mmc

安装optware

首先输入以下命令下载安装optware的脚本:

wget http://www.3iii.dk/linux/optware/optware-install-ddwrt.sh -O - | tr -d '\r' > /tmp/optware-install.sh

然后输入

sh /tmp/optware-install.sh

进行安装

一切顺利的话会显示数个Successfully terminated.

最后执行一下ipkg-opt update即可

ipkg是DD自带的软件包管理器[类似yum和apt],但默认情况下能下载的包极少。安装optware以后使用ipkg-opt命令就可以下载很多软件了

安装和使用aGet

DD WRT自带wget。但是众所周知wget只支持单线程,这里有个简单的下载器使路由器支持多线程下载

使用ipkg-opt install aget命令自动安装aget

参数说明:

-p port number (端口号)
-l local file name (本地文件名)
-n suggested number of threads (建议的线程数)
-f force using suggested number of threads (使用强制的线程数)
-h this screen (此屏幕)
-v version info (版本信息)

示例[请将abc.cba改成下载地址]:aget -n 10 http://abc.cba

但是要注意关闭窗口就无法下载了,这里要用到一个软件:screen

默认也不带的,所以需要使用ipkg-opt install screen命令安装

root@Privace:/mmc# ipkg-opt install screen
Installing screen (4.0.3-2) to /opt/…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/screen_
4.0.3-2_mipsel.ipk
Installing termcap (1.3.1-2) to /opt/…
Downloading http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/termcap
_1.3.1-2_mipsel.ipk
Configuring screen
Configuring termcap
Successfully terminated.

然后试着运行一次screen命令看看是否有报错,如果报错

/opt/var/run/utmp: No such file or directory

执行touch /opt/var/run/utmp即可

如果报错:

Cannot find termcap entry for 'linux'.

这个我折腾半天,后来在国外某网站终于查到了相关解决方案

使用命令ipkg-opt install ncurses即可解决

没报错的话先按空格然后运行killall screen

之后就可以使用命令screen[空格]aget来下载东西了,这样下载东西即使关闭telnet也不会影响其下载

要恢复窗口的话使用screen -r命令即可

发现一个问题,aget似乎最多只能下载384M大小的东西,再多就溢出了,不知道官方有没有更好的多线程下载器。。各种求

安装transmission

这恐怕是大家最关注的玩意,毕竟脱机PT就靠它了

配置方法也是出奇的简单,官方的wiki有英文版

我简单概括下

运行命令:

ipkg-opt -verbose_wget install transmission

使不使用-verbose_wget无所谓,使用的话会看到下载进度

使用以下命令创建目录

mkdir -p /mmc/data/torrents

然后按顺序运行以下命令,目的是为了创建配置文件

/opt/bin/transmission-daemon -g /mmc/data/torrents/.config/transmission-daemon
killall transmission-daemon

用支持SFTP的客户端登陆路由器,编辑文件:

/mmc/data/torrents/.config/transmission-daemon/settings.json

具体编辑成什么样请搜索一下transmission的推荐配置文件

官方推荐配置如下:

{
"blocklist-enabled": 1, //屏蔽列表开关
"download-dir": "\/mmc\/data\/torrents",//默认下载目录
"download-limit": 100,//下载速度限制,单位KB
"download-limit-enabled": 1,//下载限速开关
"encryption": 2,//加密模式,2为强制加密,建议改为1
"max-peers-global": 35,//全局最大连接数,建议改大
"peer-port": 25000,//本地端口,如果更改也要相应在防火墙上打开端口
"pex-enabled": 1,//不知道是什么,置于打开吧
"port-forwarding-enabled": 1,//upnp功能开关
"rpc-authentication-required": 0,//远程控制面板验证开关
"rpc-password": "",//如打开了开关,这里需要输入密码
"rpc-port": 9091,//控制面板端口
"rpc-username": "",//如打开了开关,这里需要输入账号
"rpc-whitelist": "192.168.1.*",//可以连接到控制面板的IP范围
"upload-limit": 200,//上传速度限制
"upload-limit-enabled": 1//上传速度限制开关
}

按照自己需要的改或者直接从网上找配置好的文件用

然后运行命令/usr/sbin/iptables -I INPUT 1 -p tcp –dport 25000 -j logaccept 以允许WAN端口传入连接【以端口为25000为例】

重新运行transmission:/opt/bin/transmission-daemon -g /mnt/data/torrents/.config/transmission-daemon【注意现在transmission还没配置开机自动运行,有需要的话自行添加自启动脚本】

最后访问http://路由器IP:控制面板端口即可【或者用transmission remote也行】

samba文件共享

很值得庆幸的是我的路由固件已经自带了samba。不需要第三方再去下载了

不过即便这样也不能直接配置使用

进入服务-NAS。打开samba服务,默认先使用不勾选Use Custom Configuration

在UI页面配置好【UI还是很直观的,注意WORKGROUP设置】以后,保存设置和应用。

这样Samba理论上来说就可以用了、但你会发现不支持中文,文字全乱码了

所以还要做一个修改

使用SFTP进入/tmp,修改smb.conf

将unix charset = ISO*****什么的改为unix charset = utf8

然后复制整个配置文件内容

进入路由器NAS配置界面,勾选Use Custom Configuration

在下面显示的配置框中粘贴修改的配置,即可

另:PC端配置

因为系统共享的组件这样无聊的玩意可能早就被各种优化或者自己干掉了,要使用共享必须恢复这些设置

首先保证以下服务为启动类型为自动,并且已启动

Server
Workstation
Computer Browser
TCP/IP NetBIOS Helper

Win7需要将网络类型改成工作网络

保证网络连接中存在如下网络协议

协议

如果已经卸载了的,请点安装找到协议和客户端中的相应项目安装回去

Win7需要更改NTLM认证类型

Win+R键运行输入gpedit.msc

gpedit

确保计算机工作组【WORKGROUP】和Samba中设置的一致。重启计算机以后输入\\[路由IP]即可找到你设置的共享

透明越墙

使用透明越墙以后路由器下的所有电脑均可无视墙的存在

这里我不多说,他们的教程已经非常的详细了

可使用graceMode和WgetMode,难度系数不同。前者更好不过比较难操作,后者只需要添加一条命令即可,完全不需要折腾

graceMode配置方法

WgetMode配置方法

在这里我补充一下graceMode的配置

graceMode是通过把配置文件放在/jffs实现的,我们已经将移动硬盘挂载到了/jffs,如果直接将文件wget到那里,将会导致没有移动硬盘链接时脚本失败

因此请先将移动硬盘移除,执行一遍【以PPTP VPN为例】

mkdir /jffs/pptp
cd /jffs/pptp
wget http://autoddvpn.googlecode.com/svn/trunk/grace.d/vpnup.sh
wget http://autoddvpn.googlecode.com/svn/trunk/grace.d/vpndown.sh
wget http://autoddvpn.googlecode.com/svn/trunk/pptp/jffs/run.sh
chmod a+x *.sh

然后将移动硬盘挂载,再执行一遍

即可确保万无一失。

出错后的DEBUG方法[检查是否出错就看配置后重启路由器能否登陆到google]