2013-10-13

buffalo LS-WXL NAS 部署笔记

从上大学开始到现在所积累的照片和资料现在一直是用一台希捷的3.5寸外置移动硬盘保存着。每次拿出来拷东西的时候,咔咔的读盘声总让人不免担心,万一这块硬盘哪天抽风坏了怎么办。这些数据中包含了无数过往的努力和回忆,一旦丢失,代价实在是难以估量。

组建一套家用的NAS是解决目前的窘境的最好选择。但是群晖之类的NAS不带硬盘动辄上千实在是有点贵,心怀一颗屌丝之心,始终不忍下手。用旧PC改装一个,家中实在是没有地方可以容纳。上个月无聊逛易讯时发现Buffalo LS-WXL NAS正在特价,399购入一台,貌似一个月过后到现在还是最低价,占到便宜的感觉十分开心 :)虽然便宜了点,做工和群晖的高富帅没法比,但是两个硬盘槽位,支持RAID 0/RAID 1,linux系统可以破解,支持Web Access,功能足矣。

光有腹中空空的NAS当然不行,还得往它肚子里塞上硬盘才能工作起来,对比各项参数和口碑,西数的NAS专用红盘是最好的选择,但是价格嘛。。。 最终决定下来,还是入了两块西数的2T绿盘,可靠性差了点,但是有RAID 1,两块互为备份,可靠性还是有保证的。易讯绿盘无货,京东现货入手。

考虑到家里特殊的网络拓扑结构,NAS附近有小米盒子,电视机,还有一个Raspberry PI需要接入网络,装修时墙上只留了一个网口,这么多设备需要一个交换机来互联并接入网络,还需添置一个交换机。家里有一个百兆的TP-Link交换机,但是今后如果想用小米盒子直接samba访问NAS放高清电影的话,百兆网络就难当大任了。交换机这个东西属于耐用品,一般都不容易坏,上淘宝上淘一个二手实用的即可。上上下下比较了一番,Netgear GS105是一个不错的选择,铁壳,千兆,成色不错的货挺多的,找了一个靠谱的商家,加配原装电源一个¥99搞定。两天后到手,成色果然不错,9成新有余,拿在手中沉甸甸的,淘宝掌柜诚不欺我也~

万事俱备,只欠部署。安装之前,来一张全家福先~

buffalo nas

组装过程非常easy,就不细表了,以后有空再画一下家里的网络拓扑图。

下面记录一下LS-WXL破解和设置的关键步骤。

一、获取root密码

我手上的这台LS-WXL固件版本是1.34,版本较低,带来的好处是 — 破解容易~

nas-center.com的geek们已经对LS-WXL的各个版本给出了破解方法:

http://buffalo.nas-central.org/wiki/Category:LS-WXL

对于1.4以前的版本,可以直接使用web server运行php脚本来修改/etc/pam.d/sshd

步骤很简单:

1、创建一个文件夹名为www
2、在LS-WXL的web控制界面中打开web server支持,指定根目录为www

访问http://IP_TO_YOUR_NAS:81/,如果显示如下,说明服务器启用成功

buffalo nas web server

3、通过samba访问LS-WXL,修改www/htdocs/下的index.php为如下内容

<?php
    $file = '../../../../etc/pam.d/sshd';
    $fh=fopen($file, 'w') or die("can't open file");

    $stringData = "account  required   pam_unix.so\n";
    fwrite($fh, $stringData);

    $stringData = "session  required   pam_unix.so\n";
    fwrite($fh, $stringData);

    $stringData = "auth required pam_permit.so\n";
    fwrite($fh, $stringData);

    fclose($fh);

    echo "update sccess";
?>

4、重新访问http://IP_TO_YOUR_NAS:81/

如果显示“update sccess”,说明破解成功,现在开始就可以不用密码以root用户登陆NAS了!

但是我们的这个修改在每次重新启动NAS之后都会失效,因此我们需要建立另外一条持久性的通路到服务器。

除了密码认证,ssh还可以使用公钥来进行身份认证。通过在root目录下配置公钥认证,即使重启自后sshd密码变更了,有公钥在,我们可以继续通过公钥认证来访问服务器~

在NAS上,通过如下命令生成密钥对:

farnsworth@MYS-HOME-NAS:~$ ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/farnsworth/.ssh/id_rsa):
Created directory '/home/farnsworth/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/farnsworth/.ssh/id_rsa.
Your public key has been saved in /home/farnsworth/.ssh/id_rsa.pub.
The key fingerprint is:
09:a6:ad:45:49:4d:9e:b4:ae:4e:b3:fd:d0:ee:db:8c
farnsworth@MYS-HOME-NAS:~$ cd .ssh/
farnsworth@MYS-HOME-NAS:~/.ssh$ ll
-rw-------    1 farnswor hdusers       887 Oct 13 22:49 id_rsa
-rw-r--r--    1 farnswor hdusers       233 Oct 13 22:49 id_rsa.pub
farnsworth@MYS-HOME-NAS:~/.ssh$ mv id_rsa.pub authorized_keys
farnsworth@MYS-HOME-NAS:~/.ssh$ ll
-rw-r--r--    1 farnswor hdusers       233 Oct 13 22:49 authorized_keys
-rw-------    1 farnswor hdusers       887 Oct 13 22:49 id_rsa

将id_rsa文件拷贝到samba共享文件夹目录,再设置putty或者SecureCRT的访问方式为public-key,即可实现公钥免认证登录。

二、安装ipkg

通过ssh登录后,第一件事就是安装ipkg。ipkg是一个轻量级的包管理协议,和debian的apt系统很相似,命令也很像。

执行如下命令下载并安装

root@MYS-HOME-NAS:~# wget http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/lspro-bootstrap_1.2-7_arm.xsh
sh ./lspro-bootstrap_1.2-7_arm.xsh
root@MYS-HOME-NAS:~# ipkg update
root@MYS-HOME-NAS:~# ipkg upgrade
root@MYS-HOME-NAS:~# ipkg install vim

如果整个过程没有报错,就说明ipkg安装成功了。

如果遇到重启之后,ipkg命令及通过ipkg安装的软件都找不到了,很有可能是/opt的挂载路径不正确导致的。

此时需要检查/etc/init.d/rc.optware中REAL_OPT_DIR变量的设置

如果当前硬盘做了RAID阵列,那这个变量的值应该是这个样子的:

    REAL_OPT_DIR=/mnt/array1/.optware

如果当硬盘没做RAID阵列,那这个变量的值应该是这个样子的:

    REAL_OPT_DIR=/mnt/disk1/.optware

这个变量设置正确了之后,无论如何重启,我们的软件都不会丢了~

三、安装配置transmission

作为一个NAS,bt下载的功能自然是必须的。LS-WXL居然自带了一个utorrent,但是无奈不好用,怎么配置都没速度。幸好还有transmission。

安装很简单,使用ipkg直接安装即可

root@MYS-HOME-NAS:~# ipkg install transmission

安装完毕后,su到我们之前创建的普通用户下,再执行一下如下命令,强制生成配置文件,等待大概10s之后,ctrl+c退出

root@MYS-HOME-NAS:~# su - farnsworth
farnsworth@MYS-HOME-NAS:~$ transmission-daemon -f

此时在当前用户的根目录下会生成transmission的默认配置文件:~/.config/transmission-daemon/settings.json

打开这个文件,修改一下相关字段就可以了,比如下载路径,ip访问白名单等(如果没什么安全顾虑的话,直接改成”rpc-whitelist”: “*.*.*.*”,就可以从任何地方访问了transmission的web界面了)。

修改完配置之后,再次启动transmission

farnsworth@MYS-HOME-NAS:~$ transmission-daemon &
farnsworth@MYS-HOME-NAS:~$ ps | grep transmission
 2907 farnsworth  41132 S   /opt/bin/transmission-daemon
 3249 farnsworth   3364 R   grep transmission

此时在浏览器中打开

http://IP_TO_YOUR_NAS:9091/transmission/web/

即可访问transmission客户端:

transmission

表问我种子是神马,你懂的。。。

ok,准备收工?稍等,还漏掉了一项,我们需要transmission在NAS启动的时候自己一起启动,这样就不必每次都登录ssh自己启动了。

vim /opt/etc/init.d/S60startup

添加以下内容:

#!/bin/sh

START_UP_USER='farnsworth'
START_UP_TIME=`date`
export HOME=/home/${START_UP_USER}

su ${START_UP_USER} -c "/opt/bin/transmission-daemon &"

echo "transmission-daemon start up @ $START_UP_TIME with return value <$?>" > /tmp/transmission.log

注意把其中farnsworth替换成自己的用户名。之所以要这么麻烦使用自己的用户名来登录,因为在启动脚本中启动的进程默认都是以root用户运行的,这种情况下,下载生成的文件读写权限也是root的,我们将无法自由的在windows端通过samba协议自由拷贝下载下来的文件。用自己的用户名来启动transmission-daemon进程,权限问题就解决了。

四、WebAccess配置

虽然我们的NAS价格很屌丝,但是功能很全面,内置的WebAccess功能,可以让我们远程通过web或者手机客户端访问家中的NAS上的数据(可以利用这个功能通过手机看NAS上存储的小电影哦 ^_*,是不是有种超值碉堡的感觉? )。

今天写到这里已经挺晚了,关于WebAccess的配置说明,稍后再奉上~ 未完待续哦~